官网命令大全网址:
http://www.redis.cn/commands.html
8大类型:
- String(字符类型)
- Hash(散列类型)
- List(列表类型)
- Set(集合类型)
- SortedSet(有序集合类型,简称zset)
- Bitmap(位图)
- HyperLogLog(统计)
- GEO(地理)
备注:
- 命令不区分大小写,而key是区分大小写的
- help @类型名词
String
# 最常用
set key value
get key
# 同时设置/获取多个键值(m就是more的意思)
MSET key value [key value ....]
MGET key [key ....]
数值增减
# 递增数字
INCR key
# 增加指定的整数
INCRBY key increment
# 递减数值
DECR key
# 减少指定的整数
DECRBY key decrement
# 获取字符串长度
STRLEN key
分布式锁
# key不存在时则创建,存在则不创建
setnx key value
#
set key value [Ex seconds][PX milliseconds][NX|XX]
应用场景
商品编号、订单号采用INCR命令生成:
类似:点赞数+1就使用incr,踩数-1就使用decr
是否喜欢的文章
hash
对应Java中的结构:Map<String,Map<Object,object>>
# 一次设置一个字段值
HSET key field value
# 一次获取一个字段值
HGET key field
# 一次设置多个字段值
HMSET key field value [field value ...]
# 一次获取多个字段值
HMGET key field [field ....]
# 获取所有字段值
hgetall key
# 获取某个key内的全部数量
hlen key
# 删除某个key的一个字段
hdel key field
应用场景
购物车早期,当前小中厂可用:
实现方案:以用户id作为hash结构中的key,新增商品时使用hset为用户key增加一个字段,字段值就是商品数量,同样如果再增加一件商品,就再添加一个field,而如果对添加的商品进行数量+1就使用hincrby增加相应的数量,需要全选商品时,就使用hgetall,购物车商品的数量显示就使用hlen。
list
其实就是一个双向链表:有序可重复
# 向列表左边添加元素
LPUSH key value [value ...]
# 向列表右边添加元素
RPUSH key value [value ....]
# 查看列表
LRANGE key start stop
# 获取列表中元素的个数
LLEN key
应用场景
微信文章订阅公众号:
set
无序不可重复
# 添加元素
SADD key member[member ...]
# 删除元素
SREM key member [member ...]
# 获取集合中的所有元素
SMEMBERS key
# 判断元素是否在集合中
SISMEMBER key member
# 获取集合中的元素个数
SCARD key
随机取一个元素
# 从集合中随机弹出一个元素,元素不删除
SRANDMEMBER key [数字]
# 从集合中随机弹出一个元素,出一个删一个
SPOP key[数字]
集合运算
# 集合的差集运算A-B:属于A但不属于B的元素构成的集合
SDIFF key [key ...]
# 集合的交集运算A∩B:属于A同时也属于B的共同拥有的元素构成的集合
SINTER key [key ...]
# 集合的并集运算AUB:属于A或者属于B的元素合并后的集合
SUNION key [key ...]
应用场景
微信抽奖小程序:
1 用户ID,立即参与按钮:sadd key 用户ID
2 显示已经有多少人参与了上图23208人参加:SCARD key
3 抽奖(从set中任意选取N个中奖人):
SRANDMEMBER key 2 随机抽奖2个人,元素不删除
SPOP key3 随机抽奖3个人,元素会删除
微信朋友圈点赞:
微博好友关注社交关系:
共同关注的人:
我关注的人也关注他(大家爱好相同):
QQ内推可能认识的人:
zset
向有序集合中加入一个元素和该元素的分数
# 添加元素
ZADD key score member [score member ...]
# 按照元素分数从小到大的顺序 返回索引从start到stop之间的所有元素
ZRANGE key start stop [WITHSCORES]
# 获取元素的分数
ZSCORE key member
# 删除元素
ZREM key member [member ...]
# 获取指定分数范围的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
# 增加某个元素的分数
ZINCRBY key increment member
# 获取集合中元素的数量
ZCARD key
# 获得指定分数范围内的元素个数
ZCOUNT key min max
# 按照排名范围删除元素
ZREMRANGEBYRANK key start stop
获取元素的排名
# 从小到大
ZRANK key member
# 从大到小
ZREVRANK key member
应用场景
根据商品销售对商品进行排序显示:
抖音热搜: