内容简介:Hash 是一个 String 类型的 field 和value 的映射表。每个 Hash 可以存储 2例如一个用户的姓名、生日等数据,如果使用 kye-value 存储,就要转换成字符串形式(json 等),存储和修改都会很麻烦,但是 Hash 可以很方便的实现。由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。
Hash(哈希)
Hash 是一个 String 类型的 field 和value 的映射表。每个 Hash 可以存储 2 32 - 1 键值对 (40多亿)。
应用场景
Hash 适合存储结构化的数据
例如一个用户的姓名、生日等数据,如果使用 kye-value 存储,就要转换成字符串形式(json 等),存储和修改都会很麻烦,但是 Hash 可以很方便的实现。
Hash 可以节省内存
由于Hash结构会在单个Hash元素在不足一定数量时进行压缩存储,所以可以大量节约内存。
可以参考 Redis 利用Hash存储节约内存 这篇文章。
实例
<?php include 'redis.php';// 前文中连接 Redis 的方法 $redis = getRedis(); $userId = 1; $userName = 'kobe'; $userNumber = 24; $userAge = 39; $redisKey = 'user_info_' . $userId; $redis->hSet($redisKey, 'name', $userName);// 设置key中的field值为value echo $redis->hGet($redisKey, 'name') . '<br />';// 获取key中field的值 kobe $redis->hSetNx($redisKey, 'name', 'Gasol');// field不存在时,才能设置 echo $redis->hGet($redisKey, 'name') . '<br />';// 获取key中field的值 kobe $flag = $redis->hExists($redisKey, 'name');// key中field是否存在 print_r($flag);// 1 echo '<br />'; $redis->hSet($redisKey, 'number', $userNumber); $redis->hDel($redisKey, 'number');// 删除key中field echo $redis->hGet($redisKey, 'number');// 无数据 $redis->hMset($redisKey, array('age' => $userAge, 'team' => $userTeam));// 批量存储多个field和value print_r($redis->hMGet($redisKey, array('age', 'team')));// 批量获取多个field的值 Array ( [age] => 39 [team] => 湖人队 ) echo '<br />'; echo $redis->hLen($redisKey) . '<br />';// 获取key中有多少field 3 $redis->hSet($redisKey, 'score', 2);// 设置value为数值 echo $redis->hGet($redisKey, 'score') . '<br />';// 2 $redis->hIncrBy($redisKey, 'score', 3);// 为数值增量 echo $redis->hGet($redisKey, 'score') . '<br />';// 5 print_r($redis->hGetAll($redisKey));// 获取key中的所有field和value Array ( [name] => kobe [age] => 39 [team] => 湖人队 [score] => 5 ) echo '<br />'; print_r($redis->hKeys($redisKey));// 获取key中的所有field Array ( [0] => name [1] => age [2] => team [3] => score ) echo '<br />'; print_r($redis->hVals($redisKey));// 获取key中的所有value Array ( [0] => kobe [1] => 39 [2] => 湖人队 [3] => 5 ) echo '<br />';
参考资料: 菜鸟教程 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。