redis对象list

发布于:2024-04-02 ⋅ 阅读:(56) ⋅ 点赞:(0)

Redis List是一组连接起来的字符串集合。

在这里插入图片描述

写操作:

LPUSH

语法:LPUSH key value [value …]
功能:从头部增加元素,返回值为List中元素的总数。

RPUSH

语法:RPUSH key value [value …]
功能:从尾部增加元素,返回值为List中元素的总数。

LPOP

语法:LPOP key
功能:移出并获取列表的第一个元素。

LREM

语法:LREM key count value
功能:移除值等于value的元素。当count=0,则移除所有等于Fvalue的元
素。当count>0,则从左到右开始移除count个。当count<0则从右到左移除
count个。返回值为被移除元素的数量。

DEL

语法:DEL key[key …]
功能:删除对象,返回值为删除成功了几个键。

UNLINK

语法:UNLINK key [key …]
功能:删除对象,返回值为删除成功了几个键。

和DEL主要有如下不同:

del命令同步删除命令,会阻塞客户端,直到删除完成。unlink 命令是异步
删除命令,只是取消Key在键空间的关联,让其不再能查到,删除是异步进
行,所以不会阻塞客户端。

LLEN

语法:LLEN key
功能:查看List的长度,即List中元素的总数。

LRANGE

语法:LRANGE key start stop
功能:查看start到stop为角标的元素。

编码方式

3.2版本之前,List对象有两种编码方式,一种ZIPLIST,另一种是
LINKEDLIST。

在这里插入图片描述

ZIPLIST

当满足如下条件时,用ZIPLIST编码:
1.列表对象保存的所有字符串对象长度都小于64字节;
2.列表对象元素个数少于512个,注意,这是LIST的限制,而不是ZIPLIST的
限制;
在这里插入图片描述
可以看到,“hello”、“niuniu”、"mart"都挨在一起,正如其名字一样。ZIPLIST内存排列得很紧凑,可以有效节约内存空间。

LINKEDLIST

如果不满足ZIPLIST编码的条件,则使用LINKEDLIST编码。为了便于描述,
我们还是假设列表中包含"hello"、“niuniu”、"mart"三个元素,如果用
LINKEDLIST编码,则是几个String对象的链接结构,结构示意意图如下:
在这里插入图片描述

QUICKLIST横空出世

LINKEDLIST原来是单个节点,只能存一个数据,现在单个节点存的是一个
ZIPLIST,即多个数据。

在这里插入图片描述

在redis7.0之后,压缩列表listpack完全取代了ziplist.

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到