Redis
文章平均质量分 78
凿壁偷光丶
这个作者很懒,什么都没留下…
展开
-
Redis 数据分布算法
redis cluster 介绍自动将数据进行分片,每个master 上放一部分数据提供内置的高可用支持,部分master不可用时,还是可以继续工作的在redis cluster 架构下,每个redis要放开两个端口号,比如一个事6379,另外一个就是在这基础上+10000,也就是1637916379端口号用来进行节点间的通信,也就是cluster bus的东西,集群总线。进行故障检测、配置更新、故障转移授权。使用一种二进制的协议,主要事用于节点间进行高效的数据交换,占用更少的网络带宽和处理时间。原创 2021-11-09 12:02:46 · 1105 阅读 · 0 评论 -
Redis 数据类型 - zset (有序集合)
Redis 数据类型 - zset (有序集合)有序集合每个元素都是一个字符串对象,每个元素都有一个分值为 double 类型的浮点数,底层数据结构是 ziplist 和 skiplist(跳跃表)+ dict 字典。*dict:保存一个从成员到分数的映射,通过该字典可以用O(1)的复杂度查找给定成员的分值。*zsl: 按照分值从小到大保存了所有集合元素,每个跳跃表节点都保存了一个元素。可以通过它对 zset 进行范围型操作,例如 ZRANK、ZRANGE。同时使用字典和跳跃表并不会产生重复成员和原创 2021-10-31 22:33:25 · 1787 阅读 · 0 评论 -
Redis 数据类型 - set
Redis 数据类型 - setset: 是一个无序的集合,集合中元素都是唯一的。set 对象的编码可以是 intset 或者 hashtable;inset 编码的集合对象使用的是整数集合作为底层实现。而底层是字典时,只不过所有的 value 都是 null。1 intset (整数集合)intset的内存是连续的,所有的数据增删改查操作都是在内存地址偏移的基础上进行的,并且整数的保存也是有序的,intset的内存示意图如下:#define INTSET_ENC_INT16 (sizeof(in原创 2021-10-31 22:32:54 · 706 阅读 · 0 评论 -
Redis 数据类型 - hash (哈希)
Redis 数据类型 - hash (哈希)dict (字典),类似于Java 中的 map,k-v 型的数据结构,每个键都是唯一的。底层分别采用了 ziplist 和 hashtable 作为底层数据结构。当元素过少时,使用 ziplist,否则使用 hashtable1 ziplist 在 hash 对象每当有 hash 对象需要放入键值对时,就会依次先插入到 ziplist 的尾部,首先插入 key 值,然后插入 value 值,使得 key 和 value 紧挨着,示例如下:Tian:0&g原创 2021-10-31 22:32:23 · 521 阅读 · 0 评论 -
Redis 数据类型 - list
Redis 数据类型 - Stringlist 中文翻译为:列表,目前 6.2 的版本中,数据结构为 quicklist, 但是逻辑结构其实是 linkedlist + ziplist 的混合体,它将linkedlist 按段切分,每一段使用 ziplist 来紧凑存储,多个 ziplist 之间使用双向指针串接起来。其中每个节点的数据结构如下,根据单个节点结构 quicklistNode 可以看出,通过 prev, next 指针组成双向链表,其中 head,tail 节点值为 null。2.1 z原创 2021-10-31 22:29:21 · 344 阅读 · 0 评论 -
Redis 数据类型 - String
#Redis 数据类型 - String1. stringstring 的底层数据结构为 SDS 也叫简单字符串(Simple Dynamic String)。struct sds<T>{ //记录buf数组中已使用字节的数量 //等于 SDS 保存字符串的长度 T len; //记录 buf 数组中未使用字节的数量 T allocate; //字节数组,用于保存字符串 char buf[];}为什么使用泛型呢,因为当字符串比较原创 2021-10-26 22:37:42 · 233 阅读 · 0 评论 -
深入 Redis 基础数据结构
Redis 数据结构总览Redis 也是 K-V 型数据库,那么为了实现从键到值的快速访问,Redis 使用 hash 表来保存所有的键值对,哈希桶中的元素保存的并不是值本⾝,⽽是指向具体值的指针。这也就是说,不管值是String,还是集合类型,哈希桶中的元素都是指向它们的指针hash 冲突解决Redis会对哈希表做rehash操作。rehash 也就是增加现有的哈希桶数量,让逐渐增多的entry元素能在更多的桶之间分散保存,减少单个桶中的元素数量,从⽽减少单个桶中的冲突。常规rehashR原创 2021-10-20 21:49:35 · 143 阅读 · 0 评论