PHP 中 Redis 常用操作(list 类型)

Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)

一个列表最多可以包含232 - 1 个元素 (4294967295, 每个列表超过40亿个元素)。

将元素压入链表(lPush)

lPush() 方法将数据从左侧压入列表

rPush() 方法将数据从右侧压入列表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$redis->lPush('list1', 'v1', 'v2', 'v3', 'v4')
$redis->lPush('list2', 'v1', 'v2', 'v3', 'v4')

var_dump( $redis->lRange('list1', 0, -1) );
var_dump( $redis->lRange('list2', 0, -1) );

// list1:
// array(4) {
// [0]=> string(2) "v4"
// [1]=> string(2) "v3"
// [2]=> string(2) "v2"
// [3]=> string(2) "v1"
// }

// list2:
// array(4) {
// [0]=> string(2) "v1"
// [1]=> string(2) "v2"
// [2]=> string(2) "v3"
// [3]=> string(2) "v4"
// }

在某个位置插入新元素(lInsert)

Redis::BEFORE 在之前插入

Redis::AFTER 在之后插入

1
2
3
4
5
$redis->lPush('list1', 'A', 'B', 'C', 'v4')
$redis->lInsert('list', Redis::BEFORE, 'C', 'X');
$redis->lInsert('list', Redis::AFTER, 'C', 'Y');
$redis->lRange('list', 0, -1);
// array('A', 'B', 'X', 'C''Y')

设置、获取某个元素的值(lSet、lGet)

lSet() 方法可以通过下标修改链表元素的值,下标是从0开始
lGet() 方法可以通过下标获取链表元素的值,下标是从0开始

1
2
3
4
$redis->lPush('list1', 'A', 'B', 'C')
$redis->lGet('key1', 0); // 'A'
$redis->lSet('key1', 0, 'X');
$redis->lGet('key1', 0); // 'X'

获取列表元素个数(lLen)

1
2
$length = $redis->lLen('list');
echo $length;

获取下标对应的元素(lIndex)

1
2
$val = $redis->lIndex('list', 1);
echo $val;

获取某个选定范围元素集(lRange)

通过起止下标来获取列表某个范围内的元素集

1
2
3
4
$arr = $redis->lRange('list', 0, 1); //前两个元素
$arr = $redis->lRange('list', 0, -1); //全部元素
$arr = $redis->lRange('list', -2, -1); //后两个元素
var_dump($arr);

从列表左侧弹出数据(lPop)

lPop() 方法将数据从列表左侧弹出,返回弹出的元素,数据元素在list中消失。

rPop() 右侧弹出

1
2
3
$redis->lPush('list', 'A', 'B', 'C')
$val = $redis->lPop('list'); // list => [ 'B', 'C' ]
$val = $redis->rPop('list'); // list => [ 'B' ]

根据值移除元素(lRem)

根据值来移除元素,并且可以指定要移除的元素个数,因为 list 中可能出现重复的元素

1
2
3
4
$redis->lPush('list', 'A', 'A', 'C', 'B', 'A')
$redis->lRange('key1', 0, -1); // array('A', 'A', 'C', 'B', 'A')
$redis->lRem('key1', 'A', 2);
$redis->lRange('key1', 0, -1); // array('C', 'B', 'A')

0 comments
Anonymous
Markdown is supported

Be the first person to leave a comment!