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  命令可以查看对象的空转时长,即当前时间-最后访问时间。

  • 相关阅读:
    eclipse自动部署问题
    eclipse下遇到 无法解析类型 javax.servlet.http.HttpServletRequest
    Spring MVC学习笔记——POJO和DispatcherServlet
    JavaWeb学习笔记——Tomcat数据源
    JavaWeb学习笔记——表达式语言
    Bootstrap学习笔记
    ubuntu下git安装及使用
    JavaWeb学习笔记——jsp基础语法
    Java数据结构——容器总结
    Linux下htop的使用
  • 原文地址:https://www.cnblogs.com/sunxianbiao/p/12782539.html
Copyright © 2011-2022 走看看