内容简介: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 />';
参考资料: 菜鸟教程 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
TCP/IP网络管理
亨特 / 电子工业 / 2006年3月1日 / 79.00元
本书是一本架设与维护TCP/IP网络的完整指南,无论你是在职的系统管理员,还是需要访问Internet的家用系统用户,都可从本书获得帮助。本书还讨论了高级路由协议(RIPv2、OSPF、BGP),以及实现这些协议的gated软件。对于各种重要的网络服务,如DNS,Apache,sendmail,Samba,PPP和DHCP,本书都提供了配置范例,以及相关的软件包与工具的语法参考。一起来看看 《TCP/IP网络管理》 这本书的介绍吧!