php redis 扩展类常用操作(4) - list

Redis list 是简单的字符串列表。

一个列表最多可以包含2的32次方减1个元素(每个列表可存超过40亿个元素)

列表元素从左向右排列

1. blPop - 移出并获取列表的第一个元素,如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
$redis->lPush('list', 'A');
$redis->lPush('list', 'B');
$redis->lPush('list', 'C');
$rs = $redis->blPop('list', 10);
// 如果列表为空,等待10秒后 返回空数组; 否则,返回包含2个元素的数组,第一个是被弹出元素所属的 key , 第二个是被弹出元素的值; 
/* 输出: 
  array(2) {
  [0]=>
  string(4) "list"
  [1]=>
  string(1) "C"
}
*/
2. brPop - 移出并获取列表的最后一个元素,如果列表没有元素会阻塞列表 直到等待超时或发现可弹出元素为止
$redis->brPop('list', 10);
/* 输出
  array(2) { 
   [0]=> string(4) "list" ’
   [1]=> string(1) "A" 
  }
*/
3. brpoplpush - 从列表中取出最后一个元素,并插入到另外一个列表的头部; 如果列表没有元素会阻塞列表 直到等待超时或发现可弹出元素为止
$rs = $redis->brpoplpush('list', 'list1', 10);
var_dump($rs);
/* 输出
string(1) "B"
*/
4. lindex - 用于通过索引获取列表中的元素
//下标0 表示列表的第一元素; -1 表示列表的最后一个元素;
// 如果指定索引值不在列表的区间范围内,返回 false
$redis->lPush('mylist', 'world', 'hello');
$redis->lIndex('mylist',0); // 返回 world
$redis->lIndex('mylist',2); // 返回 false 

5. linsert - 在列表的元素前或后插入元素
$redis->lPush('key1', 'A');
$redis->lPush('key1', 'B');
$redis->lPush('key1', 'C');

$redis->lInsert('key1', Redis::BEFORE, 'C', 'X');
$rs = $redis->lRange('key1', 0, -1);
var_dump($rs);
/* 输出
 array(4) {
  [0]=>
  string(1) "X"
  [1]=>
  string(1) "C"
  [2]=>
  string(1) "B"
  [3]=>
  string(1) "A"
}
 */

$redis->lInsert('key1', Redis::AFTER, 'C', 'Y');
$rs = $redis->lRange('key1', 0, -1);
var_dump($rs);
/* 输出
 array(5) {
  [0]=>
  string(1) "X"
  [1]=>
  string(1) "C"
  [2]=>
  string(1) "Y"
  [3]=>
  string(1) "B"
  [4]=>
  string(1) "A"
}
*/
6. lLen - 获取列表长度
$redis->lLen('key1');

7. lPop - 移出并获取列表的第一个元素
 $redis->lPop('key1');
 
8. lPush - 将一个或多个值插入到列表头部
// 如果 key 不存在,一个空列表会被创建拼执行 lpush 操作;
// 当 key 存在但不是列表类型时,返回false; 
$redis->lPush('key1', 'AA');

9. lPushx - 将一个值插入到已存在的列表头部
 // 列表存在时,返回当前列表元素个数; 列表不存在时返回 0; 
 // 如果 key 存在且不是列表类型时,返回 false
 $redis->lPushx('key1','CC');
 
10. lRange - 获取列表指定范围内的元素
// 0 表示列表的第一个元素; -1 表示列表的最后一个元素
$redis->lRange('key1', 0, -1);

11. lRem - 移除列表元素
// lRem(key, value, count)
// count > 0: 从表头开始向表尾搜索,移除与 value 相等的元素,数量为 count 
// count < 0 : 从表头开始向表尾搜索,移除与 value 相等的元素,数据为 count 的绝对值; 
// count = 0: 移除表中所有与 value 相关的值 
$redis->lRange('key1', 0, -1);
$redis->lRem('key1', 'AA', 0);
$redis->lRange('key1', 0, -1);

12. lSet - 通过索引设置列表元素的值
$redis->lSet('key1', 0, 'bar');

13. lTrim - 对一个列表修剪
// 让列表只保留指定区间内的元素,不在指定区间这内的元素都将被删除
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C');
$rs = $redis->lRange('key1', 0, -1);
var_dump($rs);
$redis->lTrim('key1', 0, 1);
$rs = $redis->lRange('key1',0,-1);
var_dump($rs);
/* 输出 
array(3) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
  [2]=>
  string(1) "C"
}

array(2) {
  [0]=>
  string(1) "A"
  [1]=>
  string(1) "B"
}
*/

14. rPop - 移除列表的最后一个元素,返回值为移除的元素。
 $redis->rPop('key1');
 
15. rpoplpush - 移除列表的最后一个元素,并将该元素添加到另一个列表并返回
$redis->lPush('x', 'abc');
$redis->lPush('x','def');
$redis->lPush('y', '123');
$redis->lPush('y', '456');

$rs = $redis->rpoplpush('x', 'y');
var_dump($rs);
var_dump($redis->lRange('x', 0, -1));
var_dump($redis->lRange('y', 0, -1));

16. rPush - 从列表尾部添加一个或多个元素
$redis->rPush('key1', 'A');
$redis->rPush('key1', 'B');
$redis->rPush('key1', 'C');
$rs = $redis->lRange('key1', 0, -1);

17. rPushx - 在已存在的列表尾部添加值
$redis->rPushx('key1', 'D');
$redis->lRange('key1', 0, -1);

你可能感兴趣的:(php redis 扩展类常用操作(4) - list)