一、String
string的应用场景
- 分布式锁
- 布隆过滤器
- 缓存
- 自增、自减:统计计数
- 分布式主键ID生成:incrby orderId 10000 一次获取批量的ID ,批量获取减少与Redis交互的频率。
- session共享
二、hash类型
hash的特点:
- hash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象,如果数据未取到,则返回 nil
- 每个hash可以存储2^32-1个键值对
- hash类型非常贴近对象的数据存储形式,并且可以灵活添加、删除对象属性。但hash设计初衷不是为了存储大量对象而设计的,切记不可乱用,更不可以将hash作为对象列表使用。
- hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会很低,有可能成为数据访问瓶颈。
hash的应用场景
1、购物车 :key=userId ,value 是各个商品对应的购买数量;
2、用户的信息
三、list
list可以实现:
栈
队列
阻塞队列
BRPOPLPUSH :
;这种方式可以避免数据弹出后处理业务失败 ,而数据丢失。我们可以通过LREM 删除处理成功的数据,也可以通过该指令获取处理失败的数据。四、set
1、抽奖:srandmember 可以随机获取元素,但是他不会剔除已经查询过的元素,即会重复抽奖
我们使用spop 抽奖可以移除已经获取的元素
2、关注的人、按照交集可以实现共同关注的人
五、zset
zset是set的一个升级版本,他在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset会自动重新按新的值调整顺序。 可以对指定键的值进行排序权重的设定,它应用排名模块比较多。