Set是Redis中的单列集合,满足下列特点:
不保证有序性
保证元素唯一(可以判断元素是否存在)
求交集、并集、差集
以上操作,都需要判断元素是否存在,因此可以看出,Set对查询元素的效率要求非常高
Set是Redis中的集合,不一定确保元素有序,可以满足元素唯一、查询效率要求极高。
为了查询效率和唯一性,set采用HashTable编码(Dict)。Dict中的key用来存储元素,value统一为null。(java里面的HashSet是同样的道理)
当存储的所有数据都是整数,并且元素数量不超过set-max-inset-entries时,Set会采用IntSet(底层看做是变长的数组,按照升序保存,用二分查找查找)编码,以节省内存。在每一次插入集合的时候,都会检查以上两个条件,一旦不符合,就会转换成HashTable编码。set-max-inset-entries的默认值为512,可修改但不建议太大,影响查询性能。
内存结构变化:
标签:10,set,编码,元素,redis,查询,Set,entries From: https://www.cnblogs.com/bulesea/p/18051772