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