之前已经学习过redis的String、Set、Zset、list类型的操作命令,今天记录一下学习hash类型的操作命令:
1. 新增数据( hset key field value / hmset key field1 value1 [ field2 value2 …] )
hset 命令每次新增一个字段值;
hmset可以批量新增多个字段值;
key不用多说吧,每个都必须有key值;
filed、value 相当于java实体类中的属性和属性对应的值 或者类似java中HashMap中存的key值和value值;
> hset hkey dept_name 骨科
(integer) 1
> hmset hkey id 1 name XiaoMing age 22
OK
2. 查询数据( hgetall key / hkeys key / hvals key / hget key field / hmget key field1 field2 …)
hgetall 命令返回某个key中所有的field和value值;
hkeys 命令返回key中所有的field,类似就是java中返回HashMap中的所有key值;
hvals 命令返回所有的value值,类似就是java中返回HashMap中的所有value值;
hget 命令根据指定的field去查询对应的value值,类似HashMap的map.get(“key”)方法;
hmget 命令返回多个field对应的value值;
> hgetall hkey # 返回所有的field 和value值
1) "id"
2) "1"
3) "name"
4) "XiaoMing"
5) "age"
6) "22"
7) "dept_name"
8) "骨科"
> hkeys hkey # 返回所有的field值
1) "id"
2) "name"
3) "age"
4) "dept_name"
> hvals hkey # 返回所有的value值
1) "1"
2) "XiaoMing"
3) "22"
4) "骨科"
> hget hkey id # 根据指定的某个field去查询
"1"
> hmget hkey id name # 根据指定的多个field去查询
1) "1"
2) "XiaoMing"
3. 删除数据( hdel key field )
根据指定的field删除key中的某个值,并不是根据value值删除
> hdel hkey dept_name
(integer) 1
> hkeys hkey # 在此获取全部field,可以看到dept_name已经被删除掉了
1) "id"
2) "name"
3) "age"
4. 判断某个fied是否存在( hexists key field )
> hexists hkey age # age存在返回1
(integer) 1
> hexists hkey city # city不存在返回0
(integer) 0
5. value值加减 ( hincrby key field num / hincrbyfloat key field num )
hincrby 命令:当value值为整数类型时可以进行加减;
hincrbyfloat 命令当value值为浮点类型时可以进行加减操作;
> hincrby hkey age 5 # age 原来是22,加5后变为27
(integer) 27
> hincrby hkey age -7 # age 减 7, 27-7 =20
(integer) 20
> hincrby hkey age 5.5 # age是整数类型无法与浮点类型的数据进行加减,所以会报错
(error) ERR value is not an integer or out of range
> hincrby hkey name 6 # name对应的值是String类型无法进行加减操作,所以会报错
(error) ERR hash value is not an integer
> hset hkey heat 31.7 # 我们新增一个值来测试
(integer) 1
> hincrbyfloat hkey heat 5 # 加5, 31.7+5= 36.7
36.7
> hincrbyfloat hkey heat -9 # 减9, 36.7-9=27.7
27.7
> hincrbyfloat hkey heat 5.6
33.3
> hincrbyfloat hkey heat -2.3
31.0
6. 返回某个key的元素个数( hlen key )
> hlen hkey
4
7. 把key从redis中删除掉( del key )
> del hkey # 已经将key从redis中删除了,返回删除的个数
(integer) 1
> keys * # 查看redis中所有的key,发现已经没有任何key了
(empty list or set)
总结:redis的这5中数据类型的操作命令也是围绕对数据的增删改查( CRUD )来进行的,我们在总结记忆是可以对所有命令按照 增删改查 进行划分,这样方便记忆;