Redis 列表(List)

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

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

操作方法

方法列表

方法名称参数说明备注
lPush$key, …$data将一个或多个值插入到列表头部
bLPop$keys,$timeout移出并获取$keys列表的第一个元素, 如果$keys列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止$keys可为string,也可以为一个数组
bRPop$keys,$timeout移出并获取$keys列表的最后一个元素, 如果$keys列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。$keys可为string,也可以为一个数组
bRPopLPush$source, $destination, $timeout从列表中弹出一个值,将弹出的元素插入到另外一个列表中并返回它; 如果列表没有元素会阻塞列表直到等待超时或发现可弹出元素为止。
rPopLPush$source, $destination移除列表的最后一个元素,并将该元素添加到另一个列表并返回
lIndex$key,$index通过索引获取列表中的元素
lLen$key获取列表长度
lInsert$key,$bool,$pivot,$value在列表的元素前或者后插入元素
rPush$key, …$data在列表中添加一个或多个值
lRange$key,$start,$stop获取列表指定范围内的元素
lPop$key移出并获取列表的第一个元素
rPop$key移出并获取列表的最后一个元素
lPuShx$key,$value将一个值插入到已存在的列表头部
rPuShx$key,$value为已存在的列表添加值
lRem$key,$count,$value移除列表元素
lSet$key,$index,$value通过索引设置列表元素的值
lTrim$key,$start,$stop对一个列表进行修剪(trim),就是说,让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。

基本使用

  1. go(function () {
  2. $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
  3. 'host' => '127.0.0.1',
  4. 'port' => '6379',
  5. 'auth' => 'easyswoole',
  6. 'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
  7. ]));;
  8. $key = [
  9. 'listKey1',
  10. 'listKey2',
  11. 'listKey3',
  12. ];
  13. $value = [
  14. 'a', 'b', 'c', 'd'
  15. ];
  16. $redis->flushAll();
  17. //测试null的时候
  18. $data = $redis->bLPop([$key[0],$key[1]], 1);
  19. var_dump($data);
  20. $data = $redis->lPush($key[0], $value[0], $value[1]);
  21. var_dump($data);
  22. //测试null的时候
  23. $data = $redis->bLPop([$key[1]], 1);
  24. var_dump($data);
  25. $data = $redis->bRPop([$key[1]], 1);
  26. var_dump($data);
  27. $data = $redis->bLPop([$key[0],$key[1]], 1);
  28. var_dump($data);
  29. $data = $redis->bRPop([$key[0],$key[1]], 1);
  30. var_dump($data);
  31. $redis->del($key[0]);
  32. $redis->lPush($key[0], $value[0], $value[1]);
  33. $data = $redis->bRPopLPush($key[0], $key[1], 1);
  34. var_dump($data);
  35. $redis->del($key[0]);
  36. $redis->lPush($key[0], $value[0], $value[1]);
  37. $data = $redis->rPopLPush($key[0], $key[1]);
  38. var_dump($data);
  39. $redis->del($key[0]);
  40. $redis->lPush($key[0], $value[0], $value[1]);
  41. $data = $redis->lIndex($key[0], 1);
  42. var_dump($data);
  43. $data = $redis->lLen($key[0]);
  44. var_dump($data);
  45. $data = $redis->lInsert($key[0], true, 'b', 'c');
  46. var_dump($data);
  47. $data = $redis->lInsert($key[0], true, 'd', 'c');
  48. var_dump($data);
  49. $redis->del($key[1]);
  50. $data = $redis->rPush($key[1], $value[0], $value[2], $value[1]);
  51. var_dump($data);
  52. $data = $redis->lRange($key[1], 0, 3);
  53. var_dump($data);
  54. $data = $redis->lPop($key[1]);
  55. var_dump($data);
  56. $data = $redis->rPop($key[1]);
  57. var_dump($data);
  58. $data = $redis->lPuShx($key[1], 'x');
  59. var_dump($data);
  60. $data = $redis->rPuShx($key[1], 'z');
  61. var_dump($data);
  62. $redis->del($key[1]);
  63. $redis->rPush($key[1], $value[0], $value[0], $value[0]);
  64. $data = $redis->lRem($key[1], 1, $value[0]);
  65. var_dump($data);
  66. $data = $redis->lSet($key[1], 0, 'xx');
  67. var_dump($data);
  68. $data = $redis->lTrim($key[1], 0, 2);
  69. var_dump($data);
  70. });