redis数据结构详解之Hash(四)

序言

Hash数据结构累似c#中的dictionary,你们对数组应该比较了解,数组是经过索引快速定位到指定元素的,不管是访问数组的第一个元素仍是最后一个元素,所耗费的时间都是同样的,可是数组中的索引却没有实际意义,他只是一个位置而已。而咱们在查找某个元素时,通常都会使用有意义的字段来作索引,这就产生啦dictionary。其实dictionary的实现,就是让key跟下标索引有必定的关系,所实现的,让他的查找算法复杂度变为常数O(1)。html

扯完上面的蛋,我来讲下今天要说redis中的Hash命令,若是你不懂redis,就从第一篇看跟着来敲一边,别懒,懒啦别人装逼你就装不了啦,哈哈。redis

redis中hash对单个key/value操做的命令演示

redis中hash的添加命令hset,若是key不存在,建立key,存在,则覆盖原有值算法

redis 127.0.0.1:6379>hset myhash name Jim  ----给key为myset的键值设置键为name值为Jimc#

redis中hash的查看命令hget数组

redis 127.0.0.1:6379>hget myhash name   ----输出: "Jim",获取key为myset,键为name的value数据结构

redis 127.0.0.1:6379>hset myhash name zlh   ----覆盖原有值,值改成zlh替换Jim 学习

redis 127.0.0.1:6379>hget myhash name   ---输出:"zlh"spa

redis中hash的获取key包含的field数量的命令hlenhtm

redis 127.0.0.1:6379>hset myhash age 31 --- 设置key为myset键为age的value=31blog

redis 127.0.0.1:6379>hlen myhash   ---输出为2,key为myset的field数量为2

redis中判断指定key中指定field是否存在的命令hexists,存在返回1,不存在返回0

redis 127.0.0.1:6379>hexists myhash name   ---返回1,说明存在

redis 127.0.0.1:6379>hexists myhash name1  ---返回0,说明不存在

redis中hash删除命令hdel,删除一个或多个指定的字段

redis 127.0.0.1:6379>hset myhash sex nan   ----添加数据

redis 127.0.0.1:6379>hset myhash issingle yes  ----添加数据

redis 127.0.0.1:6379>hset myhash hobby sports  ----添加数据

redis 127.0.0.1:6379>hdel myhash hobby  ----删除单个数据,filed为hobby的数据

redis 127.0.0.1:6379>hdel myhash issingle sex   ---删除多个数据,filed为issingle和sex的两条数据

redis中hash若是key或field不存在插入有效,不然不采起操做的命令hsetnx

redis 127.0.0.1:6379>hsetnx myhash sex nan   ---设置myhash,field为sex的value为nan,成功返回1,由于原来不存在sex这个字段

redis 127.0.0.1:6379>hsetnx myhash sex nv   ---设置myhash,field为sex的value为nv,不成功返回0,由于原来存在sex这个字段而且有值

redis 127.0.0.1:6379>hget myhash sex   --输出"nan"

redis中hash中的value为数值时操做增减的命令hincrby

redis 127.0.0.1:6379>del myhash  ---删除该键

redis 127.0.0.1:6379>hset myhash age 31  ---设置key为myhash的键为age值为31

redis 127.0.0.1:6379>hincrby myhash age 10   ---给key为myhash,键为age的值加10,输出结果为41

redis 127.0.0.1:6379>hincrby myhash age -10   ---给key为myhash,键为age的值减去10,输出结果为31

redis中hash批量操做key/value的命令演示

批量添加key/value的命令hmset

redis 127.0.0.1:6379>del myhash  --删除该键

redis 127.0.0.1:6379>hmset myhash name zlh age 31 issingle no ----给key为myhash的hash添加name=zlh,age=31,issingle=no的多个键值

批量获取key/value的命令hmget

redis 127.0.0.1:6379>hmget myhash name age issingle   ----输出结果为:zlh 31 no

根据myhash键获取全部的字段及value的命令hgetall

redis 127.0.0.1:6379>hgetall myhash   ----输出结果为:name age issingle zlh 31 no

获取全部的field的命令hkeys

redis 127.0.0.1:6379>hkeys myhash   ---输出结果为:name age issingle

获取全部字段的值的命令hvals

redis 127.0.0.1:6379>hvals myhash  ----输出结果为:zlh 31 no

附言

若是你在看到本文后有什么疑问,请加入博客左上角群,一块儿交流学习。

个人redis系列博文:双击地址

相关文章
相关标签/搜索