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 | 迭代哈希表中的键值对。 |
基本使用
go(function () {
$redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
'host' => '127.0.0.1',
'port' => '6379',
'auth' => 'easyswoole',
'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
]));
$key = 'hKey';
$field = [
'hField1',
'hField2',
'hField3',
'hField4',
'hField5',
];
$value = [
1,
2,
3,
4,
5,
];
$redis->del($key);
$data = $redis->hSet($key, $field[0], $value[0]);
var_dump($data);
$data = $redis->hGet($key, $field[0]);
var_dump($data);
$data = $redis->hExists($key, $field[0]);
var_dump($data);
$data = $redis->hDel($key, $field[0]);
var_dump($data);
$data = $redis->hExists($key, $field[0]);
var_dump($data);
$data = $redis->hMSet($key, [
"{$field[0]}" => $value[0],
"{$field[1]}" => $value[1],
"{$field[2]}" => $value[2],
"{$field[3]}" => $value[3],
"{$field[4]}" => $value[4],
]);
var_dump($data);
$data = $redis->hValS($key);
var_dump($data);
$data = $redis->hGetAll($key);
var_dump($data);
$data = $redis->hKeys($key);
var_dump($data);
$data = $redis->hLen($key);
var_dump($data);
$data = $redis->hMGet($key, [$field[0], $field[1], $field[2]]);
var_dump($data);
$data = $redis->hIncrBy($key, $field[4], 1);
var_dump($data);
$data = $redis->hIncrByFloat($key, $field[1], 1.1);
var_dump($data);
$data = $redis->hSetNx($key, $field[0], 1);
var_dump($data);
$data = $redis->hSetNx($key, $field[0] . 'a', 1);
var_dump($data);
var_dump($redis->hGet($key, $field[0] . 'a'));
$cursor = 0;
$redis->del('a');
$redis->hMSet('a',[
'a'=>'tioncico',
'b'=>'tioncico',
'c'=>'tioncico',
'd'=>'tioncico',
'e'=>'tioncico',
'f'=>'tioncico',
'g'=>'tioncico',
'h'=>'tioncico',
]);
$data = [];
do {
$keys = $redis->hScan('a',$cursor);
$data = array_merge($data,$keys);
var_dump($keys);
} while ($cursor);
});