在redis里面我们介绍的第二种数据结构就是Hash类型的数据结构。其实hash从外像上来说,hash能做的事情和string能做的事情都差不多。hash本身其实主要存储的是对象,这个对象可以包含很多属性值。但是我们也可以直接使用string来存储,用string类型的话,我们可以直接存储json字符串即可。但是排除外像上的体现,string和hash还是有很多区别的,例如:
序号 | string数据结构 | hash数据结构 |
1 | 可以存储对象(主要以json的方式存储) | 本身就是对象类型的数据结构 |
2 | 存储对象后,如果修改某个值,必须要重新覆盖整个json | 可以单独修改某个属性值 |
3 | 存储对象占用空间较大 | 存储对象占用空间较小 |
上面的表格我们列举了主要的几个差一点。下面我们详细的介绍下hash数据结构。
在hash的数据结构里面,我们在设置的时候需要时候hset命令,同时键的话有2个,一个是对象名,一个是属性名,例如:
hset user name zhangsan
上面的命令我们的user就是对象名,name就是属性名。
当然我们和string一样,也是可以设置多个属性的,那么我们使用的命令是:hmset,例如:
hmset user name zhangsan age 15
既然把数据设置进去之后,我们当然是需要获取数据的,在hash数据结构里面,不能直接使用get命令来获取数据,如果使用get的话,我们就获取不到:
所以我们在获取值的时候,需要使用hgetall命令,使用这个命令可以获取到对象的所有属性和值,例如:
hgetall user
如果我们需要获取单个属性的值的话,需要使用hmget命令,例如:
hmget user name hmget user age
当然我们如果需要修改某个属性值的话,直接还是使用hmset命令即可。
最后还有一个,我们可以判断hash数据结构对象中是否存在某个值,这时候使用的是:hexists命令,例如:
hexists user name hexists user sex
如果某个属性值不存在,则返回是0,如果存在,则返回是1
如果需要删除某个属性值,则使用:hdel命令,例如:
hdel user name
以上就是基于redis的hash类型的数据结构的用法。
还没有评论,来说两句吧...