redis自学(10)Set

SetRedis中的单列集合,满足下列特点:

不保证有序性

保证元素唯一(可以判断元素是否存在)

求交集、并集、差集

 

 

以上操作,都需要判断元素是否存在,因此可以看出,Set对查询元素的效率要求非常高

 

SetRedis中的集合,不一定确保元素有序,可以满足元素唯一、查询效率要求极高。

为了查询效率和唯一性,set采用HashTable编码(Dict)。Dict中的key用来存储元素,value统一为null。(java里面的HashSet是同样的道理)

当存储的所有数据都是整数,并且元素数量不超过set-max-inset-entries时,Set会采用IntSet(底层看做是变长的数组,按照升序保存,用二分查找查找)编码,以节省内存。在每一次插入集合的时候,都会检查以上两个条件,一旦不符合,就会转换成HashTable编码。set-max-inset-entries的默认值为512,可修改但不建议太大,影响查询性能。

 

 

 

 

内存结构变化:

 

 

 

 

posted @ 2024-03-04 14:38  蓝海的bug本  阅读(4)  评论(0编辑  收藏  举报