美文网首页
Redis学习笔记-04Hash散列

Redis学习笔记-04Hash散列

作者: 惊天动地猪儿虫 | 来源:发表于2020-12-26 00:28 被阅读0次

Redis是采用字典结构以键值对的形式存储数据的,而散列类型的键值也是一种字典结构。其存储了字段和字段值的映射,但是字段值只能支持字符串。即散列类型不能嵌套其他的数据类型。一个散列类型可以包含2^{32}-1个字段

Hash是一个String类型的field和value的映射表。使用Java可以作为如下理解:

Map<String,String> person = new HashMap<String,String>();
person.put("name","xiaoming");
person.put("age","20");

使用Redis的实现方式为:

27.0.0.1:6378> hset person name xiaoming
(integer) 1
127.0.0.1:6378> hset person age 20
(integer) 1
127.0.0.1:6378> hmget person name age
1) "xiaoming"
2) "20"
127.0.0.1:6378> 

1 命令操作

API方法名 作用
hset 设置hash field为指定值,如果key不存在,则先创建
hsetnx 设置hash field为指定值,如果key不存在,则先创建。如果存在返回0
hmset 同时设置hash的多个field
hget 获取指定的hash field
hmget 获取全部指定的hash field
hincrby 指定的hash field加上给定值
hexists 测试指定field是否存在
hlen 返回指定hash的field数量
hdel 删除指定hash的field
hkeys 返回hash的所有field
hvals 返回hash的所有value
hgetall 获取某个hash中全部的field及value

1.1 hset和hget

hset key field value
hget key field
赋值与取值。hset不区分是新增还是修改,如果字段存在,则更新。如果字段不存在,则新增。

127.0.0.1:6378> hset person name xiaoming
(integer) 1
127.0.0.1:6378> hget person name
"xiaoming"
127.0.0.1:6378> hset person name xiaoming1
(integer) 0
127.0.0.1:6378> hget person name
"xiaoming1"
127.0.0.1:6378> type person
hash
127.0.0.1:6378>

1.2 hmset和hmget

hmset key field value [field1 value1...]
hmget key field [field1...]
同时赋值或获取多个字段。

127.0.0.1:6378> hmset person age 20 sex male
OK
127.0.0.1:6378> hmget person name age sex
1) "xiaoming1"
2) "20"
3) "male"
127.0.0.1:6378> 

1.3 hgetall

hgetall key
如果不知道hash中字段有哪些,在使用这个命令全部显示。

127.0.0.1:6378> hgetall person
1) "name"
2) "xiaoming1"
3) "age"
4) "20"
5) "sex"
6) "male"
127.0.0.1:6378> 

1.4 hexists

hexists key field
判断字段是否存在,存在返回1,否则返回0。

127.0.0.1:6378> hexists person name1
(integer) 0
127.0.0.1:6378> hexists person name
(integer) 1
127.0.0.1:6378> 

1.5 hsetnx

hsetnx key field value
当字段不存在时赋值,存在则不赋值,返回0;否则赋值成功,返回1。

127.0.0.1:6378> hsetnx person name xiaoming1
(integer) 0
127.0.0.1:6378> hsetnx person school 7c
(integer) 1
127.0.0.1:6378> hgetall person
1) "name"
2) "xiaoming1"
3) "age"
4) "20"
5) "sex"
6) "male"
7) "school"
8) "7c"
127.0.0.1:6378> 

1.6 hincrby

hincrby key field increment
可以使用字段值增加指定的整数。

127.0.0.1:6378> hincrby person age 2
(integer) 22
127.0.0.1:6378> hget person age
"22"
127.0.0.1:6378>

1.7 hdel

hdel key field [field1...]
可以删除一个或多个字段,返回值是被删除的字段个数。

127.0.0.1:6378> hgetall person
1) "name"
2) "xiaoming1"
3) "age"
4) "22"
5) "sex"
6) "male"
7) "school"
8) "7c"
127.0.0.1:6378> hdel person school
(integer) 1
127.0.0.1:6378> hgetall person
1) "name"
2) "xiaoming1"
3) "age"
4) "22"
5) "sex"
6) "male"
127.0.0.1:6378> 

1.8 hkeys和hvals

hkeys key
hvals key
只获取字段名或字段值

127.0.0.1:6378> hkeys person
1) "name"
2) "age"
3) "sex"
127.0.0.1:6378> hvals person
1) "xiaoming1"
2) "22"
3) "male"
127.0.0.1:6378> 

1.9 hlen

hlen key
获得字段数量

127.0.0.1:6378> hlen person
(integer) 3
127.0.0.1:6378> 

相关文章

网友评论

      本文标题:Redis学习笔记-04Hash散列

      本文链接:https://www.haomeiwen.com/subject/nvwinktx.html