Redis笔记之集合对象

2021-08-28  本文已影响0人  晚熟的木头

集合对象的编码可以是intset或者字典。

对象中不同类型的适用条件:

只有同时满足以下两个条件时才会使用intset编码:

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

当intset编码的对象有任意条件不符合时就会转换成字典编码。

通过以下操作验证:

127.0.0.1:6379> sadd num 1 3 5
(integer) 3
127.0.0.1:6379> object encoding num
"intset"
127.0.0.1:6379> sadd num "six"
(integer) 1
127.0.0.1:6379> object encoding num
"hashtable"

127.0.0.1:6379> eval "for i=1, 512 do redis.call('sadd', KEYS[1], i) end" 1 integers
(nil)
127.0.0.1:6379> scard integers
(integer) 512
127.0.0.1:6379> object encoding integers
"intset"
127.0.0.1:6379> sadd integers 10086
(integer) 1
127.0.0.1:6379> scard integers
(integer) 513
127.0.0.1:6379> object encoding integers
"hashtable"
对象类型的结构图
上一篇 下一篇

猜你喜欢

热点阅读