zoukankan      html  css  js  c++  java
  • 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  命令可以查看对象的空转时长,即当前时间-最后访问时间。

  • 相关阅读:
    简单的三栏,文字多行居中效果 css原生
    目录
    HttpRunner使用
    测试职能
    缺陷
    SQL操作数据
    jmeter使用
    接口自动化理论引入
    接口自动化框架(Pytest,Allure,Yaml)
    jmeter 登陆--查询存在否-->新建客户-->查询存在否 + 压测
  • 原文地址:https://www.cnblogs.com/sunxianbiao/p/12782539.html
Copyright © 2011-2022 走看看