redis集合

背景

与列表不同的是,集合不能有重复数据,列表可以有重复数据。
数据无序,列表数据是有序的。

对外数据结构

集合的数据结构
1.数据
2.大小
3.内部数据结构
整数集合intset还是hashtable


数据的数据结构
1.数据
2.大小
3.数据的内部编码类型 不是数据结构类型,而是int16 int32 int64

内部数据结构

1.整数集合intset
2.hashtable

整数集合就是,两个条件1.数据的数量百位数级别(500)2.且数据类型是整数,的情况下,就使用整数集合。其他情况就使用hashtable。

hashtable是因为所有的集合Set的底层实现数据结构都是使用的hashtable,因为映射的key不能重复,这样就确保了集合Set的数据不重复。


如何确保数据不重复?
1.整数集合intset
比较数据

2.hashtable
比较数据


连续内存和映射的区别?

整数集合intset

和压缩列表的区别
压缩列表不保证数据重复,而整数集合intset必须确保数据不能重复。


升级
如果插入新的数据的数据类型不一样,需要升级,实现步骤
1.扩展内存
内存不够,扩展内部
2.转换数据类型
转换旧的数据类型为新的数据类型
3.插入新的数据
这个步骤叫升级。

速度
如果数据类型不一样,每次插入新的数据都要升级,每次升级都要遍历所有数据,所以速度是N。好在数据不多,所以不影响速度。

升级的好处
1.最大程度节约内存
2.灵活性

之所以要升级的本质原因是数据的数据类型不一样,数据类型不一样的本质原因是尽可能的节约内存。

降级
不会降级,升级之后就不会降级。

参考

黄建宏

转载于:https://juejin.im/post/5ce8d7c7e51d4577614760be

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值