首页 > 编程知识 正文

redislist命令大全,redis sentinel概述

时间:2023-05-05 02:04:07 阅读:232375 作者:1063

Redis - 列表LREM、LLEN、LINDEX、LINSERT、LSET、LRANGE、LTRIM命令介绍 LREM LREM key count value 可用版本: >= 1.0.0时间复杂度: O(N), N 为列表的长度。

根据参数count的值,移除列表中与参数value相等的元素。

演示

先push一些值进去。

127.0.0.1:6379> lpush list kaven jojo java kaven docker redis kaven vue kaven nginx springcloud kaven(integer) 12127.0.0.1:6379> lpush list mybatis kaven mybatisplus kaven rabbitmq kaven kafka k8s kaven juc jvm kaven(integer) 24127.0.0.1:6379> lrange list 0 -1 1) "kaven" 2) "jvm" 3) "juc" 4) "kaven" 5) "k8s" 6) "kafka" 7) "kaven" 8) "rabbitmq" 9) "kaven"10) "mybatisplus"11) "kaven"12) "mybatis"13) "kaven"14) "springcloud"15) "nginx"16) "kaven"17) "vue"18) "kaven"19) "redis"20) "docker"21) "kaven"22) "java"23) "jojo"24) "kaven"

当count大于0时,从表头开始向表尾搜索,移除与value相等的元素,数量为count。

127.0.0.1:6379> lrem list 4 kaven(integer) 4127.0.0.1:6379> lrange list 0 -1 1) "jvm" 2) "juc" 3) "k8s" 4) "kafka" 5) "rabbitmq" 6) "mybatisplus" 7) "kaven" 8) "mybatis" 9) "kaven"10) "springcloud"11) "nginx"12) "kaven"13) "vue"14) "kaven"15) "redis"16) "docker"17) "kaven"18) "java"19) "jojo"20) "kaven"

如果与value相等的元素数量小于count,就相当于移除与value相等的全部元素。

127.0.0.1:6379> lrem list 40 kaven(integer) 6127.0.0.1:6379> lrange list 0 -1 1) "jvm" 2) "juc" 3) "k8s" 4) "kafka" 5) "rabbitmq" 6) "mybatisplus" 7) "mybatis" 8) "springcloud" 9) "nginx"10) "vue"11) "redis"12) "docker"13) "java"14) "jojo"

当count小于0时,从表尾开始向表头搜索,移除与value相等的元素,数量为count的绝对值。

127.0.0.1:6379> del list(integer) 1127.0.0.1:6379> lpush list kaven jojo java kaven docker redis kaven vue kaven nginx springcloud kaven(integer) 12127.0.0.1:6379> lpush list mybatis kaven mybatisplus kaven rabbitmq kaven kafka k8s kaven juc jvm kaven(integer) 24127.0.0.1:6379> lrem list -6 kaven(integer) 6127.0.0.1:6379> lrange list 0 -1 1) "kaven" 2) "jvm" 3) "juc" 4) "kaven" 5) "k8s" 6) "kafka" 7) "kaven" 8) "rabbitmq" 9) "kaven"10) "mybatisplus"11) "mybatis"12) "springcloud"13) "nginx"14) "vue"15) "redis"16) "docker"17) "java"18) "jojo"

当count等于0时,移除表中所有与value相等的值。

127.0.0.1:6379> lrem list 0 kaven(integer) 4127.0.0.1:6379> lrange list 0 -1 1) "jvm" 2) "juc" 3) "k8s" 4) "kafka" 5) "rabbitmq" 6) "mybatisplus" 7) "mybatis" 8) "springcloud" 9) "nginx"10) "vue"11) "redis"12) "docker"13) "java"14) "jojo"

所以,LREM命令会返回被移除元素的数量。 因为不存在的key被视作空表,所以当key不存在时, LREM命令返回0。

127.0.0.1:6379> del list(integer) 1127.0.0.1:6379> lrem list 0 kaven(integer) 0 LLEN LLEN key 可用版本: >= 1.0.0时间复杂度: O(1)

