×

redis数据类型底层实现?redis五种数据类型的底层数据结构

前端技术网 前端技术网 发表于2024-01-26 21:17:35 浏览3073 评论0

抢沙发发表评论

一、redis属于哪一层

Redis底层结构

redis存储结构

redis数据类型底层实现?redis五种数据类型的底层数据结构

redis的存储结构从外层往内层依次是redisDb、dict、dictht、dictEntry。

redis的Db默认情况下有16个,每个redisDb内部包含一个dict的数据结构。

redis的dict内部包含dictht的数组,数组个数为2,主要用于hash扩容使用。

dictht内部包含dictEntry的数组,可以理解就是hash的桶,然后如果冲突通过挂链法解决

二、redis key存储原理

RedisKey存储原理主要涉及两个方面:

哈希槽(hashslot):Redis集群中,每一个节点都会根据crc16的算法得出一个结果,然后把结果对16384求余数,计算这个key应该分布到哪个hashslot中。

redis数据类型底层实现?redis五种数据类型的底层数据结构

集群管理插件(cluster):Redis集群数据获取原理是当客户端向RedisCluster中的任意一个节点发送与key有关的命令时,接收命令的节点会计算出要处理的key属于哪个哈希槽(hashslot),并且先检查这个hashslot是否属于自己(管辖)。如果key所在的槽正好属于自己(管辖),节点会直接执行这个key相关命令。

三、redis的zset是怎么保证有序的

redis的编码分为ziplist和skiplist两种,当保存的元素少于128个,并且保存所有元素大小小于64字节使用ziplist,否则使用skiplist,其中ziplist的**元素从小到大的顺序进行排序,小的放在表头位置,大的放在靠近表尾的位置,skiplist编码的有序**对象使用zet作为底层结构实现,一个zset结构同时包含一个字典和一个跳表,由于字典是以无序方式保存**元素,所以每次进行范围操作的时候都要进行排序。

四、redis节点的特点

特点:

1所有redis节点(包括主和从)彼此互联(两两通信),底层使用内部的二进制传输协议,优化传输速度;(所有功能特点的基础)

2集群中也有主从,也有高可用的逻辑,但是没有哨兵进程,整合到主节点的功能里了;集群中的事件被主节点(大部分主节点);通过主节点的过半选举实现哨兵以前的逻辑;

3客户端与redis-cluster连接,无需关心分片的计算,客户端不在关心分片的计算逻辑,内部分发分布式数据(内部有分片计算逻辑),客户端将key交给redis节点后,集群内部判断key值的正确存储位置,转发存储;

文章到此结束,如果本次分享的redis数据类型底层实现和redis五种数据类型的底层数据结构的问题解决了您的问题,那么我们由衷的感到高兴!