内容简介: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 />';
参考资料: 菜鸟教程 。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
面向对象葵花宝典:思想、技巧与实践
李运华 编著 / 电子工业出版社 / 2015-12 / 69
《面向对象葵花宝典:思想、技巧与实践》系统地讲述了面向对象技术的相关内容,包括面向对象的基本概念、面向对象开发的流程、面向对象的各种技巧,以及如何应用面向对象思想进行架构设计。在讲述相关知识或技术的时候,除了从“是什么”这个角度进行介绍外,更加着重于从“为什么”和“如何用”这两个角度进行剖析,力争让读者做到“知其然,并知其所以然”,从而达到在实践中既能正确又能优秀地应用面向对象的相关技术和技巧。 ......一起来看看 《面向对象葵花宝典:思想、技巧与实践》 这本书的介绍吧!