《Redis深度历险》数据精华摘要

《Redis深度历险》数据精华摘要,第1张

一、Redis基础数据结构

redis中有5中基本数据结构,分别为:string(字符串)、list(列表)、set(集合)、hash(哈希)和zset(有序集合)
string(字符串):Redis的字符串是动态字符串,是可以修改的字符串,内部结构实现上类似于Java的ArrayList,采用预分配冗余空间的方式来减少内存的频繁分配。
如上图所示,内部为当前字符串实际分配的空间capacity一般高于实际字符串长度len。字符串最大长度为512M

list(列表):Redis的列表相当于Java里面的LinkedList,注意它是链表而不是数组。这意味着list的插入和删除 *** 作非常快,时间复杂度为O(1),但是索引定位很慢,时间复杂度为O(n)。Redis的列表结构常用来做异步队列使用。将需要延后处理的任务结构体序列化成字符串塞进Redis的列表,另一个线程从这个列表中轮询数据进行处理。

hash(字典):相当于Java里的HashMap,是无序字典。内部实现结构上同Java的HashMap也是一致的。Redis的字典的值只能是字符串。Java的HashMap在字典很大时,rehash是个耗时的 *** 作,需要一次性全部rehash。redis为了高性能,不堵塞服务,采用了渐进式rehash策略。

set(集合):相当于Java语言里面的HashSet,它内部的键值对是无序的唯一的。它的内部实现相当于一个特殊的字典,字典中所有的value都是一个值null。

zset(有序列表):类似于sortedSet和HashMap的结合体。set保证内部value的唯一性,另一方面它可以给每个value赋予一个score,代表这个value的排序权重。它的内部实现用的是一种叫"跳跃列表"的数据结构。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/871457.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存