String应用场景
#单值缓存
set key value
get key
# 对象缓存
set object '{"name":"ws","age":"18"}'
get object
mset object:name ws object:age 18
mget object:name object:age
# 分布式锁
setnx key true //返回1代表成功,0代表失败
...执行业务逻辑
del key //执行完成释放锁
set key value ex seconds nx //防止程序意外终止导致死锁
# 计数器
incr key
get key
# Web集群session共享
redis存储sessionId及信息实现session共享
# 分布式全局序列号
incrby key increment
Hash应用场景
一般对象用string + json存储,对象中某些频繁变化的属性抽出来用hash存储,比如电商购物车就可以用hash实现
# 模型设计
用户ID为key
商品ID为field
数量为value
# 购物车常用操作
添加商品
hset userid productid 1
删除商品
hdel userid productid
增加数量
hincrby userid productid 1
减小数量
hincrby userid productid -1
获取单个商品数量
hget userid productid
获取购物车商品数量
hlen userid
List应用场景
list可以实现的数据结构
# list实现栈stack
lpush+lpop
#list实现队列queue
lpush+rpop
#list实现阻塞队列Blocking MQ
lpush+brpop
信息流
# 用户ID为userid 订阅的公众号信息编号为msgid
# 公众号发布信息
lpush msg:userid msgid
# 用户刷新获取信息数及id
llen msg:userid
lrange msg:userid start stop
Set应用场景
黑名单/白名单
set类型存储这些黑名单数据,
sismember命令可用于判断用户、ip、设备是否处于黑名单之中。
共同关注、感兴趣的人、点赞、签到
可以通过set集合运算实现
随机展示、抽奖
srandmember可以实现
Zset应用场景
排行榜
# 存入用户及对应分数
zadd ranking 10 user1
...
# 取分数最高的n个用户
zrevrange ranking 0 n withscores
来源:CSDN
作者:保持上靖心
链接:https://blog.csdn.net/qq_41541368/article/details/104085003