Redis学习笔记(一):基本数据类型以及数据结构

String(字符串)

string 字符串(可以为整型、浮点型和字符串等,统称为元素)。

数据结构

String 的内部就是一个字符数组,Redis的字符串是动态字符串,是可以修改的字符串,它采用预分配的冗余空间的方式来减少内存的频繁分配,当字符串的长度小于1MB时,扩容都是加倍现有的空间。如果字符串的长度超过1MB,扩容时一次 只会多扩1MB的空间,需要注意的是字符串的最大长度为512MB。

List

list 列表(实现队列,元素不唯一,先入先出原则)。

数据结构

List数据结构是链表型的,类似于LinkedList。所以它的插入效率非常高,时间复杂度为O(1)。它的查询效率较慢,时O(n)。

但其实Redis内部,list结构又不是一个简单的链表,因为LinkedList的每一个节点都要保存上一个节点和下一个节点的指针,相对来说比数组型的列表更占空间。在Redis中,有一种压缩列表的存在zipList,它把少量的元素使用一个连续的内存空间,就像时数组一样,可以节省内存,而list结构就是由多个这种zipList串起来组成的,被称为快速链表quickList。

Hash

hash散列值(hash的key必须是唯一的)

数据结构

参考:https://blog.csdn.net/mccand1234/article/details/93411326

Set

set 集合(各不相同的元素)。

数据结构

redis的集合对象set的底层存储结构特别神奇,我估计一般人想象不到,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。是不是觉得用hashtable存储set是一件很神奇的事情。
set的底层存储intset和hashtable是存在编码转换的,使用intset存储必须满足下面两个条件,否则使用hashtable,条件如下:
1.结合对象保存的所有元素都是整数值
2.集合对象保存的元素数量不超过512个
参考地址:https://www.jianshu.com/p/28138a5371d0

Sort Set

有序集合

数据结构

https://www.cnblogs.com/reecelin/p/13368374.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值