redis小试牛刀01
2015-06-03 12:14
507 查看
简单动态字符串(SDS):simple dynamic string,C字符串最后多一个空字符,SDS比C字符串更适合redis
优点:1)C字符串长度要遍历,长度复杂度为O(n),SDS直接记录字符串长度,长度复杂度为O(1)
2)由于C字符串不记录字符串长度,易造成溢出,SDS空间分配策略完全杜绝缓冲区溢出的可能,因为在修改以前已经自动扩展至所需的大小
3)C字符串修改字符串长度可能造成内存溢出或者泄露,修改N次长度必须执行N次内存重新分配,SDS通过使用未使用空间解除了字符串长度和底层数据长度之间的关联,主要实现了空间预分配和惰性空间释放两种优化策略,修改N次长度最多执行N次内存重新分配
4)C字符串只能保存文本数据,SDS可以保存文本或者二进制数据
5)C字符串可以使用所有<string.h>库中的函数,SDS可以使用一部分<string.h>库中的函数
for example:set a a/rpush animal "chicken" "dog" "cat"
参考黄健宏老师的《Redis设计与实现》
优点:1)C字符串长度要遍历,长度复杂度为O(n),SDS直接记录字符串长度,长度复杂度为O(1)
2)由于C字符串不记录字符串长度,易造成溢出,SDS空间分配策略完全杜绝缓冲区溢出的可能,因为在修改以前已经自动扩展至所需的大小
3)C字符串修改字符串长度可能造成内存溢出或者泄露,修改N次长度必须执行N次内存重新分配,SDS通过使用未使用空间解除了字符串长度和底层数据长度之间的关联,主要实现了空间预分配和惰性空间释放两种优化策略,修改N次长度最多执行N次内存重新分配
4)C字符串只能保存文本数据,SDS可以保存文本或者二进制数据
5)C字符串可以使用所有<string.h>库中的函数,SDS可以使用一部分<string.h>库中的函数
for example:set a a/rpush animal "chicken" "dog" "cat"
参考黄健宏老师的《Redis设计与实现》
相关文章推荐
- Redis Nosql数据库
- 资源分享redis中文入门手册
- Redis 性能测试
- Redis缓存的安装和使用
- MAC运行redis
- Redis 存储分片之代理服务Twemproxy 测试
- Redis 存储分片之代理服务Twemproxy 测试
- redis介绍及常用命令
- SSDB 和redis benchmark对比
- php操作redis缓存方法分享
- 监控log文件,将得到的ip写入redis数据库
- Redis实现高并发分布式序列号
- Linux 安装Redis全过程日志
- Linux 安装Redis全过程日志
- Linux 安装Redis全过程日志
- Linux 安装Redis全过程日志
- redis字符串类型
- redis 模糊查询?
- Redis介绍及常用命令 ---主要是命令行操作
- redis在windows下安装和PHP中使用