当前位置:Gxlcms > PHP教程 > Redis相关命令

Redis相关命令

时间:2021-07-01 10:21:17 帮助过:6人阅读

这篇文章介绍的内容是关于Redis相关命令 ,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法)

目录:

List(列表)
LPUSHLPUSHXRPUSHRPUSHXLPOPRPOP
BLPOPBRPOPLLENLRANGELREMLSET
LTRIMLINDEXLINSERTRPOPLPUSHBRPOPLUSH

一、List(列表)

1、LPUSH

Redis Lpush 命令将一个或多个值插入到列表头部。 如果 key 不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key 存在但不是列表类型时,返回一个错误。(在Redis 2.4版本以前的 LPUSH 命令,都只接受单个 value 值。)

语法:

redis 127.0.0.1:6379> LPUSH KEY_NAME VALUE1.. VALUEN

返回值: 执行 LPUSH 命令后,列表的长度。

可用版本: >= 1.0.0

时间复杂度:O(1)

具体实例:


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

2、LPUSHX

Redis Lpushx 将一个或多个值插入到已存在的列表头部,列表不存在时操作无效。

语法:

redis 127.0.0.1:6379> LPUSHX KEY_NAME VALUE1.. VALUEN

返回值: LPUSHX 命令执行之后,列表的长度。

可用版本: >= 2.2.0

时间复杂度:O(1)

具体实例:


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

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)

具体实例:


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

4、RPUSHX

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

语法:

redis 127.0.0.1:6379> RPUSHX KEY_NAME VALUE1..VALUEN

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

可用版本: >= 2.2.0

时间复杂度:O(1)

具体实例:


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

5、LPOP

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

语法:

redis 127.0.0.1:6379> LPOP KEY_NAME

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

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();var_dump($redis -> lPush('favorite_fruit','cherry'));var_dump($redis -> lPush('favorite_fruit','banana'));var_dump($redis -> lPush('favorite_fruit','apple'));var_dump($redis -> lPop('favorite_fruit'));             // string applevar_dump($redis -> lRange('favorite_fruit',0,-1));//  array (size=2)
//      0 => string 'banana' (length=6)
//      1 => string 'cherry' (length=6)

6、RPOP

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

语法:

redis 127.0.0.1:6379> RPOP KEY_NAME

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

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');var_dump($redis -> rPop('favorite_fruit'));             // string cherryvar_dump($redis -> lRange('favorite_fruit',0,-1));//  array (size=2)
//      0 => string 'apple' (length=5)
//      1 => string 'banana' (length=6)

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)

具体实例:


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

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

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)

具体实例:


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

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

9、LLEN

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

语法:

redis 127.0.0.1:6379> LLEN KEY_NAME

返回值:列表的长度。

可用版本:>= 1.0.0

时间复杂度:O(1)

具体实例:


<?php$redis = new redis();$redis -> connect('127.0.0.1',6379);$redis -> flushAll();$redis -> lPush('favorite_fruit','cherry');$redis -> lPush('favorite_fruit','banana');$redis -> lPush('favorite_fruit','apple');var_dump($redis -> lLen('favorite_fruit'));     // int 3var_dump($redis -> lLen('fake_key'));           // 列表不存在,返回 int 0

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为指定区间内元素的数量。

具体实例:


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

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为列表的长度。

具体实例:


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

人气教程排行