redis 对象

Posted 持续在更新的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了redis 对象相关的知识,希望对你有一定的参考价值。

  redis是C语言编写的,内部用到的主要数据结构如下:

简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合等待。

  redis并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这

个系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象,每种对象都用到

了至少一种数据结构。

  通过这五种不同类型的对象,redis可以在执行命令之前,根据对象的类型来判断一个对象是否可以执行

给定的命令。使用对象的另一个好处是,我们可以针对不同的使用场景,为对象设置多种不同的数据结构实现

,从而优化对象在不同场景下的使用效率。

  redis的对象带有访问时间记录信息,该信息可以用于计算数据库键的空转时长,在服务器启用了max-

memory功能的情况下,空转时长较大的那些键可能会优先被服务器删除。

结构

 1 /* A redis object, that is a type able to hold a string / list / set */
 2 
 3 /* The actual Redis Object */
 4 /*
 5  * Redis 对象
 6  */
 7 #define REDIS_LRU_BITS 24
 8 #define REDIS_LRU_CLOCK_MAX ((1<<REDIS_LRU_BITS)-1) /* Max value of obj->lru */
 9 #define REDIS_LRU_CLOCK_RESOLUTION 1000 /* LRU clock resolution in ms */
10 typedef struct redisObject {
11 
12     // 类型
13     unsigned type:4;
14 
15     // 编码
16     unsigned encoding:4;
17 
18     // 对象最后一次被访问的时间
19     unsigned lru:REDIS_LRU_BITS; /* lru time (relative to server.lruclock) */
20 
21     // 引用计数
22     int refcount;
23 
24     // 指向实际值的指针
25     void *ptr;
26 
27 } robj;

 

  

以上是关于redis 对象的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段12——JavaScript的Promise对象

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

使用嵌套片段和动画对象

如何利用redis来进行分布式集群系统的限流设计

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”