Redis 哈希(Hash)

Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。

Redis 中每个 hash 可以存储 1 ~ 2 的 32 次方个键值对 (40多亿)。

操作方法

方法列表

方法名称参数说明备注
hDel$key, …$field删除键,可多个
hExists$key, $field查询字段是否存在
hGet$key, $field获取一个字段值
hGetAll$key获取这个key的全部字段值
hSet$key, $field, $value设置key的字段值
hValS$key获取哈希表中所有值
hKeys$key获取所有哈希表中的字段
hLen$key获取哈希表中字段的数量
hMGet$key, $hashKeys获取所有给定字段$hashKeys数组的值
hMSet$key, $data同时将多个$data键值对设置到$key中
hIncrBy$key, $field, $increment给指定字段增加$increment
hIncrByFloat$key, $field, $increment给指定字段增加浮点数$increment
hSetNx$key, $field, $value只有在$filed不存在时,设置$field的值
hScan$key,&$cursor, $pattern=null, $count=null迭代哈希表中的键值对。

基本使用

  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 = 'hKey';
  9. $field = [
  10. 'hField1',
  11. 'hField2',
  12. 'hField3',
  13. 'hField4',
  14. 'hField5',
  15. ];
  16. $value = [
  17. 1,
  18. 2,
  19. 3,
  20. 4,
  21. 5,
  22. ];
  23. $redis->del($key);
  24. $data = $redis->hSet($key, $field[0], $value[0]);
  25. var_dump($data);
  26. $data = $redis->hGet($key, $field[0]);
  27. var_dump($data);
  28. $data = $redis->hExists($key, $field[0]);
  29. var_dump($data);
  30. $data = $redis->hDel($key, $field[0]);
  31. var_dump($data);
  32. $data = $redis->hExists($key, $field[0]);
  33. var_dump($data);
  34. $data = $redis->hMSet($key, [
  35. "{$field[0]}" => $value[0],
  36. "{$field[1]}" => $value[1],
  37. "{$field[2]}" => $value[2],
  38. "{$field[3]}" => $value[3],
  39. "{$field[4]}" => $value[4],
  40. ]);
  41. var_dump($data);
  42. $data = $redis->hValS($key);
  43. var_dump($data);
  44. $data = $redis->hGetAll($key);
  45. var_dump($data);
  46. $data = $redis->hKeys($key);
  47. var_dump($data);
  48. $data = $redis->hLen($key);
  49. var_dump($data);
  50. $data = $redis->hMGet($key, [$field[0], $field[1], $field[2]]);
  51. var_dump($data);
  52. $data = $redis->hIncrBy($key, $field[4], 1);
  53. var_dump($data);
  54. $data = $redis->hIncrByFloat($key, $field[1], 1.1);
  55. var_dump($data);
  56. $data = $redis->hSetNx($key, $field[0], 1);
  57. var_dump($data);
  58. $data = $redis->hSetNx($key, $field[0] . 'a', 1);
  59. var_dump($data);
  60. var_dump($redis->hGet($key, $field[0] . 'a'));
  61. $cursor = 0;
  62. $redis->del('a');
  63. $redis->hMSet('a',[
  64. 'a'=>'tioncico',
  65. 'b'=>'tioncico',
  66. 'c'=>'tioncico',
  67. 'd'=>'tioncico',
  68. 'e'=>'tioncico',
  69. 'f'=>'tioncico',
  70. 'g'=>'tioncico',
  71. 'h'=>'tioncico',
  72. ]);
  73. $data = [];
  74. do {
  75. $keys = $redis->hScan('a',$cursor);
  76. $data = array_merge($data,$keys);
  77. var_dump($keys);
  78. } while ($cursor);
  79. });