Redis 哈希(Hash)
Redis hash 是一個(gè) string 類型的 field 和 value 的映射表,hash 特別適合用于存儲(chǔ)對象。
Redis 中每個(gè) hash 可以存儲(chǔ) 1 ~ 2 的 32 次方個(gè)鍵值對 (40多億)。
操作方法
方法列表
方法名稱 | 參數(shù) | 說明 | 備注 |
---|---|---|---|
hDel | $key, ...$field | 刪除鍵,可多個(gè) | |
hExists | $key, $field | 查詢字段是否存在 | |
hGet | $key, $field | 獲取一個(gè)字段值 | |
hGetAll | $key | 獲取這個(gè)key的全部字段值 | |
hSet | $key, $field, $value | 設(shè)置key的字段值 | |
hValS | $key | 獲取哈希表中所有值 | |
hKeys | $key | 獲取所有哈希表中的字段 | |
hLen | $key | 獲取哈希表中字段的數(shù)量 | |
hMGet | $key, $hashKeys | 獲取所有給定字段$hashKeys數(shù)組的值 | |
hMSet | $key, $data | 同時(shí)將多個(gè)$data鍵值對設(shè)置到$key中 | |
hIncrBy | $key, $field, $increment | 給指定字段增加$increment | |
hIncrByFloat | $key, $field, $increment | 給指定字段增加浮點(diǎn)數(shù)$increment | |
hSetNx | $key, $field, $value | 只有在$filed不存在時(shí),設(shè)置$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);
});