返回列表key的长度。

演示

因为不存在的key被视作空表,所以当key不存在时, LLEN命令返回0。

127.0.0.1:6379> exists list(integer) 0127.0.0.1:6379> llen list(integer) 0

如果key不是列表类型,返回一个错误。

127.0.0.1:6379> set str "this is string"OK127.0.0.1:6379> llen str(error) WRONGTYPE Operation against a key holding the wrong kind of value

key存在并且是列表类型,返回列表key的长度。

127.0.0.1:6379> lpush list 1 2 3 4 5 6 7(integer) 7127.0.0.1:6379> lpush list 4 5 6 0(integer) 11127.0.0.1:6379> llen list(integer) 11 LINDEX LINDEX key index 可用版本: >= 1.0.0时间复杂度:O(N), N 为到达下标 index 过程中经过的元素数量。因此,对列表的头元素和尾元素执行 LINDEX 命令,复杂度为O(1)。

返回列表key中,下标为index的元素。

列表下标从0开始,并且-1表示倒数第一个元素,-2表示倒数第二个元素,以此类推。

演示

LINDEX命令返回列表中下标为index的元素。 如果index参数的值不在列表的区间范围内,返回(nil) 。

127.0.0.1:6379> lrange list 0 -1 1) "0" 2) "6" 3) "5" 4) "4" 5) "7" 6) "6" 7) "5" 8) "4" 9) "3"10) "2"11) "1"127.0.0.1:6379> lindex list 5"6"127.0.0.1:6379> lindex list 20(nil)127.0.0.1:6379> lindex list -1"1"127.0.0.1:6379> lindex list 0"0"

显然,如果key不是列表类型,LINDEX命令会返回一个错误。

LINSERT LINSERT key BEFORE|AFTER pivot value 可用版本: >= 2.2.0时间复杂度: O(N), N 为寻找 pivot 过程中经过的元素数量。

将值value插入到列表key当中,位于值pivot之前或之后。

演示

当pivot不存在于列表key时,LINSERT命令不执行任何操作。如果没有找到pivot ,返回-1。

127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"127.0.0.1:6379> linsert list before 7 6(integer) -1127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"

如果key不存在或为空列表,返回0。

127.0.0.1:6379> exists list(integer) 0127.0.0.1:6379> linsert list before 1 0(integer) 0127.0.0.1:6379> lpush list 0(integer) 1127.0.0.1:6379> lpop list"0"127.0.0.1:6379> linsert list before 1 0(integer) 0

如果命令执行成功,返回插入操作完成之后列表的长度。

127.0.0.1:6379> lrange list 0 -11) "5"2) "3"3) "2"4) "1"5) "0"127.0.0.1:6379> linsert list after 5 4(integer) 6127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"6) "0"

显然,如果key不是列表类型,LINSERT命令也会返回一个错误。

LSET LSET key index value 可用版本: >= 1.0.0时间复杂度:对头元素或尾元素进行 LSET 操作,复杂度为 O(1)。其他情况下,为 O(N), N 为列表的长度。

将列表key下标为index的元素的值设置为value。

演示

以下四种情况,执行LSET命令会返回一个错误:

当index参数超出列表区间范围。key不存在。key为空列表。key存在但不是列表类型。 127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"6) "0"127.0.0.1:6379> lset list 10 9(error) ERR index out of range127.0.0.1:6379> del list(integer) 1127.0.0.1:6379> lset list 0 0(error) ERR no such key127.0.0.1:6379> lpush list 0(integer) 1127.0.0.1:6379> lpop list"0"127.0.0.1:6379> lset list 0 0(error) ERR no such key127.0.0.1:6379> set str "this is string"OK127.0.0.1:6379> lset str 0 0(error) WRONGTYPE Operation against a key holding the wrong kind of value

执行LSET命令成功后返回ok。

