redis使用场景

给你一囗甜甜゛ 提交于 2020-01-27 12:08:38

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
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!