Redis

对象

  1. 对象 = (type, encoding, point) 组成

  2. type只有5种: STRING LIST HASH SET ZSET

  3. 底层编码方式若干种, 但是对于同一个类型, 可以用不用的编码方式, 比如LIST, 可以用ZIPLIST

    也可以用LINKEDLIST. 对于STRING, 可以有int, embstr.

  4. redis会评估数据量大小, 然后选择合适的底层实现, 并且在数据量发生变化之后, 会自己更改为更合适的数据结构.

string

  1. long double是用embstr方式来储存的. 其浮点数特性是通过取出来计算实现的.
  2. redis

list

  1. 使用ziplist 的条件:

    • 个数小于512个
    • 保存的字符串元素长度小于64字节

    以上两个条件是可以改配置文件修改的.

  2. redis 3.2.4 出了quicklist, 其实就是linkedlist里面套上ziplist. 更加节省内存. 但是默认是不开的

  3. 之后不再用ziplist来实现list

hash

  1. ziplist hashtable
  2. 使用ziplist, 同样可以配置. 而且没有没取消掉

set

  1. intset hashtable
    1. 集合对象保存的所有元素都是整数值;
    2. 集合对象保存的元素数量不超过 512 个;
  2. 3.