发布时间:2017-04-05编辑:lianpenglin阅读(1231)
本文将对常用的散列命令进行介绍:其中包括添加和删除键值对的命令、获取所有键值对的命令,以及对键值对的值进行自增或者自减操作的命令。阅读本文可以让读者学习到如何将数据存储到散列里面,以及这样做的好处是什么。下表展示了一部门常用的散列命令:
命令 | 用例和描述 |
HMGET | HMGET key-name key [key....]从散列里面获取一个或多个键的值 |
HMSET | HMSET key-name key value [key value ...]--为散列里面的一个或多个键设置值 |
HDEL | HDEL key-name key [key ... ]--删除散列里面的一个或多个键值对,返回成功找到并删除的键值对数量 |
HLEN | HLEN key-name ----返回散列包含的键值对数量 |
以上表格中命令具体用法:
<?php /* * redis散列的使用 */ echo "<pre/>"; $redis = new Redis(); $redis->connect('127.0.0.1','6379'); $redis->hMset('hash',array('k1'=>'v1','k2'=>v2,'k3'=>'v3'));//批量添加散列 $a = $redis->hMget('hash',array('k1','k2'));//批量读取散列 var_dump($a); echo $a['k1']; echo "<br/>"; echo $redis->hLen('hash');//获取散列长度 echo "<br/>"; echo $redis->hDel('hash','k1','k4');//删除散列,返回删除的长度 echo "<br/>"; echo $redis->hLen('hash');//获取散列长度
下表列出了散列的其他几个批量操作命令,以及一些和字符串操作类似的散列命令。
命令 | 用例和描述 |
HEXISTS | HEXISTS key-name key---检查给定键是否存在于散列中 |
HKEYS | HKEYS key-name---获取散列包含的所有键 |
HVALS | HVALS key-name---获取散列包含的所有值 |
HGETALL | HGETALL key-name----获取散列包含所有的键值对 |
HINCRBY | HINCRBY key-name key increment --将键key存储的值加上整数increment |
HINCRBYFLOAT | HINCRBYFLOAT key-name key increment ----将键key存储的值加上浮点数increment |
尽管有HGETALL存在,但HKEYS和HVALS也是非常有用的:如果散列包含的值非常大,那么用户可以先使用HKEYS取出散列包含的所有值,然后再使用HGET一个接一个的取出键的值,从而避免一次获取多个大体积的值而导致服务器阻塞。
HINCRBY和HINCRBYFLOAT可能会让读者回想起用于处理字符串的INCRBY 和INCRBYFLOAT,这两对命令拥有相同的语义,它们的不同在于HINCRBY和HINCRBYFLOAT处理的是散列,而不是字符串,下面是具体代码:
<?php /* * redis散列的使用 */ echo "<pre/>"; $redis = new Redis(); $redis->connect('127.0.0.1','6379'); $redis->hMset('hash',array('k1'=>'v1','k2'=>v2,'k3'=>'v3'));//批量添加散列 $a = $redis->hMget('hash',array('k1','k2'));//批量读取散列 var_dump($a); echo $a['k1']; echo "<br/>"; echo $redis->hLen('hash');//获取散列长度 echo "<br/>"; echo $redis->hDel('hash','k1','k4');//删除散列,返回删除的长度 echo "<br/>"; echo $redis->hLen('hash');//获取散列长度 echo "<br/>"; $redis->hMset('hash2',array('short'=>'hello','long'=>1000*1)); $key = $redis->hKeys('hash2');//获取散列全部的键 var_dump($key); $aa = $redis->hExists('hash2','num');//检查给定的键是否存在散列中 var_dump($aa); var_dump($redis->hIncrBy('hash2','num',1));//对于一个不存在的键进行自增操作,redis会默认为0 $aa = $redis->hExists('hash2','num');//检查给定的键是否存在散列中 var_dump($aa);
正如前面所说,对散列进行处理的时候,如果键值对的值的体积非常大,那么用户可以先使用HKEYS获取所有的键,然后通过获取必要的值来减少需要传输的数据量。除此之外,用户还可以像使用SISMEMBER检查一个元素是否存在于集合里面一样,使用HEXISTS检查一个键是否存在与散列里面。
如果对你有用打赏一下吧!
上一篇: redis集合命令
下一篇: redis有序集合使用详解