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);
网友评论