下面,Redis教程专栏介绍了Redis中五种数据结构的使用场景。本文介绍了
下面,Redis教程专栏介绍了Redis中五种数据结构的使用场景。本文介绍了Redis中的五种数据类型:字符串、哈希、列表、集合和排序集合。有需要的朋友可以参考一下!
(资料图片仅供参考)
一、redis数据结构使用场景
原来我看了《redisbook》这本书之后,已经熟悉了redis的基本功能。上周我开始阅读redis的源代码。目前的目标是彻底了解redis的数据结构。我们都知道redis中有五种数据结构。每个数据结构的使用场景是什么?
字符串——字符串Hash——字典列表——列表集3354排序集——有序集
让我们简单解释一下它们各自的使用场景:
1.String——字符串
字符串数据结构是一种简单的键值类型。value不仅可以是String,还可以是一个数字(当数字类型可以用Long表示时,编码为整数,其他一切都以字符串的形式存储在sdshdr中)。使用Strings类型可以完全实现当前的Memcached功能,效率更高。您还可以享受Redis的功能,如定时持久性(可以选择RDB模式或AOF模式)操作日志和复制。除了提供与Memcached相同的操作,如get、set、incr和decr,Redis还提供以下操作:
1.len牛帅:o (1)获取字符串的长度。
2.追加Niu Shuaireredis:将内容追加到字符串中,使用智能内存分配(每次2次)
3.设置并获取字符串的特定内容。
4.设置并获取一点字符串。
5.分批设置一系列字符串的内容。
6.原子计数器
7.7的神奇效果。GETSET命令:请在清除旧值的同时设置一个新值,并将其与原子计数器一起使用。1.Hash——字典在Memcached中,我们经常把一些结构化的信息打包成hashmap值(通常是JSON格式),在客户端序列化后存储为字符串,比如用户的昵称、年龄、性别、积分等。此时,当您需要修改这些项之一时,通常需要取出字符串(JSON)然后反序列化以修改项的值,然后将其序列化为字符串(JSON)并存储回去。简单修改一个属性做这么多事情肯定要花很多钱,而且不适合一些可能并发操作的场合(比如两个并发操作需要修改积分)。Redis的Hash结构可以让你只修改一个属性值,就像更新数据库中的一个属性一样。
存储、读取和修改用户属性1。List—— List是一个链表(redis用一个双端链表来实现链表)。我相信任何学过数据结构知识的人都应该能够理解它的结构。使用List结构,我们可以轻松实现最新新闻排名等功能(如新浪微博的TimeLine)。List的另一个应用是消息队列可以使用List的*PUSH操作将任务存储在List中,然后工作线程使用POP操作取出任务执行。Redis还提供了一个操作列表中某一部分元素的API。您可以直接查询和删除列表中某个部分的元素。
1.微博时间轴
2.消息队列1。Set—— Set是一个集合。集合的概念是一堆非重复值的组合。Redis提供的Set数据结构可以用来存储一些集合数据。例如,在微博应用中,一个用户的所有追随者都可以存储在一个集合中,该用户的所有粉丝都可以存储在一个集合中。由于Redis提供交集、并集、差集等操作,实现共同关注、共同偏好、二度好友等功能非常方便。您还可以使用不同的命令来选择是将结果返回给客户端还是将其保存在新的集合中。
1.共同的朋友和二级朋友
2.唯一性可以用来统计所有访问网站的独立IPS。
3.朋友推荐的时候,可以推荐1。如果标签的交集大于某个阈值,则排序集——有序集。
与集合相比,排序集合给集合中的元素增加了一个权重参数分值,使得集合中的元素可以根据分值有序排列。例如,一个存储全班分数的排序集合,可以将它的设定值作为学生的身份证号,将分数作为其考试分数,这样当数据插入到集合中时,数据自然会被排序。此外,排序集也可以用作加权队列。比如普通消息的分值为1,重要消息的分值为2,那么工作线程可以选择按照分值的逆序获取工作任务。优先考虑重要任务。
1.具有权重的元素,例如游戏的用户分数列表。2.复杂数据结构中常用的场景不是
算太多二、redis 其他功能使用场景
1.订阅-发布系统
Pub/Sub 从字面上理解就是发布(Publish)与订阅(Subscribe)在 Redis 中你可以设定对某一个 key 值进行消息发布及消息订阅当一个 key 值上进行了消息发布后所有订阅它的客户端都会收到相应的消息。这一功能最明显的用法就是用作实时消息系统比如普通的即时聊天群聊等功能。
1.事务——Transactions
谁说 NoSQL 都不支持事务虽然 Redis 的 Transactions 提供的并不是严格的 ACID 的事务(比如一串用 EXEC 提交执行的命令在执行中服务器宕机那么会有一部分命令执行了剩下的没执行)但是这个 Transactions 还是提供了基本的命令打包执行的功能(在服务器不出问题的情况下可以保证一连串的命令是顺序在一起执行的中间有会有其它客户端命令插进来执行)。Redis 还提供了一个 Watch 功能你可以对一个 key 进行 Watch然后再执行 Transactions在这过程中如果这个 Watched 的值进行了修改那么这个 Transactions 会发现并拒绝执行。
以上就是详解Redis中5种数据结构的使用场景的详细内容!
来源:php中文网