Redis 存储的字符编码解析(redis字符编码)

Redis 是一个开源的、支持网络、基于内存、可选持久性的键值对存储数据库。它支持多种类型的数据结构,例如字符串、散列、列表、集合、有序集合等。即使不能直接保存字符串,Redis 也通过一套规则将字符串进行编码,以便存储字符数据,如果要查询到存储的字符数据,则需要解码,这里先讲一下字符编码和解码规则。

Redis 使用特定的编码保存字符串,包括 intset 编码,ziplist 编码,Linked List 编码,哈希表编码,可以根据不同的字符串使用不同的编码来节省空间。intset 编码是 Redis 对整数进行编码,ziplist 编码是 Redis 对字符串和整数进行压缩编码,Linked List 编码是 Redis 使用指针将字符串连接在一起编码的。Redis 还使用特定的哈希表开头的编码来将字符串组织成为字典或hash表。

编码完字符串之后就需要解码来查看,当然也是根据之前的编码操作进行解码,intset 解码时读取节点编号,ziplist 解码时读取 值 的长度,Linked List 解码时读取指针,哈希表解码时读取特定格式的头部,哈希表的解码方式与其他3中编码不一样,它在解码的时候会遍历哈希表中的每一个键值对,然后向用户报告回来即可。

下面给出一个Redis的编码示例:

127.0.0.1:6379> set key1 "hello world" 
OK
127.0.0.1:6379> get key1
"hello world"

上面的示例中,我们使用 SET 命令将一个字符串“hello world”保存到 key1 的键上,之后使用 GET 命令取出key1 的值,可以看出字符串保存及解析都比较简单。

通过前面的内容得知,Redis 通过特定的编码规则将字符串进行编码。解码时则需要选择正确的操作解析出字符串,这就是 Redis 存储的字符编码解析。


数据运维技术 » Redis 存储的字符编码解析(redis字符编码)