• Redis笔记2----对象


    redis中总共有五种类型的对象,分别是:字符串对象、双端链表、字典、压缩列表、整数集合。上述的五种类型的对象均具有相同的结构:
    typedef struct redisobject{ //类型 type , // 编码 encoding , // 指向地层数据结构的指针 *ptr, // 最后访问时间 lasttime // 引用数量 refCount }

    类型

     对象的类型总共为五种,如下:

    • REDIS_STRING : 字符串对象
    • REDIS_LIST : 列表对象
    • REDIS_HASH : 哈希对象
    • REDIS_SET : 集合对象
    • REDIS_ZSET : 有序集合对象

    可以通过 type 命令验证 redis对象的类型

    编码

    编码决定了redis对象保存过程中所采用的数据结构。redis中对象的编码总共有如下八种:

    1. REDIS_ENCODING_INT : LONG类型的整数
    2. REDIS_ENCODING_EMBSTR : embstr 编码的简单动态字符串
    3. REDIS_ENCODING_RAW : 简单动态字符串
    4. REDIS_ENCODING_HT : 字典
    5. REDIS_ENCODING_LINKEDLIST : 双端链表
    6. REDIS_ENCODING_ZIPLIST : 压缩列表
    7. REDIS_ENCODING_INTSET : 整数集合
    8. REDIS_ENCODING_SKIPLIST : 跳跃表 和字典

    redis中的对象与编码之间的对应关系就不一一列举了,每种对象都会采用两种编码格式。在对象占用内存较小时,redis采用一种编码;当对象占用较大的内存时,redis则会换种数据结构。

    可以应用object encoding 命令验证对象的编码

    引用数量

    说到引用数量,便需要介绍下redis的内存回收机制。redis跟踪对象的引用计数,若是引用计数为零,则自动回收此对象。机制如下:

    1. 开始,创建一个对象,此对象的引用计数加1
    2. 若是此对象被另外一个键值引用,则此对象的引用计数加1
    3. 若是此对象不被另外程序使用,则此对象的引用计数减1
    4. 当次对象的引用计数为0 , 对象的内存自动释放

    最后访问时间

    每次访问redis的对象,此对象便会记录对象的最后访问时间。object idletime  命令可以查看对象的空转时长,即当前时间-最后访问时间。

  • 相关阅读:
    洛谷 P1087 【FBI树】题解
    CF584D 【Dima and Lisa】题解
    洛谷 P1042 【乒乓球】题解
    洛谷 P2010 【回文日期】题解
    洛谷 P1233 【木棍加工】题解
    STM32嵌入式开发学习笔记(五):中断
    STM32嵌入式开发学习笔记(四):使用滴答计时器实现精准计时
    STM32嵌入式开发学习笔记(三):使用按键控制小灯
    STM32嵌入式开发学习笔记(二):将功能封装为库文件
    STM32嵌入式开发学习笔记(一)
  • 原文地址:https://www.cnblogs.com/sunxianbiao/p/12782539.html
Copyright © 2020-2023  润新知