使用场景
热数据缓存
数据共享分布式 分布式session
定义分布式锁 string类型
setnx
在key不存在时才能添加成功,返回True全局ID int 类型的 incrby 利用原子性
计数器
int 类型的 incr
允许一定的延迟,先写Redis,在定时同步后端数据库限流
int 类型的 incr
以访问者的ip和其他信息作为key,访问一次增加一次计数,超过次数则返回false位统计
String类型的bitcount(1.6.6的bitmap数据结构介绍)1
2
3
4setbit k1 6 1
setbit k1 7 0
BITOP ADD / OR / XOR / NOT购物车
string或者hash, string 可以实现的, hash都可以实现
key/field/value
hincr/hdecr/hdel/hgetall/hlen
- 用户消息时间线 timeline
list,双向链表,直接作为timeline就好了。插入有序
- 消息队列
List提供了两个阻塞的弹出操作:blpop/brpop,可以设置超时时间
blpop:blpop key1 timeout 移除并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
brpop:brpop key1 timeout 移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
上面的操作。其实就是java的阻塞队列。学习的东西越多。学习成本越低
队列:先进先除:rpush blpop,左头右尾,右边进入队列,左边出队列
栈:先进后出:rpush brpop
- 抽奖
随机值获取
spop myset
- 点赞
sadd / srem / sismember / smembers / scard
商品标签
商品筛选
1 | # 差集 |
- 用户关注 推荐模型
用户1可能认识的人(差集):sdiff 2:follow 1:follow
用户2可能认识的人:sdiff 1:follow 2:follow
- 排行榜
id 为6001 的新闻点击数加1:zincrby hotNews:20190926 1 n6001
获取今天点击最多的15条:zrevrange hotNews:20190926 0 15 withscores