Redis数据结构和对象(一)
来源:互联网 发布:剑三脸型数据怎么修改 编辑:程序博客网 时间:2024/06/06 08:25
Redis数据结构和对象(一)
Redis数据结构和对象(二)
Redis数据结构和对象(三)
Redis数据结构和对象(五)
Redis数据结构和对象(六)
Redis数据结构和对象(七)——对象
一,简单动态字符串(SDS)
- 1,用途:保存数据库中的字符串值,及用作缓冲区(AOF)。
- 2,数据结构。
- 3,SDS与C字符串的区别。
- 1)常数复杂度获取字符串长度。SDS会记录自身的长度信息。
- 2)杜绝缓冲区溢出。C字符串不记录自身长度很容易造成缓冲区溢出。
- 3)减少修改字符串时带来的内存重分配次数。
- a) c字符串内存重分配。
- 拼接:拼接前需要内存重分配,扩展底层数组的大小,——如果忘了可能会导致缓存区溢出。
- 截断:截断后,程序需要内存重分配来释放字符串,不再使用那部分空间——如果忘了会导致内存泄漏。
- b) SDS通过记录free属性。实现空间预分配和惰性空间释放两种优化方式。
- 空间预分配:程序会为SDS分配修改所需的空间,还会为SDS分配额外的未使用空间。公式:小于1MB,len属性值会和free属性值相同;大于1MB,每次增加1MB
- 惰性空间释放:缩短SDS保存的字符串时,不立即使用内存重分配来回收缩短后的多出来的字符串,而是保留在free属相中,待将来使用。SDS也提供了相应的API,可以在需要的时候释放SDS未使用的空间。
- a) c字符串内存重分配。
- 4)二进制安全。
- a) c字符串只能保存二进制文件,二不能保存图片,视频,压缩文件。因为字符串内不能包含其他的空字符。
- b) SDS的buf属性被称为字节数组——SDS会通过len属性来判断字符串是否已经结束。
- 5)兼容部分C字符串函数。
0 0
- Redis数据结构和对象(一)
- 重现Redis--数据结构与对象(一)
- Redis内部实现(数据结构和对象)
- Redis数据结构和对象(二)
- Redis数据结构和对象(三)
- Redis数据结构和对象(五)
- Redis数据结构和对象(六)
- Redis之一:数据结构和对象
- Redis数据结构(一)
- Redis数据结构和对象(七)——对象
- Redis学习(一)-数据结构
- redis数据结构整理(一)
- Redis的数据结构(一)
- redis基础数据结构和数据对象
- 《Redis设计与实现》[第一部分]数据结构与对象-C源码阅读(一)
- 重现Redis--数据结构与对象(二)
- 重现Redis--数据结构与对象(三)
- redis数据结构之对象
- bootstrap源码阅读(一)——modal原理
- 如何实现浏览器兼容版的window.getComputedStyle
- iOS -类方法
- KK's Reconstruction
- Linux Mint (专题五:压缩工具)
- Redis数据结构和对象(一)
- Linux开发环境搭建(二)
- 在window7系统下安装双系统 之--Redhat
- pom.xml详解
- LeetCode 300: Longest Increasing Subsequence
- openHEVC在Windows下编译—VS2013+Win7为例子
- d3.partitioin知识整理
- UVa 10082 WERTYU
- VS2013创建opencv-2.4.10静态链接库