Redis五种数据类型的应用场景

2022-07-25
14453

Redis

redis可以用作数据库、缓存和消息中间件。

一、String(字符串)类型
String是最常用的一种数据类型,普通的key/ value 存储都可以归为此类
常用使用场景:
1、缓存结构体信息
2、计数功能

二、Hash 
Hash对象的键是一个字符串类型,值是一个键值对集合(一般是 JSON 格式)。
应用场景:该类型非常适合于存储对象的信息(结构体信息)。如一个用户有姓名,密码,年龄等信息。

三、List 
可以向Redis列表的头部或尾部添加元素。  
在插入时,如果该键并不存在,Redis 将为该键创建一个新的链表,如果这个键已经存在,则是向 list 添加元素。
应用场景:
1、list列表结构常用来做异步队列使用
2、list可用于秒杀抢购场景

四、set 
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
用在一些去重的场景里,例如每个用户只能参与一次活动、一个用户只能中奖一次等等去重场景
应用场景: 
1、Redis set对外提供的功能与list类似是一个列表的功能,特殊之处在于set是可以自动排重的,当你需要存储一个列表数据,又不希望出现重复数据时,set是一个很好的选择,并且set提供了判断某个成员是否在一个set集合内的重要接口,这个也是list所不能提供的。
2、Sets 集合的概念就是一堆不重复值的组合。利用Redis提供的Sets数据结构,可以存储一些集合性的数据,比如在微博应用中,可以将一个用户所有的关注人存在一个集合中,将其所有粉丝存在一个集合。
3、Redis还为集合提供了求交集、并集、差集等操作,可以非常方便的实现如共同关注、共同喜好、二度好友等功能,对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存集到一个新的集合中。

五、zset (有序集合类型)
Redis 有序集合和集合一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。有序集合的成员是唯一的,但分数(score)却可以重复。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。
应用场景:
1、Redis sorted set的使用场景与set类似,区别是set不是自动有序的,而sorted set可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序。当你需要一个有序的并且不重复的集合列表,那么可以选择sorted set数据结构,比如twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
2、另外还可以用Sorted Sets来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。


推荐:https://blog.csdn.net/l1028386804/article/details/120756390