本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法)

目录:

List(列表)
LPUSH LPUSHX RPUSH RPUSHX LPOP RPOP
BLPOP BRPOP LLEN LRANGE LREM LSET
LTRIM LINDEX LINSERT RPOPLPUSH BRPOPLUSH  

一、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 1
var_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 3
var_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 1
var_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 3
var_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 apple
var_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 cherry
var_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 3
var_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) empty var_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 // 移除所有的 value
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=2)
// 0 => string 'grape' (length=5)
// 1 => string 'cherry' (length=6)

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

具体实例:

<?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','peach');
$redis -> lPush('favorite_fruit','grape'); var_dump($redis -> lSet('favorite_fruit','1','pineapple')); // 将第一个元素替换为 pineapple
var_dump($redis -> lRange('favorite_fruit',0,-1));
// array (size=4)
// 0 => string 'grape' (length=5)
// 1 => string 'pineapple' (length=9)
// 2 => string 'apple' (length=5)
// 3 => string 'cherry' (length=6) var_dump($redis -> lSet('favorite_fruit','100','pitaya')); // boolean false , 对索引超过范围进行设置,设置不成功
var_dump($redis -> lSet('fake_key',1,'mango')); // boolean false , 对不存在的 key 进行设置,设置不成功

13、LTRIM

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

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

  (2)如果start下标比列表的最大下标end(LLEN list减去1)还要大,或者start > stop,LTRIM返回一个空列表(因为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为被移除的元素的数量。

具体实例:

<?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','peach');
$redis -> lPush('favorite_fruit','grape'); var_dump($redis -> lTrim('favorite_fruit',1,-1));
var_dump($redis -> lRange('favorite_fruit',0,-1));
// array (size=3)
// 0 => string 'peach' (length=5)
// 1 => string 'apple' (length=5)
// 2 => string 'cherry' (length=6) var_dump($redis -> lTrim('favorite_fruit',1,10)); // end > list 的长度,那就将 stop 值设为 end
var_dump($redis -> lRange('favorite_fruit',0,-1));
// array (size=2)
// 0 => string 'apple' (length=5)
// 1 => string 'cherry' (length=6) var_dump($redis -> lTrim('favorite_fruit',7,1)); // start > end 或 start > stop , 清空整个 list
var_dump($redis -> lRange('favorite_fruit',0,-1)); // 返回 array (size=0) empty

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)。

具体实例:

<?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','peach');
$redis -> lPush('favorite_fruit','grape'); var_dump($redis -> lIndex('favorite_fruit',2)); // string 'apple'
var_dump($redis -> lRange('favorite_fruit',0,-1)); // 原 list 表不变
// array (size=4)
// 0 => string 'grape' (length=5)
// 1 => string 'peach' (length=5)
// 2 => string 'apple' (length=5)
// 3 => string 'cherry' (length=6)

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),为寻找pivot过程中经过的元素数量。

具体实例:

<?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','peach');
$redis -> lPush('favorite_fruit','grape'); // The first case : 成功插入,返回列表长度
var_dump($redis -> lInsert('favorite_fruit','before','apple','Mango')); // int 5
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=5)
// 0 => string 'grape' (length=5)
// 1 => string 'peach' (length=5)
// 2 => string 'Mango' (length=5)
// 3 => string 'apple' (length=5)
// 4 => string 'cherry' (length=6) // The seconde case : 没有找到指定元素 ,返回 -1
var_dump($redis -> lInsert('favorite_fruit','before','not_exists','pitaya')); // int -1
var_dump($redis -> lRange('favorite_fruit',0,-1)); // 原 list 不变
//array (size=5)
// 0 => string 'grape' (length=5)
// 1 => string 'peach' (length=5)
// 2 => string 'Mango' (length=5)
// 3 => string 'apple' (length=5)
// 4 => string 'cherry' (length=6) // The third case : 没有找到指定元素 ,返回 0
var_dump($redis -> lInsert('fake_key','before','apple','watermelon')); // int 0

16、RPOPLPUSH

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

语法:

redis 127.0.0.1:6379> RPOPLPUSH SOURCE_KEY_NAME DESTINATION_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','apple');
$redis -> lPush('favorite_fruit','peach');
$redis -> lPush('favorite_fruit','grape'); // The first case : 若 source 和 desitination 相同,则尾旋转操作
var_dump($redis -> rpoplpush('favorite_fruit','favorite_fruit')); // cherry
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=4)
// 0 => string 'cherry' (length=6)
// 1 => string 'grape' (length=5)
// 2 => string 'peach' (length=5)
// 3 => string 'apple' (length=5) // The second case : 移动操作
var_dump($redis -> rpoplpush('favorite_fruit','other_list')); // apple
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=3)
// 0 => string 'cherry' (length=6)
// 1 => string 'grape' (length=5)
// 2 => string 'peach' (length=5) var_dump($redis -> lRange('other_list',0,-1));
//array (size=1)
// 0 => string 'apple' (length=5)

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)

具体实例:

