Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
Redis提供五种数据类型:String、List,Hash,Set及Zset(sorted set)。
1、StringString即字符串类型
# 增加
append [keyName] [value] # 追加字符串,当前[keyName]不存在则新增,相当与set
mset [keyName] [value] [keyName ...] [value ...] # 批量增加
set [keyName]:[number] {[keyName1]:[value2],[keyName ...]:[value ...]} # 设置Json格式的字符串
getset [keyName] [value] # 先get再set
# 查询
strlen [keyName] # 查看当前字符串长度
mget [keyName] [value] [keyName] [value] # 批量查询
# 算术运算
incr [keyName] # 自增1
decr [keyName] # 自减1
incrby [keyName] [increment] # 增加 [increment]
decrby [keyName] [decrement] # 减少 [decrement]
# 截取字符串
getrange [keyName] [start] [end] # 截取字符串,0 -1可截取全部字符串,相当于get
setrange [keyName] [number] [value] # 替换指定位置number后的[value]
# 逻辑判断
setex [keyName] [value] # set with expire 若存在设置过期时间
setnx [keyName] [value] # set if not expire 若不存在设置过期时间,在分布式锁中常用
msetnx [keyName1] [value1] [keyName ...] [value ...] # 不存在则创建一个/多个,拥有原子性
2、List
List即列表,有下标index,值可重复
# list命令以l开头的 lpush [listName] [value] # 左侧压入(头) rpush [listName] [value] # 右侧压入(尾) lpop [listName] # 左侧弹出 rpop [listName] # 右侧弹出 rpoplpush [listName] [oldList] [newList] # 将一个列表中的值先右侧弹出,再加入到newList中 lset [listName] [index] [value] # 新增/更新指定[index]的值 # 往[oldValue]前|后插入[newValue],若有同名[value],则选取第一个[value]前|后插入 linsert [listName] BEFORE|AFTER [oldValue] [newValue] lindex [listName] [index] # 获取对应[index]的值 llen [listName] # 返回列表的长度 lrange [listName] [start] [end] # 查看列表中指定下标的值,取0 -1时查看所有 # 删除 lrem [listName] [count] [value] # 移除指定的值[count]代表个数 # 截取 ltrim [listName] [start] [end] # 只保留指定下标的值3、Hash
Hash则是将List的index替换成field
# hash的命令以h开头 # 添加 hset [keyName] [field] [value] # 添加/覆盖一个值 hsetnx [keyName] [field] [value] # 如果不存在则添加一个值 hmset [keyName] [field] [value1] [field ...] [value ...] # 同时添加/覆盖多个值 # 查询 hget [keyName] [field] # 获取一个值 hmget [keyName] [field1] [field ...] # 同时获取多个值 hgetall [keyName] # 获取所有的 field-value hkeys [keyName] # 获取所有的 field hvals [keyName] # 获取所有的 value hlen [keyName] # 获取hash的长度 # 删除 hdel [keyName] [field1] [keyName ...] # 删除指定的一个/多个值 # 逻辑判断 hexists [keyName] [field] # 判断是否存在指定字段的值 # 算术运算 hincrby [keyName] [field] [increment] # 增加 [increment] hdecrby [keyName] [field] [decrement] # 减少 [decrement]4、Set
Set即无序不重复集合
# set的命令以s开头 # 增加 sadd [setName] [value1] [value1] # 添加一个/多个值 # 删除 srem [setName] [value1] [value1] # 删除一个/多个值 spop [setName] [count] # 随机弹出[count]个元素 # 随机抽取 srandmember [setName] [count] # 随机抽取[count]个,不写[count]默认为1 # 移动 smove [oldSet] [newSet] [oldSet.value] # 将值移动到指定的集合 # 算数运算 sdiff set1 set2 [set ...] # 差集 set1 - set2 sinter set1 set2 [set ...] # 交集 共同好友 sunion set1 set2 [set ...] # 并集5、Zset
Zset即有序不重复集合,和List、Hash类似,List在value前有index,Hash有field,而Zset在set的基础上添加了score,可提供排序
# Zset命令以z开头 # 添加 zadd [keyName] [NX|XX] [CH] [INCR] [score1] [member1] [score ...] [member ...] # 查询 zrange [keyName] [start] [end] [withscores] # 获取指定的[member],加上withscores则显示[memeber]和[score] zcard [keyName] # 查询zset长度 zcount [keyName] [min] [max] # 查询指定区间[score]的条数 # 排序 # 升序,按照[score]的值进行排序,-inf负无穷、+inf正无穷 # 若带上withscores则输出为[memeber]和[score] zrangebyscore [keyName] [min] [max] [withscores] # 降序 zrevrangebyscore [keyName] [min] [max] [withscores] # 删除 zrem [keyName] [member1] [member ...] # 删除一个/多个[member]
若上述文章中有错误,还请指正错误,感谢您的阅读!



