文章目录
redis 可以应用到哪些场景下 ?
redis 的数据类型丰富,常用五种数据类型如下图:
1、字符串 String — 应用场景
- 短信验证码过期存储
- 热点数据对象缓存 set key value(json)
- token 过期存储 set key value
- 计数器(文章阅读、帖子阅读、点赞喜欢等) – 原子加减 incr key
- 分布式锁 – setnx key 返回1代表获取锁成功
- 分布式全局序列号 – incrby key 100
2、哈希 hash — 应用场景
-
对象缓存
hmset student 1:zhangsan 1:23 -
电商购物车
以用户ID 为 key
商品ID 为field
商品的数量为 value该数据结构操作购物车的操作:
- 添加购物车商品 – hset cart:981331 20121001 2
- 删除购物车商品 – hdel cart:981331 20121001
- 增加购物车商品数量 – hincrby cart:981331 20121001 1
- 查询该用户购车商品总数 – hlen cart:981331
- 获取购物车所有商品 – hgetall cart:981331
![](https://i-blog.csdnimg.cn/blog_migrate/8fb5b88b0f7aeeb3c4def02963899077.png)
优点:
- 同类数据归类整合存储,方便数据的管理
- 相比string操作消耗内存与cpu更小
- 相比string存储更节省空间
缺点:
- 过期的效果不能用在 field ,只能用在 key 上 redis
- 高可用集群下不适合大规模的使用
3、列表 list — 应用场景
- 微博和微信公众号的消息
- Stack(栈) = lpush + lpop
- Queue(队列) = lpush + rpop
- Blocking MQ (阻塞队列) = lpush + brpop
4、集合 set — 应用场景
- 抽奖小程序
- 微信点赞
- 微博关注模型
- 电商商品筛选
5、有序集合 zet —应用场景
- top 10 排行榜
- 展示当日排行前十
- 10天搜索榜单计算
- 10天排行前十