redis在数据满足一定要求的情况下,会将数据在内部用压缩列表(ziplist)的形式存储,与直接使用双向链表存储相比,这样可以大大降低内存占用。
压缩列表:每存储一个字符串需要两个整数,和字符串本身,其中两个整数一个记录前一个节点的长度,另一个记录当前节点的长度。
双向链表:每存储一个字符串,需要三个指针,两个整数,字符串本身,以及一个额外结束符字节,其中两个整数,一个是当前字符串的长度,另一个是字符串值剩余可用空间。
查看redis使用压缩列表的配置:
config get *max-*-entries*
查看某一个key在redis的存储情况:
DEBUG OBJECT <name_0f_key>
如果DEBUG OBJECT不能使用,可以使用:
OBJECT REFCOUNT <name_of_key>
OBJECT ENCODING <name_of_key>