Redis中集合(Set)的底层实现可以是intset或者hashtable。
- intset:当集合中的所有元素都是整数并且元素数量不多时,Redis会使用整数集合(intset)作为集合的底层实现。
- hashtable:当集合的元素不满足intset的条件时,Redis会使用哈希表(hashtable)作为集合的底层实现。
例如,以下是使用Redis命令操作集合的示例:
# 创建一个名为myset的集合,并添加几个元素
> SADD myset 1 "two" 3.0
# 查看myset的内容
> SMEMBERS myset
1) "1"
2) "two"
3) "3.0"
# 查看myset的底层实现
> OBJECT ENCODING myset
"intset" # 假设元素都是整数或能转换为整数
# 继续添加一个非整数元素
> SADD myset "four"
# 查看myset的底层实现变化
> OBJECT ENCODING myset
"hashtable" # 当集合包含不可以转换为整数的元素时,底层实现变为哈希表
以上命令展示了如何在Redis中创建一个集合,如何查看集合的内容,以及如何查看集合的底层实现。当我们向集合中添加非整数元素"four"时,集合的底层实现由原来的intset变为hashtable。