白日依山尽,黄河入海流。欲穷千里目,更上一层楼。 -- 唐·王之涣

使用场景

  • 热数据缓存

  • 数据共享分布式 分布式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
    4
    setbit 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
2
3
4
5
6
# 差集
sdiff set1 set2
# 交集 intersection
sinter set1 set2
# 并集
sunion set1 set2
  • 用户关注 推荐模型

用户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

作者

Colin

发布于

2022-01-07

许可协议