首页 > 数据库 >redis数据结构跳表

redis数据结构跳表

时间:2023-08-15 21:13:04浏览次数:41  
标签:struct level redis zskiplistNode 跳表 数据结构 节点

redis数据结构跳表

数据结构

跳表节点

typedef struct zskiplistNode {
// 层
struct zskiplistLevel {
// 前进指针
    struct zskiplistNode *forward;
// 跨度
    unsigned int span;
} level[];
// 后退指针
struct zskiplistNode *backward;
// 分值
double score;
// 成员对象
robj *obj;
} zskiplistNode;

img

跳跃表节点的level数组可以包含多个元素,每个元素都包含一个指向其他节点的指针,程序可以通过这些层来加快访问其他节点的速度,一般来说,层的数量越多,访问其他节点的速度就越快。

每次创建一个新跳跃表节点的时候,程序都根据幂次定律(power law,越大的数出现的概率越小)随机生成一个介于1和32之间的值作为level数组的大小,这个大小就是层的“高度”。

跳表

typedef struct zskiplist {
// 表头节点和表尾节点
structz skiplistNode *header, *tail;
// 表中节点的数量
unsigned long length;
// 表中层数最大的节点的层数
int level;
} zskiplist;

标签:struct,level,redis,zskiplistNode,跳表,数据结构,节点
From: https://www.cnblogs.com/zpf253/p/17632434.html

相关文章

  • redis安装及redis cluster创建
    redis安装及rediscluster创建先检查是否安装GCC,若无则先安装GCC,不然编译redis会报错。命令:gcc-v若提示命令未找到则没有。可按照GCCG++环境离线配置.docx文档添加。步骤一:下载redis安装包并通过xftp上传到服务器链接:http://download.redis.io/releases/步骤二:解压redis安装包命......
  • redis主从复制
    redis主从复制同步当客户端向从服务器发送SLAVEOF命令,要求从服务器复制主服务器时,从服务器首先需要执行同步操作,也即是,将从服务器的数据库状态更新至主服务器当前所处的数据库状态。从服务器对主服务器的同步操作需要通过向主服务器发送SYNC命令来完成,以下是SYNC命令的执行步骤:......
  • 基于Redis的分布式锁
    在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式......
  • Redis Bigkey排查
    在处理bigkey问题可以先从一下几点入手什么是bigkey?bigkey危害?bigkey是如何产生的?如何发现bigkey?如何处理bigkey?什么是BigkeyRedisbigkey是指在Redis数据库中占用空间较大的键值对。这些键通常包含了大量的数据,可能会影响Redis的性能和内存使用。例如......
  • 优化 Redis 集群缓存分配:解决节点间分配不均导致内存溢出问题
    一、Redis集群部署简介在现代应用程序中,缓存被广泛应用以提高性能和减轻后端数据库的压力。本文将探讨面对Redis集群缓存分配不均问题时的解决方法。我们的Redis集群部署包括3主3从,每个节点分配内存4G(服务器总内存32G),内存淘汰策略相同:volatile-lru。二、问题描述在......
  • Redis(2):四种模式(单机、哨兵、集群、主从复制)部署
    学习自:Redis的四种模式-何童鞋-博客园深入理解Redis的部署模式四种模式的探索(redis部署四种模式)-数据库运维技术服务redis部署和运行原理redis的三种部署方式_小咪咪的技术博客_51CTO博客上一节:Redis(1):四种模式(单机、哨兵、集群、主从复制)原理0、所写m:master,主服务器s:s......
  • 【数据结构】排序2 交换排序
    交换排序就是基于比较交换的排序。主要讲两种交换排序算法:冒泡排序和快速排序。冒泡排序比较简单一般不会单独考察,重点考察的是快速排序的内容。1.冒泡排序基本算法思想:对于每趟排序,从后往前两两比较,如果为逆序则进行交换,这样很显然不能一趟就得到正确的序列,但是每次都会把最......
  • Linux的Redis安装部署
    简介redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。redis的特点就是:快,可以基于内存存储数据并提供超低延迟、超快的检索速度一般用于在系统中提供快速缓存的能力。安装配置EPEL仓库EPEL的全称叫ExtraPackagesforEnt......
  • redis cluster查询过期key
    redis以前也就部署好没管过,这次用的云上的rediscluster,程序没有设置过期时间,所以要求手动去删除key。按以前的习惯redis-cli登录keys*查询不行,原来cluster下key是存在不同的slot下的,要去每个slot下找#查看cluster信息,特别是cluster_slots_ok的数量clusterinfocluster的slot是从......
  • Redis专题-队列
    Redis专题-队列首先,想一想Redis适合做消息队列吗?1、消息队列的消息存取需求是什么?redis中的解决方案是什么?无非就是下面这几点:0、数据可以顺序读取1、支持阻塞等待拉取消息2、支持发布/订阅模式3、重新消费4、消息不丢失5、消息可堆积那我们来看看redis怎么满足这些需......