> 백엔드 개발 > PHP 튜토리얼 > Redis 관련 명령

Redis 관련 명령

不言
풀어 주다: 2023-03-24 09:44:02
원래의
1247명이 탐색했습니다.

이 글에서 소개한 내용은 Redis 관련 명령어에 관한 것으로, 어느 정도 참고할만한 가치가 있어서 이제 모두와 공유합니다. 필요한 친구들이 참고하면 됩니다.

php_redis와 redis-cli의 차이점에 주목하세요(주로 반환값) 유형 및 매개변수 사용법) )

디렉토리:

목록
LPUSH LPUSHX RPUSH RPUSHX LPOP RPOP
BLPOP BRPOP LLEN LRANGE LREM LSET
LTRI M LINDEX LINSERT RPOPLPUSH BRPOPLUSH  

1. 목록

1. LPUSH

Redis Lpush 명령목록의 선두에 하나 이상의 값을 삽입합니다. 키가 없으면 빈 목록이 생성되고 LPUSH 작업이 수행됩니다. 키가 존재하지만 목록 유형이 아닌 경우 오류가 반환됩니다. (Redis 2.4 이전의 LPUSH 명령은 단일 값 값만 허용했습니다.)

구문: ​​

redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN
로그인 후 복사

반환 값: LPUSH 명령 실행 후 목록의 길이입니다.

사용 가능한 버전: >= 1.0.0

시간 복잡성: O(1)

구체적인 예:


Redis 관련 명령

rreee

Redis 관련 명령

2, LPUSHX

Redis Lpushx 기존 목록의 헤드에 하나 이상의 값을 삽입합니다. 목록이 없으면 작업이 유효하지 않습니다.

구문: ​​

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;));     // key 不存在,创建一个新的列表, 返回 int 1var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;));     // key 存在。但是 list 类型, 返回 int 2$redis -> set(&#39;pats&#39;,&#39;dog&#39;);var_dump($redis -> lPush(&#39;pats&#39;,&#39;cat&#39;));     // key 存在。但不是是 list 类型, 返回 boolean false
로그인 후 복사

반환 값: LPUSHX 명령이 실행된 후 목록의 길이입니다.

