Redis 数据类型及操作-列表

2023-04-15 14:34:21 浏览数 (1)

2. 列表(list)

列表是Redis中一种基于链表实现的数据类型,可以存储多个元素,并且支持在列表的两端进行元素的插入和删除操作。Redis中的列表可以用于实现队列和栈等数据结构。

2.1. LPUSH

LPUSH命令用于在列表的头部插入一个或多个元素,语法为:

代码语言:javascript复制
LPUSH key value [value ...]

其中,key为键名,value为要插入的元素值。如果键不存在,则创建一个新的列表。插入多个元素时,元素的顺序与它们在命令中出现的顺序相反。

例如,要在键名为list的列表的头部插入元素abc,可以使用以下命令:

代码语言:javascript复制
LPUSH list c b a

2.2. RPUSH

RPUSH命令用于在列表的尾部插入一个或多个元素,语法为:

代码语言:javascript复制
RPUSH key value [value ...]

其中,key为键名,value为要插入的元素值。如果键不存在,则创建一个新的列表。插入多个元素时,元素的顺序与它们在命令中出现的顺序相同。

例如,要在键名为list的列表的尾部插入元素abc,可以使用以下命令:

代码语言:javascript复制
RPUSH list a b c

2.3. LPOP

LPOP命令用于从列表的头部删除并返回一个元素,语法为:

代码语言:javascript复制
LPOP key

其中,key为键名。如果列表为空,则返回nil

例如,要从键名为list的列表的头部删除并返回一个元素,可以使用以下命令:

代码语言:javascript复制
LPOP list

2.4. RPOP

RPOP命令用于从列表的尾部删除并返回一个元素,语法为:

代码语言:javascript复制
RPOP key

其中,key为键名。如果列表为空,则返回nil

例如,要从键名为list的列表的尾部删除并返回一个元素,可以使用以下命令:

代码语言:javascript复制
RPOP list

2.5. LINDEX

LINDEX命令用于获取列表中指定位置的元素,语法为:

代码语言:javascript复制
LINDEX key index

其中,key为键名,index为要获取的元素的位置。如果index为正整数,则表示从头部开始计数,从0开始;如果index为负整数,则表示从尾部开始计数,从-1开始。

例如,要获取键名为list的列表的第一个元素和最后一个元素,可以使用以下命令:

代码语言:javascript复制
LINDEX list 0
LINDEX list -1

2.6. LLEN

LLEN命令用于获取列表的长度,即列表中包含的元素个数,语法为:

代码语言:javascript复制
LLEN key

其中,key为键名。如果键不存在,则返回0。

例如,要获取键名为list的列表的长度,可以使用以下命令:

代码语言:javascript复制
LLEN list

2.7. LRANGE

LRANGE命令用于获取列表中指定范围内的元素,语法为:

代码语言:javascript复制
LRANGE key start stop

其中,key为键名,start为要获取的元素的起始位置,stop为要获取的元素的结束位置(包含在内)。如果startstop都为正整数,则表示从头部开始计数,从0开始;如果startstop都为负整数,则表示从尾部开始计数,从-1开始。如果stop小于start,则返回一个空列表。

例如,要获取键名为list的列表中从第二个元素到第四个元素(包含在内)的元素,可以使用以下命令:

代码语言:javascript复制
LRANGE list 1 3

2.8. LINSERT

LINSERT命令用于在列表中指定元素的前面或后面插入一个新元素,语法为:

代码语言:javascript复制
LINSERT key BEFORE|AFTER pivot value

其中,key为键名,pivot为指定的元素值,value为要插入的新元素值。如果列表中存在多个与pivot相等的元素,则插入操作会在最左边的元素之前或最右边的元素之后执行。如果pivot不存在于列表中,则不进行任何操作。

例如,要在键名为list的列表中,在元素b的前面插入新元素x,可以使用以下命令:

代码语言:javascript复制
LINSERT list BEFORE b x

2.9. LREM

LREM命令用于从列表中删除指定数量的元素,语法为:

代码语言:javascript复制
LREM key count value

其中,key为键名,value为要删除的元素值,count为要删除的元素数量。如果count为正整数,则表示从头部开始查找并删除指定数量的与value相等的元素;如果count为负整数,则表示从尾部开始查找并删除指定数量的与value相等的元素;

如果count为0,则表示删除所有与value相等的元素。如果value不存在于列表中,则不进行任何操作。

例如,要在键名为list的列表中删除所有与元素a相等的元素,可以使用以下命令:

代码语言:javascript复制
LREM list 0 a

2.10. LPUSHX

LPUSHX命令用于在列表的头部插入一个新元素,仅在列表已经存在时才会执行插入操作,语法为:

代码语言:javascript复制
LPUSHX key value

其中,key为键名,value为要插入的新元素值。如果键不存在,则不进行任何操作。

例如,要在键名为list的列表头部插入新元素x,仅在该列表已经存在时才执行插入操作,可以使用以下命令:

代码语言:javascript复制
LPUSHX list x

2.11. RPUSHX

RPUSHX命令用于在列表的尾部插入一个新元素,仅在列表已经存在时才会执行插入操作,语法为:

代码语言:javascript复制
RPUSHX key value

其中,key为键名,value为要插入的新元素值。如果键不存在,则不进行任何操作。

例如,要在键名为list的列表尾部插入新元素x,仅在该列表已经存在时才执行插入操作,可以使用以下命令:

代码语言:javascript复制
RPUSHX list x

2.12. LTRIM

LTRIM命令用于截取列表中指定范围内的元素,从而保留指定范围内的元素,同时删除其余元素,语法为:

代码语言:javascript复制
LTRIM key start stop

其中,key为键名,start为要保留的元素的起始位置,stop为要保留的元素的结束位置(包含在内)。如果startstop都为正整数,则表示从头部开始计数,从0开始;如果startstop都为负整数,则表示从尾部开始计数,从-1开始。如果stop小于start,则保留一个空列表。注意,LTRIM命令会修改原有列表,因此谨慎使用。

例如,要在键名为list的列表中保留第二个元素到第四个元素(包含在内)的元素,删除其余元素,可以使用以下命令:

代码语言:javascript复制
LTRIM list 1 3

0 人点赞