title: redis协程客户端 meta:

  • name: description content: redis协程客户端,由swoole 协程client实现,覆盖了redis 99%的方法
  • name: keywords content: swoole|swoole 拓展|swoole 框架|EasySwoole redis| Swoole redis协程客户端|swoole Redis|redis协程

键操作方法

方法列表

方法名称 参数 说明 备注
set $key, $val, $timeout = 0 设置一个键,以及设置过期时间,单位秒 $timeout值可为int(过期时间秒),可为string(“NX”,”XX”),也可为array[‘NX’,’EX’=>10]
get $key 获取一个键
getRange $key, $start, $end 返回子字符串
getSet $key, $value 返回key旧值并设置新值
getBit $key, $offset 获取指定偏移量上的bit值
mGet $keys 获取多个key的值(参数可为string或者数组) 在集群中,将会分开处理
setBit $key, $offset, $value 设置偏移量的bit值
setEx $key, $expireTime, $value 设置值以及过期时间(秒)
setNx $key, $value key不存在时设置 key 的值。
setRange $key, $offset, $value 设置偏移量的值
strLen $key 返回 key 所储存的字符串值的长度
mSet $data 设置多个key的值,参数为关联数组
mSetNx $data 当所有key不存在时,设置多个key值,参数和mSet一样 在集群中,key将会分开处理
pSetEx $key, $expireTime, $value 同setEx,过期时间为毫秒
incr $key 自增1
incrBy $key, $value 自增$value数值
incrByFloat $key, $value 自增$value浮点值
decr $key 自减1
decrBy $key, $value 自减$value数值
appEnd $key, $value 追加字符串
scan &$cursor, $pattern=null, $count=null 迭代string键名 集群模式不能使用

::: warning 如果开启序列化配置,getRange,setRange,getBit,setBit,strLen,自增自减命令,append等都会失效 :::

::: warning 在集群中,批量设置,批量获取都是拆数组一个个处理的,所以mSetNx 的特性将失效 :::

实例

  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 = 'test';
  9. $value = 1;
  10. $data = $redis->del($key);
  11. var_dump($data);
  12. $data = $redis->set($key, $value);
  13. var_dump($data);
  14. $data = $redis->set($key, $value,'XX');
  15. var_dump($data);
  16. $data = $redis->set($key, $value,'NX');
  17. var_dump($data);
  18. $data = $redis->set($key, $value,['NX','EX'=>20]);
  19. var_dump($data);
  20. $data = $redis->set($key, $value,['NX','PX'=>20000]);
  21. var_dump($data);
  22. $data = $redis->get($key);
  23. var_dump($data);
  24. $data = $redis->exists($key);
  25. var_dump($data);
  26. $data = $redis->set($key, $value);
  27. var_dump($data);
  28. $value += 1;
  29. $data = $redis->incr($key);
  30. var_dump($data);
  31. $value += 10;
  32. $data = $redis->incrBy($key, 10);
  33. var_dump($data);
  34. $value -= 1;
  35. $data = $redis->decr($key);
  36. var_dump($data);
  37. $value -= 10;
  38. $data = $redis->decrBy($key, 10);
  39. var_dump($data);
  40. $key = 'stringTest';
  41. $value = 'tioncico';
  42. $redis->set($key, $value);
  43. $data = $redis->getRange($key, 1, 2);
  44. var_dump($data);
  45. $data = $redis->getSet($key, $value . 'a');
  46. var_dump($data);
  47. $redis->set($key, $value);
  48. $bitKey = 'testBit';
  49. $bitValue = 10000;
  50. $redis->set($bitKey, $bitValue);
  51. $data = $redis->setBit($bitKey, 1, 0);
  52. var_dump($data);
  53. $data = $redis->getBit($key, 1);
  54. var_dump($data);
  55. $field = [
  56. 'stringField1',
  57. 'stringField2',
  58. 'stringField3',
  59. 'stringField4',
  60. 'stringField5',
  61. ];
  62. $value = [
  63. 1,
  64. 2,
  65. 3,
  66. 4,
  67. 5,
  68. ];
  69. $data = $redis->mSet([
  70. "{$field[0]}" => $value[0],
  71. "{$field[1]}" => $value[1],
  72. "{$field[2]}" => $value[2],
  73. "{$field[3]}" => $value[3],
  74. "{$field[4]}" => $value[4],
  75. ]);
  76. var_dump($data);
  77. $data = $redis->mGet([$field[3], $field[2], $field[1]]);
  78. var_dump($data);
  79. $data = $redis->setEx($key, 1, $value[0] . $value[0]);
  80. var_dump($data);
  81. var_dump($redis->get($key));
  82. $data = $redis->pSetEx($key, 1, $value[0]);
  83. var_dump($data);
  84. var_dump($redis->get($key));
  85. $redis->del($key);
  86. $data = $redis->setNx($key, 1);
  87. var_dump($data);
  88. $redis->del($field[0]);
  89. $data = $redis->mSetNx([
  90. "{$field[0]}" => $value[0],
  91. "{$field[1]}" => $value[1],
  92. ]);
  93. var_dump($data);
  94. var_dump( $redis->get($field[1]));
  95. $redis->del($field[1]);
  96. $data = $redis->mSetNx([
  97. "{$field[0]}" => $value[0] + 1,
  98. "{$field[1]}" => $value[1] + 1,
  99. ]);
  100. var_dump($data);
  101. var_dump($redis->get($field[0]));
  102. $data = $redis->setRange($field[0], 1, 1);
  103. var_dump($data);
  104. var_dump($redis->get($field[0]));
  105. $data = $redis->strLen($field[0]);
  106. var_dump($data);
  107. $redis->set($key, 1);
  108. $data = $redis->incrByFloat($key, 0.1);
  109. var_dump($data);
  110. $data = $redis->appEnd($field[0], '1');
  111. var_dump($data);
  112. var_dump($redis->get($field[0]));
  113. //迭代测试
  114. $cursor = 0;//迭代初始值0
  115. $redis->flushAll();
  116. $redis->set('xxxa', '仙士可');
  117. $redis->set('xxxb', '仙士可');
  118. $redis->set('xxxc', '仙士可');
  119. $redis->set('xxxd', '仙士可');
  120. $data = [];
  121. do {
  122. //每次迭代都会设置一次$cursor,为0代表迭代完成
  123. $keys = $redis->scan($cursor, 'xxx*', 1);
  124. $data = array_merge($data,$keys);
  125. } while ($cursor);
  126. var_dump($data);
  127. });