脚本宝典收集整理的这篇文章主要介绍了Redis 数据结构之String,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
目的
Redis现在是各个系统几乎都在使用的一种分布式高可用的缓存内存中的数据结构存储系统。可以作为数据库、缓存消息中间件、订阅发布系统等。我们都知道redis中有string、sets、sorted sets、hash、list类型。但是这些我们经常使用的数据结构的底层是怎么实现的。今天先记录一下string的结构。主要是参照Redis设计与实现和一些网上的资料总结的一个学习笔记。
C语言字符串和SDS在Redis中的使用
redis是用C语言实现的,所以在redis中的string有一些是直接使用C语言的字符串。但是在redis中还使用了叫做简单动态字符串(simple dynamic string)。redis中的string主要就是使用这两种string。但是什么时候用哪种呢?具体我们来看一下。
C语言string:主要使用在一些无序对字符串进行修改的地方,比如说作为key、打印日志
SDS:SDS是redis中默认字符串表示。几乎用于所有需要使用字符串操作的地方,包括AOF缓冲区等模块。
我们举一个例子:
redis> set aaa "bbb"
这个时候aaa使用的是C语言字符串,bbb则是使用SDS
RPUSH list "aaa" "bbb" "ccc"
list这个key使用的是C语言字符串,aaa bbb ccc则是使用了3个SDS来保存
SDS定义
SDS的定义其实很简单,一共有3个属性。len、free、buf