可用版本: >= 2.2.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();var_dump($redis -> rPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;));var_dump($redis -> rPush(&#39;favorite_fruit&#39;,&#39;banana&#39;));var_dump($redis -> lPushx(&#39;favorite_fruit&#39;,&#39;apple&#39;));     //  返回 int 3var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=3)
//      0 => string &#39;apple&#39; (length=5)
//      1 => string &#39;cherry&#39; (length=6)
//      2 => string &#39;banana&#39; (length=6)var_dump($redis -> lPushx(&#39;fake_key&#39;,&#39;invalid_val&#39;));     //  列表不存在时操作无效返回 int (0)
로그인 후 복사

Redis 관련 명령

3、RPUSH

  Redis Rpush 命令用于将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。(注意:在 Redis 2.4 版本以前的 RPUSH 命令,都只接受单个 value 值)。

语法:

redis 127.0.0.1:6379> RPUSH KEY_NAME VALUE1..VALUEN
로그인 후 복사

返回值: 执行 RPUSH 操作后,列表的长度。

可用版本: >= 1.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();var_dump($redis -> rPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;));     // key 不存在,创建一个新的列表, 返回 int 1var_dump($redis -> rPush(&#39;favorite_fruit&#39;,&#39;banana&#39;));     // key 存在。但是 list 类型, 返回 int 2$redis -> set(&#39;pats&#39;,&#39;dog&#39;);var_dump($redis -> rPush(&#39;pats&#39;,&#39;cat&#39;));     // key 存在。但不是是 list 类型, 返回 boolean false
로그인 후 복사

Redis 관련 명령

4、RPUSHX

  Redis Rpushx 命令用于将一个或多个值插入到已存在的列表尾部(最右边)。如果列表不存在,操作无效。

语法:

redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN
로그인 후 복사

返回值:执行 Rpushx 操作后,列表的长度。

可用版本: >= 2.2.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;));var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;));var_dump($redis -> rPushx(&#39;favorite_fruit&#39;,&#39;apple&#39;));     //  返回 int 3var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=3)
//      0 => string &#39;banana&#39; (length=6)
//      1 => string &#39;cherry&#39; (length=6)
//      2 => string &#39;apple&#39; (length=5)var_dump($redis -> rPushx(&#39;fake_key&#39;,&#39;invalid_val&#39;));     //  列表不存在时操作无效返回 int (0)
로그인 후 복사

Redis 관련 명령

5、LPOP

   Redis Lpop 命令用于移除并返回列表的第一个元素。

语法:

redis 127.0.0.1:6379> LPOP KEY_NAME
로그인 후 복사

返回值:列表的第一个元素。 当列表 key 不存在时,返回 nil 。

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;));var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;));var_dump($redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;));var_dump($redis -> lPop(&#39;favorite_fruit&#39;));             // string applevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=2)
//      0 => string &#39;banana&#39; (length=6)
//      1 => string &#39;cherry&#39; (length=6)
로그인 후 복사

Redis 관련 명령

6、RPOP

   Redis Rpop 命令用于移除并返回列表的最后一个元素。

语法:

redis 127.0.0.1:6379> RPOP KEY_NAME
로그인 후 복사

返回值:列表的最后一个元素。 当列表不存在时,返回 nil 。

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);var_dump($redis -> rPop(&#39;favorite_fruit&#39;));             // string cherryvar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=2)
//      0 => string &#39;apple&#39; (length=5)
//      1 => string &#39;banana&#39; (length=6)
로그인 후 복사

Redis 관련 명령

7、BLPOP

   Redis Blpop 命令移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

   (1)当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。
   (2)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长

   (3)在MULTI/EXEC事务中的BLPOP,行为表现得就像LPOP一样,对空列表返回nil,对非空列表弹出列表元素,不进行任何阻塞操作。

语法:

redis 127.0.0.1:6379> BLPOP LIST1 LIST2 .. LISTN TIMEOUT
로그인 후 복사

返回值:如果列表为空,返回一个 nil 。 否则,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

可用版本:>= 2.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();// This first case: 非阻塞行为,最少有一个非空列表$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;pats&#39;,&#39;dog&#39;);$redis -> lPush(&#39;pats&#39;,&#39;cat&#39;);$redis -> lPush(&#39;pats&#39;,&#39;rabbit&#39;);var_dump($redis -> blPop(&#39;favorite_fruit&#39;,3));//  array (size=2)
//      0 => string &#39;favorite_fruit&#39; (length=14)
//      1 => string &#39;apple&#39; (length=5)$array_blpop = array(&#39;favorite_fruit&#39;,&#39;pats&#39;);var_dump($redis -> blPop($array_blpop,3));          // 优先弹出第一个非空列表的头元素
//  array (size=2)
//      0 => string &#39;favorite_fruit&#39; (length=14)
//      1 => string &#39;banana&#39; (length=6)var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=1)
//      0 => string &#39;cherry&#39; (length=6)

// This second case: 阻塞行为, 所有给定key都不存在或包含空列表var_dump($redis -> blPop(&#39;fake_key&#39;,2));    // 阻塞链接, 2s 之后超时结束,返回 array (size=0) empty
로그인 후 복사

Redis 관련 명령

8、BRPOP

   Redis Brpop 命令移出并获取列表的最后一个元素, 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

   (1)当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的尾部元素。
   (2)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长

   (3)在MULTI/EXEC事务中的BLPOP,行为表现得就像RPOP一样,对空列表返回nil,对非空列表弹出列表元素,不进行任何阻塞操作。

语法:

redis 127.0.0.1:6379> BRPOP LIST1 LIST2 .. LISTN TIMEOUT
로그인 후 복사

返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素所属的 key ,第二个元素是被弹出元素的值。

可用版本:>= 2.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();// This first case: 非阻塞行为,最少有一个非空列表$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;pats&#39;,&#39;dog&#39;);$redis -> lPush(&#39;pats&#39;,&#39;cat&#39;);$redis -> lPush(&#39;pats&#39;,&#39;rabbit&#39;);var_dump($redis -> brPop(&#39;favorite_fruit&#39;,3));//  array (size=2)
//      0 => string &#39;favorite_fruit&#39; (length=14)
//      1 => string &#39;cherry&#39; (length=6)$array_brpop = array(&#39;favorite_fruit&#39;,&#39;pats&#39;);var_dump($redis -> brPop($array_brpop,3));          // 优先弹出第一个非空列表的头元素
//  array (size=2)
//      0 => string &#39;favorite_fruit&#39; (length=14)
//      1 => string &#39;banana&#39; (length=6)var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=1)
//      0 => string &#39;apple&#39; (length=5)

// This second case: 阻塞行为, 所有给定key都不存在或包含空列表var_dump($redis -> brPop(&#39;fake_key&#39;,2));    // 阻塞链接, 2s 之后超时结束,返回 array (size=0) empty
로그인 후 복사

Redis 관련 명령

9、LLEN

  Redis Llen 命令用于返回列表的长度。 如果列表 key 不存在,则 key 被解释为一个空列表,返回 0 。 如果 key 不是列表类型,返回一个错误。

语法:

redis 127.0.0.1:6379> LLEN KEY_NAME
로그인 후 복사

返回值:列表的长度。

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);var_dump($redis -> lLen(&#39;favorite_fruit&#39;));     // int 3var_dump($redis -> lLen(&#39;fake_key&#39;));           // 列表不存在,返回 int 0
로그인 후 복사

Redis 관련 명령

10、LRANGE

  Redis Lrange 返回列表中指定区间内的元素,区间以偏移量 START 和 END 指定。 其中 0 表示列表的第一个元素, 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

  (1)超出范围的下标值不会引起错误。

  (2)如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stopLRANGE返回一个空列表。

  (3)如果stop下标比end下标还要大,Redis将stop的值设置为end

语法:

redis 127.0.0.1:6379> LRANGE KEY_NAME START END
로그인 후 복사

返回值:一个列表,包含指定区间内的元素。

可用版本:>= 1.0.0

时间复杂度:O(S+N),S为偏移量startN为指定区间内元素的数量。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;banana&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;pineapple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);var_dump($redis -> lRange(&#39;favorite_fruit&#39;,1,3));//   array (size=3)
//      0 => string &#39;pineapple&#39; (length=9)
//      1 => string &#39;peach&#39; (length=5)
//      2 => string &#39;apple&#39; (length=5)var_dump($redis -> lRange(&#39;favorite_fruit&#39;,6,2));     // 当 start > end 时,返回空数组, array (size=0) emptyvar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,100));   // 当 end 大于列表长度时,按 end 值计算
//  array (size=6)
//      0 => string &#39;grape&#39; (length=5)
//      1 => string &#39;pineapple&#39; (length=9)
//      2 => string &#39;peach&#39; (length=5)
//      3 => string &#39;apple&#39; (length=5)
//      4 => string &#39;banana&#39; (length=6)//      5 => string &#39;cherry&#39; (length=6)
로그인 후 복사

Redis 관련 명령

11、LREM

  Redis Lrem 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

  COUNT 的值可以是以下几种:

  • count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。

  • count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。

  • count = 0 : 移除表中所有与 VALUE 相等的值。

语法:

redis 127.0.0.1:6379> LREM KEY_NAME COUNT VALUE
로그인 후 복사

返回值:被移除元素的数量。 列表不存在时返回 0 。

可用版本:>= 1.0.0

时间复杂度:O(N),N为列表的长度。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);var_dump($redis -> lRem(&#39;favorite_fruit&#39;,&#39;apple&#39;,2));   // int 2    // 从开头向结尾方向移除 2 个var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=4)
//  0 => string &#39;grape&#39; (length=5)
//  1 => string &#39;peach&#39; (length=5)
//  2 => string &#39;apple&#39; (length=5)
//  3 => string &#39;cherry&#39; (length=6)var_dump($redis -> lRem(&#39;favorite_fruit&#39;,&#39;apple&#39;,-1));   // int1    // 从结尾向开头方向移除 1 个var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=3)
//  0 => string &#39;grape&#39; (length=5)
//  1 => string &#39;peach&#39; (length=5)
//  2 => string &#39;cherry&#39; (length=6)var_dump($redis -> lRem(&#39;favorite_fruit&#39;,&#39;peach&#39;,0));   // int 1    // 移除所有的 valuevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=2)
//  0 => string &#39;grape&#39; (length=5)
//  1 => string &#39;cherry&#39; (length=6)
로그인 후 복사

Redis 관련 명령

12、LSET

  Redis Lset 通过索引来设置元素的值。当索引参数超出范围,或对一个空列表进行 LSET 时,返回一个错误。

语法:

redis 127.0.0.1:6379> LSET KEY_NAME INDEX VALUE
로그인 후 복사

返回值:操作成功返回 ok ,否则返回错误信息。

可用版本:>= 1.0.0

时间复杂度:对头元素或尾元素进行LSET操作,复杂度为O(1)。其他情况下,为O(N),N为列表的长度。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);var_dump($redis -> lSet(&#39;favorite_fruit&#39;,&#39;1&#39;,&#39;pineapple&#39;));   // 将第一个元素替换为 pineapplevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=4)
//      0 => string &#39;grape&#39; (length=5)
//      1 => string &#39;pineapple&#39; (length=9)
//      2 => string &#39;apple&#39; (length=5)
//      3 => string &#39;cherry&#39; (length=6)var_dump($redis -> lSet(&#39;favorite_fruit&#39;,&#39;100&#39;,&#39;pitaya&#39;));   // boolean false , 对索引超过范围进行设置,设置不成功var_dump($redis -> lSet(&#39;fake_key&#39;,1,&#39;mango&#39;));              // boolean false , 对不存在的 key 进行设置,设置不成功
로그인 후 복사

Redis 관련 명령

13、LTRIM

  Redis Ltrim 对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。(下标 0 表示列表的第一个元素,以 1 表示列表的第二个元素,以此类推。 你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推)。

  (1)超出范围的下标值不会引起错误。

  (2)如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stopLTRIM返回一个空列表(因为LTRIM已经将整个列表清空)。

  (3)如果stop下标比end下标还要大,Redis将stop的值设置为end

语法:

redis 127.0.0.1:6379> LTRIM KEY_NAME START STOP
로그인 후 복사

返回值:命令执行成功时,返回 ok

可用版本:>= 1.0.0

时间复杂度:O(N),N为被移除的元素的数量。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);var_dump($redis -> lTrim(&#39;favorite_fruit&#39;,1,-1));var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=3)
//      0 => string &#39;peach&#39; (length=5)
//      1 => string &#39;apple&#39; (length=5)
//      2 => string &#39;cherry&#39; (length=6)var_dump($redis -> lTrim(&#39;favorite_fruit&#39;,1,10));   // end > list 的长度,那就将 stop 值设为 endvar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//  array (size=2)
//      0 => string &#39;apple&#39; (length=5)
//      1 => string &#39;cherry&#39; (length=6)var_dump($redis -> lTrim(&#39;favorite_fruit&#39;,7,1));        // start > end 或 start > stop , 清空整个 listvar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));     // 返回 array (size=0) empty
로그인 후 복사

Redis 관련 명령

14、LINDEX

  Redis Lindex 命令用于通过索引获取列表中的元素。你也可以使用负数下标,以 -1 表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。

语法:

redis 127.0.0.1:6379> LINDEX KEY_NAME INDEX_POSITION
로그인 후 복사

返回值:列表中下标为指定索引值的元素。 如果指定索引值不在列表的区间范围内,返回 nil 。

可用版本:>= 1.0.0

时间复杂度:O(N),N为到达下标index过程中经过的元素数量, 对列表的头元素和尾元素执行LINDEX命令,复杂度为O(1)。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);var_dump($redis -> lIndex(&#39;favorite_fruit&#39;,2));     // string &#39;apple&#39;var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));  // 原 list 表不变
//  array (size=4)
//      0 => string &#39;grape&#39; (length=5)
//      1 => string &#39;peach&#39; (length=5)
//      2 => string &#39;apple&#39; (length=5)
//      3 => string &#39;cherry&#39; (length=6)
로그인 후 복사

Redis 관련 명령

15、LINSERT

  Redis Linsert 命令用于在列表的元素前或者后插入元素。 当指定元素不存在于列表中时,不执行任何操作。 当列表不存在时,被视为空列表,不执行任何操作。 如果 key 不是列表类型,返回一个错误。

语法:

redis 127.0.0.1:6379> LINSERT KEY_NAME BEFORE EXISTING_VALUE NEW_VALUE
로그인 후 복사

返回值:如果命令执行成功,返回插入操作完成之后,列表的长度。 如果没有找到指定元素 ,返回 -1 。 如果 key 不存在或为空列表,返回 0 。

可用版本:>= 1.0.0

时间复杂度:O(N),N 为寻找pivot过程中经过的元素数量。

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);// The first case : 成功插入,返回列表长度var_dump($redis -> lInsert(&#39;favorite_fruit&#39;,&#39;before&#39;,&#39;apple&#39;,&#39;Mango&#39;));     // int 5var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=5)
//  0 => string &#39;grape&#39; (length=5)
//  1 => string &#39;peach&#39; (length=5)
//  2 => string &#39;Mango&#39; (length=5)
//  3 => string &#39;apple&#39; (length=5)
//  4 => string &#39;cherry&#39; (length=6)

// The seconde case : 没有找到指定元素 ,返回 -1var_dump($redis -> lInsert(&#39;favorite_fruit&#39;,&#39;before&#39;,&#39;not_exists&#39;,&#39;pitaya&#39;));     // int -1var_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));      // 原 list 不变
//array (size=5)
//  0 => string &#39;grape&#39; (length=5)
//  1 => string &#39;peach&#39; (length=5)
//  2 => string &#39;Mango&#39; (length=5)
//  3 => string &#39;apple&#39; (length=5)
//  4 => string &#39;cherry&#39; (length=6)

// The third case : 没有找到指定元素 ,返回 0var_dump($redis -> lInsert(&#39;fake_key&#39;,&#39;before&#39;,&#39;apple&#39;,&#39;watermelon&#39;));     // int 0
로그인 후 복사

Redis 관련 명령

16、RPOPLPUSH

  Redis Rpoplpush 命令用于移除列表的最后一个元素,并将该元素添加到另一个列表并返回。

语法:

redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_KEY_NAME
로그인 후 복사

返回值:被弹出的元素。

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);// The first case : 若 source 和 desitination 相同,则尾旋转操作var_dump($redis -> rpoplpush(&#39;favorite_fruit&#39;,&#39;favorite_fruit&#39;));   // cherryvar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=4)
//  0 => string &#39;cherry&#39; (length=6)
//  1 => string &#39;grape&#39; (length=5)
//  2 => string &#39;peach&#39; (length=5)
//  3 => string &#39;apple&#39; (length=5)

// The second case : 移动操作var_dump($redis -> rpoplpush(&#39;favorite_fruit&#39;,&#39;other_list&#39;));   // applevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=3)
//  0 => string &#39;cherry&#39; (length=6)
//  1 => string &#39;grape&#39; (length=5)
//  2 => string &#39;peach&#39; (length=5)var_dump($redis -> lRange(&#39;other_list&#39;,0,-1));//array (size=1)
//  0 => string &#39;apple&#39; (length=5)
로그인 후 복사

Redis 관련 명령

17、BRPOPLPUSH

  Redis Brpoplpush 命令从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。

  (1)当给定列表source不为空时,BRPOPLPUSH的表现和RPOPLPUSH一样。

  (2)当列表source为空时,BRPOPLPUSH命令将阻塞连接,直到等待超时,或有另一个客户端对source执行LPUSH或RPUSH命令为止。

  (3)超时参数timeout接受一个以秒为单位的数字作为值。超时参数设为0表示阻塞时间可以无限期延长

语法:

redis 127.0.0.1:6379> BRPOPLPUSH LIST1 ANOTHER_LIST TIMEOUT
로그인 후 복사

返回值:假如在指定时间内没有任何元素被弹出,则返回一个 nil 和等待时长。 反之,返回一个含有两个元素的列表,第一个元素是被弹出元素的值,第二个元素是等待时长。

可用版本:>= 2.0.0

时间复杂度:O(1)

具体实例:


Redis 관련 명령

<?php$redis = new redis();$redis -> connect(&#39;127.0.0.1&#39;,6379);$redis -> flushAll();$redis -> lPush(&#39;favorite_fruit&#39;,&#39;cherry&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;apple&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;peach&#39;);$redis -> lPush(&#39;favorite_fruit&#39;,&#39;grape&#39;);// The first case : 若 source 和 desitination 相同,则尾旋转操作var_dump($redis -> brpoplpush(&#39;favorite_fruit&#39;,&#39;favorite_fruit&#39;,2));   // cherry ,并没有返回 timevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=4)
//  0 => string &#39;cherry&#39; (length=6)
//  1 => string &#39;grape&#39; (length=5)
//  2 => string &#39;peach&#39; (length=5)
//  3 => string &#39;apple&#39; (length=5)

// The second case : 移动操作var_dump($redis -> brpoplpush(&#39;favorite_fruit&#39;,&#39;other_list&#39;,2));   // apple ,并没有返回 timevar_dump($redis -> lRange(&#39;favorite_fruit&#39;,0,-1));//array (size=3)
//  0 => string &#39;cherry&#39; (length=6)
//  1 => string &#39;grape&#39; (length=5)
//  2 => string &#39;peach&#39; (length=5)var_dump($redis -> lRange(&#39;other_list&#39;,0,-1));//array (size=1)
//  0 => string &#39;apple&#39; (length=5)var_dump($redis -> brpoplpush(&#39;fake_key&#39;,&#39;desination_key&#39;,2));  // 等待 2s 后返回 false  ,并没有返回 time
로그인 후 복사

相关推荐:

php redis 운영 매뉴얼

Windows에서 PHP용 redis 확장 설치

위 내용은 Redis 관련 명령의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