redis
文章平均质量分 83
gold615
这个作者很懒,什么都没留下…
展开
-
redis为什么使用skiplist
跳表是redis中基础数据结构之一,主要用在有序表中,与字典一起使用。 跳表在功能上主要用来快速查询一个或者一个范围内的数据。 首先看跳表的基本结构: 图片来源:https://zhuanlan.zhihu.com/p/68516038 跳表中每个节点定义有以下最基础的几个部分: 1 值,这个值可以直接是个数值,也可以是个指针,根据自己的需求定; 2 层数,如上图所示,跳表中每个节点大小并不完全一致,每个点都可以有若干层,第一层是所有节点都有的,节点中的相同层数会通过链表前后按序连接起来,这样当原创 2020-12-24 14:07:40 · 193 阅读 · 0 评论 -
redis 字典
redis中的字典就跟正常语言中的hash差不多,同样需要计算key来索引,同样需要解决冲突问题等。 代码位于src/dict.c|h中 dictEntry结构体 字典的基本组成是dictEntry结构体: typedef struct dictEntry { void *key; union { void *val; uint64_t u64; int64_t s64; double d; } v; struc原创 2020-12-02 01:04:24 · 142 阅读 · 0 评论 -
redis sds
在任何语言和系统中,字符串都几乎是使用频率最高的数据结构,而标准的c字符串有一些问题,主要包括: 字符串必须以’\0’结尾,导致图片等二进制不安全的数据无法以字符串形式存储; 字符串统计长度的复杂度为O(n),调用strlen时会对整个字符串从头到尾遍历,如果不小心在外层加了一层循环,会导致复杂度变更高,这点上没有java或者python方便; 容易发生溢出的问题,字符串是以’\0’为结尾的,一旦操作不慎,会在拼接字符串时,溢出到别的内存区域; 拼接字符串比较费时,3中说的一般是字符数组,字符串变量本身不原创 2020-12-01 00:30:37 · 250 阅读 · 0 评论