最近在看《redis的设计与实现》,虽然自己也记了些笔记,但还是把它写成博客记录下来。希望能对别人也有帮助。
对象的类型
redis中有五大对象类型,分别是字符串对象、列表对象、哈希对象、集合对象和有序集合对象。
因为redis是以key - value的形式放置数据的。对于键值对来说,键总是一个字符串对象,而值可以是字符串对象、列表对象、哈希对象、集合对象和有序集合对象其中的一种。
根据不同的场景,同一个对象的底层实现也是不同的。与实现方式相对应的就是对象的编码方式。这让redis可以根据不同的场景来为一个对象设置不同的编码(底层实现)而优化对象在某一场景下的效率。
可以使用OBJECT ENCODING
命令查看数据库键的值对象的编码方式。
字符串对象
编码方式 : int 、 embstr 、 raw
如果字符串对象保存的是一个整数,那么底层会用一个long保存值,并把编码设置为int。
如果字符串保存的是字符串,并且字符串值的长度大于32个字节,那么字符串对象会使用一个SDS(redis自带的有关String的数据结构)来保存值,并将对象的编码设置为raw。
如果保存的是字符串,