redis数据结构使用场景
程序员文章站
2022-07-10 23:48:12
...
数据结构类型
1. String - 字符串
2. Hash - 字典
3. List - 列表
4. Set - 集合
5. Sorted Set - 有序集合
场景
-
String - 字符串
String是简单的Key-Value类型。Value不仅可以是String,也可以是数字,支持get、set、incr、decr操作。
1.设置和获取字符串的某一段内容
2.设置和获取字符串中的某一个(bit)
3.原子计数器
-
Hash - 字典
Hash结构可以使你像在数据库中Update一个属性一样,只修改某一项属性值
存储、读取、修改用户属性值
-
List - 列表
List == 链表(redis使用双端链表实现list)
1.微博 TimeLine
2.消息队列
-
Set - 集合
Set就是一个集合,集合的概念就是一堆不重复值的组合
例子:
在微博应用中,可以将一个用户所关注的人存在一个集合中,将其他的粉丝存在一个集合,
因为redis非常人性化的为集合提供了求交集,并集,差集的操作,
那么就可以非常方便的实现共同关注,共同喜欢,二度好友等功能。
1.共同好友、二度好友
2.利用唯一性,可以统计访问网站的所有独立IP
3.好友推荐的时候,根据tag求交集,大于某个threshold[阈值]就可以推荐
-
Sorted Set - 有序集合
sorted set 是将set中的元素增加了一个权重参数socre,是的集合中的元素能够按socre进行排序
1.带有权重的元素,比如一个游戏的用户得分排行榜
2.比较复杂的数据结构,一般用到的场景不多
-
其他功能使用场景
1.订阅 - 发布系统
Pub/Sub 从字面上立即就是发布[Publish]与订阅[Subscribe], 在reids中,你可以设置某一个key值进行消息发布以及消息订阅, 当一个key值上有了消息发布后,所有订阅它的客户端都会受到相应的消息, 这一个功能最明显的用法就是用作实时消息系统,比如普通的即时聊天,群聊等功能。
2.事务 - Transactions
redis的Transactions 提供的并不是严格的 ACID 的事务(比如一串用 EXEC 提交执行的命令, 在执行中服务器宕机,那么会有一部分命令执行了,剩下的没执行),但是这个 Transactions 还是提供了基本的命令打包执行的功能(在服务器不出问题的情况下,可以保证一连串的命令是顺序 在一起执行的,中间有会有其它客户端命令插进来执行)。Redis 还提供了一个 Watch 功能, 你可以对一个 key 进行 Watch,然后再执行Transactions,在这过程中,如果这个 Watched 的值 进行了修改,那么这个 Transactions 会发现并拒绝执行。
下一篇: Impala性能调优