一、概述
Redis 基础的数据类型有五种,分别是:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合)。
二、实际的应用场景之String(字符串)
1、定义
string 是 redis 最基本的类型,一个 key 对应一个 value。string 类型是二进制安全的。因为 string 底层的实现是简单动态字符串 sds,是可以修改字符串。
2、应用场景
单值缓存、对象缓存、分布式锁、常规计数(粉丝数量、评论数量)、分布式session共享、分布式全局序列号。
3、具体实现
单值缓存
对象缓存
常规计数器
分布式系统全局序列号
分布式锁
setnx 如果插入的key一样不会对数据有任何操作,如果第二次对库存再进行减对的话就返回错误。
三、实际的应用场景之Hash(哈希)
1、定义
Hash是一个键值对集合。他相当于java中的双重map。<key,<filed,value>>。
2、应用场景
购物车
3、具体实现
购物车
四、实际的应用场景之List(列表)
1、定义
列表是简单的字符串列表,按照插入顺序排序,可以添加一个元素在列表的头部或者尾部。
2、应用场景
Stack(栈)= LPUSH + LPOP -> FILO //先进后出
、Queue(队列)= LPUSH + RPOP //先进先出
、Blocking MQ(阻塞队列)= LPUSH + BRPOP //消息队列
、微博
、微信公众号消息流
。
3、具体实现
微博和微信公众号消息流:
五、实际的应用场景之Set(集合)
1、定义
Set 是 string 类型的无序集合。
2、应用场景
微信抽奖小程序、微信微博点赞、收藏、标签
、关注模型,就是可能认识的人的关系。
3、具体实现
微信抽奖
微信微博点赞、收藏、标签
六、实际的应用场景之Zset(有序集合)
1、定义
zset和set一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个dobule类型的分数,redis正是通过分数为集合成员进行从小到大的排序,zset的成员是唯一的但是分数可以重复。