Skip to main content

使用场景

目前规模

3400+集群、38000+个节点、1700+台服务器,集群总请求量超过5000万QPS/秒

应用案例

String

分布式缓存

Redis作为内存数据库,常被用做分布式缓存。合理的使用缓存,不仅可以提高响应速度,还能降低数据库压力。

计数器

如商品的浏览量、视频的播放数等场景,为了保证数据实时效,每次请求都需要计数+-1。Redis提供的INCR/DECR命令在内存操作来实现计数器功能,非常适合计数场景。

全局自增ID

分布式会话

无状态的token或者有状态的Session集中管理是目前最为常用的方案,后者正式搭建以Redis等内存数据库为中心的session服务。

分布式锁

秒杀/扣减库存等并发量较大的场景下,传统使用数据库锁的方式已经无法满足。利用Redis的单线程处理特性,使用setnx lua脚本来保障分布式场景下锁的原子性。

对象存储

利用可以存储用户,订单,产品,商家,或者购物车信息

优点缺点
String对象简单序列化/反序列化有一定CPU开销
Hash对象简单直观,节省内存注意ziplist/hashtable编码的转换,hashtable会消耗更多内存

队列

使用List存储最新上架的TOP 100商品,使用ltrim 指令对一个列表进行修剪

简单消息队列

时间轴(Timeline)

集合列表

利用Redis Set的去重特性,交集/并集/差集功能,常常用在社交场景的共同好友,相似兴趣,我可能认识的人

商品标签

商品筛选

# 筛选商品:苹果品牌、ios系统、屏幕在6.0-6.24之间,LCD屏幕
sinter brand:apple os:ios screensize:6.0-6.24 screentype:lcd

抽奖

# 用户1参加action:01抽奖活动
sadd action:01 1
# 随机抽出两个人
srandmember action:01 2
# 或随机抽出两个人,并移除
spop action:01 2

用户关系,推荐模型

# 用户1和2关注的人
sadd follow:1 2,3,4
sadd follow:2 3,4,5
# 用户1和2共同关注的人
sinter follow:1 follow:2
# 我关注的人也关注了用户1
sismember follow:2 1
sismember follow:3 1
# 我可能认识的人
sdiff me follow:2

排行榜

热搜排名,播放排行榜等

# 点击话题
zincrby topic01 1
# 今日话题榜前9名
zrevrang topic20230101 0, 20 withscores
# 统计近3日点击数据,并存放的新的集合
zunionstore topic:3day 3  topic:20191022  topic:20191021 topic:20191020
# 展示近3日的排行前9名
zrevrange topic:20191022-20191020  0  9   withscores

位统计 bitmap

最近30天独立访问用户数量

附近商家GeoMap