首页 > 数据库 >Redis深度历险 核心原理与应用实践-笔记

Redis深度历险 核心原理与应用实践-笔记

时间:2023-10-24 10:13:01浏览次数:32  
标签:1MB Redis 笔记 列表 链表 字符串 历险 数据结构

 

1.2.2 5种基础数据结构

string(字符串)

字符串string是Redis最简单的数据结构,其内部表示就是一个字符数组。Redis所有的数据结构都是以唯一的key字符串作为名称,然后通过这唯一的key来获取相应的value数据。不同类型的数据结构差异就在于value的结果不一样。

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

 

list(列表)

Redis的列表 相当于Java语言里的LinkList, 链表结构。Redis的列表结构常用来做异步队列。 将需要延后处理的任务结构体序列化成字符串,塞进redis 列表中,另一个线程从这个列表中轮训数据进行处理。

【右边进左边出:对列】

【右边进右边出:栈】

【慢操作】 lindex相当于java链表的get(int index)方法,需要对链表进行遍历,性能会随着index增大而变差

【快速列表】redis底层存储的是一个 “快速链表”的结构。首先在列表元素较少的情况下,会使用一块连续的内存存储,这个结构是ziplist(压缩列表)。它将所有元素彼此紧挨着一起存储,分配的是一块连续的内存。当数据量比较多的时候才会改成quicklist。 所以redis将链表与ziplist结合起来形成quicklist,也就是将多个ziplist使用双向指针串起来使用。既能满足快速插入删除性能,也不会出现太大的空间冗余。

 

 

 

标签:1MB,Redis,笔记,列表,链表,字符串,历险,数据结构
From: https://www.cnblogs.com/xiaodeyao/p/17784087.html

相关文章

  • Django+celery+eventlet+flower+redis异步任务创建及查询实现
    1.环境版本:Django3.2.12celery5.3.4eventlet0.33.3flower2.0.1redis3.5.3项目名称:new_project2.celery配置(settings.py)#celery#django-celery配置的部分#Broker配置,使用Redis作......
  • centos安装redis
    redis安装1、安装gcc环境如果没有安装gcc会出现错误(此时需要删除文件夹重新解压)    yuminstallgcc-c++2、redis-5.0.5.tar.gz下载    官网下载地址:https://redis.io/download3、上传redis安装包   上传“redis-5.0.5.tar.gz”到/opt/softwar......
  • Redis主从复制部署小结
    Redis主从搭建主从架构单节点Redis的并发能力是有上限的,要进一步提高Redis的并发能力,就需要搭建主从集群,实现读写分离。主从数据同步原理全量同步主从第一次建立连接时,会执行全量同步,将master节点的所有数据都拷贝给slave节点,流程:这里有一个问题,master如何得知salve是第一......
  • 阅读笔记 2: 重构的实际应用
    第6章介绍了如何重新组织数据,这是一个常见的重构任务。作者详细讨论了数据类和数据结构的不同,以及如何选择合适的数据组织方式以改善代码质量。在本章中,福勒讲述了一些具体的数据重构技巧,如封装字段(EncapsulateField)、以及如何将数据类的职责划分得更加清晰。他提到了代码中的数......
  • 《需求分析与系统设计》阅读笔记1
    《需求分析与系统设计》首先强调,理解这本书的核心在于认识到需求分析与系统设计是一门应用性知识,阅读虽然重要,但更为关键的是通过错误的实践、错误分析,并尽力避免未来可能出现的错误。第一章着重探讨了导致软件失败的原因,以及问题出现时应采取的解决方法。这部分的内容被认为尤......
  • 之前笔记全记本子上了,一直也没整理……
    JavaScript自定义对象定义格式:var对象名={属性名(变量名)1:属性值1,    …………     …………函数名称(方法名):function(形参列表){}};eat;function(){alert("吃");}......
  • uboot配置usbhost及代码初步分析--Apple的学习笔记
    一,前言之前uboot没配置过usb,但是现在uboot基于DM模型基本和linuxdriver类似了。那么为了学习linuxdriver,我可以先学习uboot来做技术储备也是一样的。而且usb在uboot上应该也有用武之地,所以有必要进行刻意练习。二,分析1,之前对发现driver用了wraper的方式来打包进行绑定,我理解唯一......
  • 数论学习笔记
    目录前言数论基础1.1整除1.2带余除法,同余质数2.1唯一分解定理2.2质数筛(线性筛)2.3欧拉函数最大公因数/最小公倍数3.1辗转相除法3.2裴蜀定理3.2扩展欧几里得算法线性同余方程4.1费马小定理4.2欧拉定理4.3逆元4.4求解线性同余方程4.5中国剩......
  • openGauss学习笔记-107 openGauss 数据库管理-管理用户及权限-三权分立
    openGauss学习笔记-107openGauss数据库管理-管理用户及权限-三权分立默认权限机制和管理员两节的描述基于的是openGauss创建之初的默认情况。从前面的介绍可以看出,默认情况下拥有SYSADMIN属性的系统管理员,具备系统最高权限。在实际业务管理中,为了避免系统管理员拥有过度集中的......
  • 【python笔记】杂乱版
    numpy.tile的作用importnumpyasnp#重复一个标量值scalar=5result1=np.tile(scalar,3)print(result1)#输出:[5,5,5]#重复一个数组arr=[1,2,3]result2=np.tile(arr,2)print(result2)#输出:[1,2,3,1,2,3]#在两个维度上进行不同次数的重......