一、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中。
集群管理插件(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五种数据类型的底层数据结构的问题解决了您的问题,那么我们由衷的感到高兴!