
中间件
文章平均质量分 91
lordky
不甘心现在,那就得努力,少刷抖音小说多学习拓展新技能
展开
-
Redis之过期键删除策略
我们知道,Redis数据库是基于内存的,但是如果一些不用的键在内存中一直存在,那么久而久之,就有可能会发生oom的情况。所以,redis数据库提供了常用的EXPIRE命令或者PEXPIRE命令,用户可以使用这两个命令以秒或者毫秒为精度为数据库中的某个键设置生存时间。在经过指定的时间后,redis服务器就会自动删除生存时间为0的键。 可以设置键的生存时间的命令如下: 虽然有四种不同的命令用于指定过期时间,但是实际上,无论使用哪一种命令,最终都会转换为PEXPIREAT命令来执行那么,redis是如原创 2022-06-12 10:40:42 · 1054 阅读 · 1 评论 -
详述常见的Redis对象_STRING、LIST、SET、ZSET、HASH
前面我们详细探讨了Redis的部分数据结构,如SDS、链表、压缩列表、字典以及跳跃表的实现。Redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这个系统包含字符串对象、列表对象、集合对象、有序集合对象等。而每一个对象都由一个RedisObject表示。如下。typedef struct redisObject { // 类型,STRING、LIST、HASH、SET、ZSET... unsigned type:4; // 编码方式,INT、原创 2022-05-21 11:25:56 · 294 阅读 · 2 评论 -
Redis数据结构(四)跳跃表—skiplist
我们知道,跳跃表是一种有序的数据结构,查询平均复杂度为O(logN),最坏O(N)。其效率可以和平衡树相媲美,而且其实现更为简单. Redis只在两个地方用到了跳跃表,一个是实现有序集合键,另一个是在集群节点中用作内部数据结构,除此之外,跳跃表在Redis里面没有其他用途。所以我们可以看到关于skiplist的定义都是在server.h中(3.0及之前在redis。)我们先来...原创 2022-05-16 11:27:10 · 405 阅读 · 0 评论 -
Redis数据结构(三)字典
定义: 字典,又称为符号表,关联数组或者映射,是一种用于保存键值对的抽象数据结构。 我们在很多高级编程语言中都能找到字典的踪迹,比如说java中的Map数据结构。一个键(key)可以和一个值(value)进行关联,可以用过key来对value值进行修改删除。Redis采用C语言实现,然而C语言中并没有内置这种数据结构,但是这种数据结构又是非常必要的,所以Redis自己构建了这种数据结构。 字典对于Redis来说可以说是非常非常重要的数据结构了,我们常用的Redis数据库,创建一个键值对的时候,就原创 2022-05-08 16:21:17 · 614 阅读 · 0 评论 -
Redis数据结构(二)列表健底层实现—链表、压缩列表
列表健底层有两种实现,一种是链表,另一种为压缩列表(ziplist)。当列表对象可以同时满足以下两种情况的时候,列表对象将使用压缩列表实现列表对象保存的所有字符串元素的长度都小于64字节列表对象保存的元素数据库小雨512个当不能同时满足这两个条件时就会使用链表实现。 下面我们具体聊聊这两种数据结构(一)链表 链表做为常用的数据结构,很多高级的编程语言里面都内置了该数据结构比如说java、python等。但是由于Redis使用的C语言并没有内置这种数据结构,所以Redis构建了自己的链表实现。原创 2022-05-06 22:06:36 · 411 阅读 · 0 评论 -
Redis数据结构(一)SDS
一、关于SDS Redis没有直接使用C语言传统的字符串表示(也就是以空字符结尾的字符数组),而是自己构建了一种名为简单字符串的抽象类型(Simple Dynamic String),并将SDS用作了Redis默认的字符串表示。在Redis3.0之前,对于sds的结构定义如下:struct sdshdr { // 记录buf数组中已使用字节的数量,等于SDS所保存字符串长度 unsigned int len; // 记录buf数组中未使用字节的数量 unsigned int原创 2022-05-02 17:56:40 · 1737 阅读 · 0 评论