redise数据结构之之字符串和链表

数据库 waitig 474℃ 百度已收录 0评论

字符串

1 SDS的定义

struct sdshdr {
 int len;//记录buf中使用的字节数量,=sds所保存字符串的长度
 int free;//记录buf中未使用的字节长度
 char buf[];//字节数组,用于保存字符串
 }

1.1 sds 与c字符串的区别

c要获取一个字符串必需遍历所有O(N),而sds因为有len所以只要访问len就可以知道其长度,O(1)

TablesC字符串SDS
api不安全可能会造成缓冲区溢出安全
修改字符串长度N次必须执行N次内存重分配最多N次
只能保存文本数据文本或者二进制数据

链表

被广泛用于实现redis的各种功能
双端链表
无环链表
可以吧平常各种不同类型的值


本文由【waitig】发表在等英博客
本文固定链接:redise数据结构之之字符串和链表
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)