redis hash 基本操作

写在前面的话

  这篇笔记笔者刚正式工作时写的,如有问题,谢谢指出。

简介

hash 是一个String类型的filed 和 value 的映射表,hash特别适合用于存储对象,你可以直接对对象中的某个属性进行操作。

使用场景,比如存储用户信息,商品信息等等。可以类比Java的Map:

Map<String,Map<String,String>> hash = new HashMap<>();  
 

优势

redis中的String类型也可以存储这种结果,但是有两个弊端:

1.整存整取,如果修改某一个变量,就必须获取整个value,修改某个属性,然后覆盖原值。

2.序列化/反序列化,如果存储结构化value,需要进行序列化,如果修改,则需要进行反序列化,然后再进行序列化,存储起来。

基本操作

# hset key field value 给定的key 设置 键值对 
hset 1992 name 123

#hmset key field value ... field value 给定key 设置多组键值对
hmset 1992 field1 value1 field2 value2

#hget key field 获取给定Key某一属性值
hget 1992 field1

#hmget key field field .. . 获取给定key某些属性的值
hmget 1992 field1 field2

#hgetall key 获取给定key所有键值对
hgetall 1992

#hlen key 获取给定key 键值对个数
hlen 1992

#hkeys key 获取给定key 的所有属性名
hkeys 1992
1) "name"
2) "sex"
3) "age"
4) "like"
5) "field1"
6) "field2"
7) "field3"
8) "field4"
9) "field6"
10) "field5"

#hvals key 给定key 的所有属性的值 (仅是值value部分)
hvals 1992

1) "\xe6\x9c\xb1\xe5\xad\x90\xe6\x99\xb4"
2) "1"
3) "12"
4) "eat"
5) "value1"
6) "value2"
7) "value1"
8) "value2"
9) "value1"
10) "value2"

#hexists key field 判断给定key是否存在某一个field 存在返回1 不存在返回0
hexists 1992 name
(integer) 1

#hincrby key field increment 给定key某个数值型field值进行加操作,增量increment 属性必须是整形,浮点型都不行。
hincrby 1992 age 1
#如果feild 不是integer类型 ,则出现: (error) ERR hash value is not an integer

#hincrbyfloat key field increment 给定的key某个数值型field进行加操作,增量increment,可以对整形,浮点型进行操作。
hincrbyfloat 1992 age 1.2

 

 

posted @ 2020-04-19 16:20  搬砖工奶爸  阅读(460)  评论(0编辑  收藏  举报