REDIS 5种数据结构

字符串

redis是由c语言编写的,但是redis的字符串并不是c语言原生的字符串,而是叫sds的结构体,包含 free :空闲的字节数 len: 已经使用的字节数 char [] buf: 字符(字节)数组 。
使用SDS的好处是:获取字符串长度的复杂度为O(1) 因为C语言原生的字符串是不记录长度的,SDS的len就是长度的记录
并且不用每次修改字符串都要申请内存空间,比如新增长度小于 free的话就不用申请额外的空间, 减少了调用内核API的次数。
SDS是二进制安全的 ,除了可以存储文本 ,也能存储二进制数据
使用SDS不会造成缓冲区溢出.

Redis 5中有五主要的数据结构,它们分别是动态字符串SDS、整数集合lntSet、字典Dict、压缩列表ZipList、快速列表QuickList和跳跃表SkipList。动态字符串SDS是一Redis自己实现的字符串结构,它解决了C语言中字符串存在的一些问题,如获取字符串长度的运算复杂度、非二进制安全以及不可修改的问题。整数集合lntSet是一可以储存整数的集合结构,它能够高效地存储和操作整数,相较于一般的集合结构,它能够节省内存空间。字典Dict是一键值对映射的数据结构,它使用哈希表来实现,可以高效地进行插入、删除和查找操作。压缩列表ZipList是一紧凑的列表结构,可以在节省内存的同时存储多个元素,并支持快速地访问和修改。快速列表QuickList是一将多个压缩列表连接起来形成的链表式结构,可以高效地处理列表的前端和后端插入、删除和查找操作。跳跃表SkipList是一有序集合结构,类似于Java中的SortedSet和HashMap的结合体,它使用一叫作"跳跃列表"的数据结构来实现,可以高效地进行元素的插入、删除和查找操作。这些数据结构Redis中被广泛应用,每数据结构都有其特定的优势和用途。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Redis5数据结构解析](https://blog.csdn.net/weixin_46129192/article/details/125817565)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Redis的五基础数据结构](https://blog.csdn.net/yuyuanlai/article/details/106745757)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值