第6课:hash数据类型

hash数据类型是redis最好用的数据类型
在实际项目中,简单的key-value场景并不多,大部分情况下,数据都是以数组或者对象存在的,比如用户的信息包括姓名,年龄,性别等等
而hash结构就是为了处理类似这样的一维数组而设计的
hash是一些列key value(field value)的映射表。相对于把一个对象的各个字段存储为string,存储为hash会占用更少的内存

其使用场景与使用方法基本和string类似
区别在于:
1.hash主要用于处理一维数组类型的数据,string只要处理字符串(当然也可以把数组通过json函数转成字符串存储,但没有hash好用)
2.hash一般用于持久化存储的场景,如果数据修改,同步修改hash缓存中的数据,平时的读写主要依赖缓存,而string更多的用于设置过期时间的简单缓存中

常用命令:
1.hset
语法:hset key field value
解释:设置hash表key中的field的值。如果hash表不存在,则创建,并执行设置field的值,如果hash表存在,值field的值覆盖或新增
其中key是可以理解为数组名 field可以理解为数组的元素key value可以理解为数组的元素值
hset user.1 name www.godeye.org    #设置key user.1 name域 的值

2.hmset
语法:hash key field value[key value]
解释:批量设置hash表key的域
hmset user.2 name niuer age 34 #同时设置name 和age域

3.hget
语法:hget key field
解释:获取哈希表key的field值
hget user.1 name  #存在的hash表及域"zhangsan"

4.hmget
语法:hmget key field[field]
解释:批量获取hash表的filed
hmget user.1 name age fri tech nofield #存在hash表中包含不存在的域nofield

5.hgetall
语法:hgetall key
解释:获取hash表的所有域值
hgetall user.2

6.hexists
语法:hexists key field
解释:判断hash表中是否存在某个域
hexists user.1 name

7.hkeys
语法:hkeys key
解释:获取hash表的所有域
hkeys user.1

8.hincrby
语法:hincrby key field increment
解释:hash表field域的数值增加步长increment,如果increment是负值,则是递减。如果域不存在,初始值视为0

9.hdel
语法:hdel key field[field]
解释:删除hash的域,如果指定多个field,则删除多个
hkeys user.1