redis的各种类型的应用场景
Redis中存储的数据要小,并且频繁更改;
String
key的设计:user:1:name 这样设计方便更改;
用途:分布式锁:setnx business:{id} 返回1代表取锁成功,返回0代表取锁失败; 当业务操作完 del business:{id} 通常创建锁时给一个有效时间 用于防止异常死锁;
用途:INCR order:{id} 记录浏览数; get order:{id}
Hash
key的设计:hset user {id}:name zhang;
用途:电商购物车的实现; hget cart:{userId} productId 查看某件商品的数量; Hincrby cart:{userId} productId 1 增加某件商品的数量;
hkeys 返回购物车中的所有商品ID;根据Id去加载商品的详细信息 Hlen cart:{userId} 返回购物车中商品的种类数量;
HgetAll 返回购物车中所有的键值(KYE VALUE);

当用户key 为USER时 所有数据都会存在一个节点;(集群根据hash值分布存储)
List

用list实现很多常用的数据结构;
BRPOP key timeout 从表尾取数据,如果没有就堵塞 timeout秒,如果timeout==0 那么就一直堵塞;
用途:消息流:
Lpush msg:{userid} msgId 给某个用户的消息列表添加一条消息;
LRange msg:{userId} 0 5 返回这个用户的五条消息Id;
弊端:如果需要推送的用户过多:不适用;

浙公网安备 33010602011771号