<?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','peach');
$redis -> lPush('favorite_fruit','grape'); // The first case : 若 source 和 desitination 相同,则尾旋转操作
var_dump($redis -> brpoplpush('favorite_fruit','favorite_fruit',2)); // cherry ,并没有返回 time
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=4)
// 0 => string 'cherry' (length=6)
// 1 => string 'grape' (length=5)
// 2 => string 'peach' (length=5)
// 3 => string 'apple' (length=5) // The second case : 移动操作
var_dump($redis -> brpoplpush('favorite_fruit','other_list',2)); // apple ,并没有返回 time
var_dump($redis -> lRange('favorite_fruit',0,-1));
//array (size=3)
// 0 => string 'cherry' (length=6)
// 1 => string 'grape' (length=5)
// 2 => string 'peach' (length=5) var_dump($redis -> lRange('other_list',0,-1));
//array (size=1)
// 0 => string 'apple' (length=5) var_dump($redis -> brpoplpush('fake_key','desination_key',2)); // 等待 2s 后返回 false ,并没有返回 time

下一篇:redis在php中的应用(Set篇)

如有转载,请注明出处:http://www.cnblogs.com/chrdai/p/6841474.html

redis 在 php 中的应用(List篇)的更多相关文章

  1. redis 在 php 中的应用(Set篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) Redis的 Set 是 string 类型的无序集合.集合成员是 ...

  2. .NET 环境中使用RabbitMQ RabbitMQ与Redis队列对比 RabbitMQ入门与使用篇

    .NET 环境中使用RabbitMQ   在企业应用系统领域,会面对不同系统之间的通信.集成与整合,尤其当面临异构系统时,这种分布式的调用与通信变得越发重要.其次,系统中一般会有很多对实时性要求不高的 ...

  3. redis 在 php 中的应用(Sorted-set篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) Redis 有序集合和集合一样也是string类型元素的集合,且不 ...

  4. redis 在 php 中的应用(Connection [ 连接] 篇)

    本文为我阅读了 redis参考手册 之后编写,注意 php_redis 和 redis-cli 的区别(主要是返回值类型和参数用法) 目录: Connection(连接) AUTH ECHO PING ...

  5. Redis从入门到精通:初级篇

    原文链接:http://www.cnblogs.com/xrq730/p/8890896.html,转载请注明出处,谢谢 Redis从入门到精通:初级篇 平时陆陆续续看了不少Redis的文章了,工作中 ...

  6. Redis从入门到精通:中级篇

    原文链接:http://www.cnblogs.com/xrq730/p/8944539.html,转载请注明出处,谢谢 本文目录 上一篇文章以认识Redis为主,写了Redis系列的第一篇,现在开启 ...

  7. redis 在 php 中的应用

    一.redis 在 php 中的应用(Key篇) 二.redis 在 php 中的应用(String篇) 三.redis 在 php 中的应用(Hash篇) 四.redis 在 php 中的应用(Li ...

  8. 【*】Redis实战场景中相关问题

    一.Redis简介 redis主要解决的问题 分布式缓存是分布式系统中的重要组件,主要解决高并发.大数据场景下,热点数据访问的性能问题,提供高性能的数据快速访问. 使用缓存常见场景 项目中部分数据访问 ...

  9. Redis从入门到精通:中级篇(转)

    原文链接:http://www.cnblogs.com/xrq730/p/8944539.html,转载请注明出处,谢谢 本文目录 上一篇文章以认识Redis为主,写了Redis系列的第一篇,现在开启 ...

随机推荐

  1. SSIS获得Excel行号(转自http://blog.csdn.net/zplume/article/details/19113911)

    问题描述: 首先个人并不推荐将Excel作为数据源,因为Excel单元格式会引起特别多的数据转换问题,例如:单元格里明明是2.89,但SSIS抽取到数据库里面之后却变成了2.88999999之类的数据 ...

  2. js上课笔记

    Html 结构化CSS 样式JavaScript 行为交互01.JavaScript基础02.JavaScript操作BOM对象03.JavaScript操作DOM对象 *****04.JavaScr ...

  3. awk 复习

    awk 的再次学习!!!! awk 的一般模式 awk '{parttern + action }' {filename} , 提取/etc/passwd 的用户 awk -F ":&quo ...

  4. Overview of .rdp file settings

    On this page you will find an overview of most of the available .rdp file settings which can be used ...

  5. 【UNIX环境高级编程】文件I/O

    [UNIX环境高级编程]文件I/O大多数文件I/O只需要5个函数: open.read.write.lseek以及close 不带缓冲的I/O: 每个read和write都调用内核中的一个系统调用 1 ...

  6. Python 笔记 v1 - json和字符串互转

    字符串转为json对象并取值 >>> 使用了Json包中的loads()方法和dumps()方法 string =" { "status": " ...

  7. oracle学习笔记第三天

    --DML(Data Manipulation Language)--insert关键字 插入 ---语法1.元祖值式插入(一次插入一条记录)---格式:insert into 表名(列名1,列名2. ...

  8. numpy/pandas时间互相转换

    一图看懂互相转换:

  9. Spring Boo数据访问JDBC

    一.SpringBoot 访问JDBC原理 我们可以参考源代码:SpringBoot2中默认的数据源是使用HikariDataSource /** * Hikari DataSource config ...

  10. FPGA验证之SystemVerilog+UVM

    [转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545     数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...