127.0.0.1:6379> lrange list 0 -11) "5"2) "3"3) "2"4) "1"5) "0"127.0.0.1:6379> lset list 0 4OK127.0.0.1:6379> lrange list 0 -11) "4"2) "3"3) "2"4) "1"5) "0"127.0.0.1:6379> lset list -1 "index -1"OK127.0.0.1:6379> lrange list 0 -11) "4"2) "3"3) "2"4) "1"5) "index -1" LRANGE LRANGE key start stop 可用版本: >= 1.0.0时间复杂度: O(S+N), S 为偏移量 start , N 为指定区间内元素的数量

返回列表key中指定区间内的元素,区间以偏移量start和stop指定。

并且-1表示列表的倒数第一个元素,-2表示列表的倒数第二个元素,以此类推。

演示

偏移量start或stop的值超出列表区间范围,不会引起错误。

127.0.0.1:6379> lrange list 0 1001) "4"2) "3"3) "2"4) "1"5) "index -1"127.0.0.1:6379> lrange list -100 -11) "4"2) "3"3) "2"4) "1"5) "index -1"127.0.0.1:6379> lrange list 7 -1(empty list or set)127.0.0.1:6379> lrange list 7 10(empty list or set)127.0.0.1:6379> lrange list 3 101) "1"2) "index -1"127.0.0.1:6379> lrange list 10 3(empty list or set)

显然,如果key不是列表类型,LRANGE命令也会返回一个错误。

127.0.0.1:6379> get str"this is string"127.0.0.1:6379> lrange str 0 1(error) WRONGTYPE Operation against a key holding the wrong kind of value LTRIM LTRIM key start stop 可用版本: >= 1.0.0时间复杂度: O(N), N 为被移除的元素的数量

对列表key进行修剪(trim),让列表key只保留指定区间内的元素,不在指定区间内的元素都将被删除。

并且-1表示列表的倒数第一个元素,-2表示列表的倒数第二个元素,以此类推。

演示

偏移量start或stop的值超出列表区间范围,不会引起错误。命令执行成功时,返回ok。

127.0.0.1:6379> del list(integer) 1127.0.0.1:6379> lpush list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16(integer) 16127.0.0.1:6379> lrange list 0 -1 1) "16" 2) "15" 3) "14" 4) "13" 5) "12" 6) "11" 7) "10" 8) "9" 9) "8"10) "7"11) "6"12) "5"13) "4"14) "3"15) "2"16) "1"127.0.0.1:6379> ltrim list 6 -1OK127.0.0.1:6379> lrange list 0 -1 1) "10" 2) "9" 3) "8" 4) "7" 5) "6" 6) "5" 7) "4" 8) "3" 9) "2"10) "1"127.0.0.1:6379> ltrim list 2 1000OK127.0.0.1:6379> lrange list 0 -11) "8"2) "7"3) "6"4) "5"5) "4"6) "3"7) "2"8) "1"127.0.0.1:6379> ltrim list -5 -1OK127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"127.0.0.1:6379> ltrim list 10 100OK127.0.0.1:6379> lrange list 0 -1(empty list or set)

当start的值大于end的值,会将列表中所有的值全部清空,至少我这个版本是这样的。

127.0.0.1:6379> lrange list 0 -11) "5"2) "4"3) "3"4) "2"5) "1"127.0.0.1:6379> ltrim list 4 2OK127.0.0.1:6379> lrange list 0 -1(empty list or set)127.0.0.1:6379> lpush list 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16(integer) 16127.0.0.1:6379> ltrim list 5 1OK127.0.0.1:6379> lrange list 0 -1(empty list or set)

显然,当key不是列表类型时,LTRIM命令会返回一个错误。

127.0.0.1:6379> get str"this is string"127.0.0.1:6379> ltrim str 0 1(error) WRONGTYPE Operation against a key holding the wrong kind of value

Redis中列表的LREM、LLEN、LINDEX、LINSERT、LSET、LRANGE、LTRIM命令就介绍到这里。

写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。