Redis五种数据类型之 Hash 类型
Hash类型
是一个string类型的field和value的映射表。他的添加删除都是0/1操作。
适用于存储对象,相对于把一个对象分成每个字段并存成单个String类型。将一个对象存储在hash类型会减少占用的内存喔。
下面切入正题咯:
常用命令总结(自用总结 不喜勿喷):
1.hset方法
设置一个hash表 field为指定值 如果key不存在则先创建
Hash表名为userChung:001 含义:id为001的userChung对象(或hash table)
name属性/键为Harbor
eg:
127.0.0.1:6379> hset userChung:001 name Harbor
(integer) 1
127.0.0.1:6379> hget userChung:001 name
“Harbor”
2.hsetnx方法
设置一个hash表 field为指定值 如果key不存在则先创建并返回1,
存在则返回0,不作操作.
eg:
127.0.0.1:6379> hsetnx userChung:002 name HarborChung
(integer) 1
127.0.0.1:6379> hget userChung:002 name
“HarborChung"
--已存在情况
127.0.0.1:6379> hsetnx userChung:001 name HarborChung
(integer) 0
127.0.0.1:6379> hget userChung:001 name
“Harbor”
3.hmset方法
同时设置多个hash表的field属性/键
eg:
127.0.0.1:6379> hmset userChung:003 name Chung gender male age 22
OK
127.0.0.1:6379> hget userChung:003 name
"Chung"
127.0.0.1:6379> hget userChung:003 gender
"male"
127.0.0.1:6379> hget userChung:003 age
“22"
4.hget方法
eg:参考hset中获取内容
5.hmget方法
获取hash中 全部指定的属性即hash field
eg:
127.0.0.1:6379> hmget userChung:003 name gender
1) "Chung"
2) “male"
--对于获取不存在的属性field时
127.0.0.1:6379> hmget userChung:002 name gender
1) "HarborChung"
2) (nil)
6.hincrby方法
对指定的hash field属性进行自增
eg:
127.0.0.1:6379> hmget userChung:003 age
1) "22"
127.0.0.1:6379> hincrby userChung:003 age 2
(integer) 24
127.0.0.1:6379> hmget userChung:003 age
1) “24"
—对于不存在的field redis默认创建该field并付初始值0 并进行相应添加操作
127.0.0.1:6379> hmget userChung:002 age
1) (nil)
127.0.0.1:6379> hincrby userChung:002 age 2
(integer) 2
127.0.0.1:6379> hmget userChung:002 name age
1) "HarborChung"
2) “2”
7.hexists方法
查找该field是否在hash表中存在
存在返回1,不存在返回0
eg:
127.0.0.1:6379> hexists userChung:002 gender
(integer) 0
127.0.0.1:6379> hexists userChung:002 age
(integer) 1
127.0.0.1:6379> hmget userChung:002 gender age
1) (nil)
2) “2"
8.hlen方法
返回指定hash的filed属性/键数量
eg:
127.0.0.1:6379> hlen userChung:003
(integer) 3
127.0.0.1:6379> hlen userChung:002
(integer) 2
127.0.0.1:6379> hmget userChung:002 name age gender
1) "HarborChung"
2) "2"
3) (nil)
127.0.0.1:6379> hmget userChung:003 name age gender
1) "Chung"
2) "24"
3) “male"
9.hdel方法
删除指定hash的field键。返回值为1代表删除成功。0代表为删除失败。
eg:
127.0.0.1:6379> hget userChung:003 gender
"male"
127.0.0.1:6379> hdel userChung:003 gender
(integer) 1
127.0.0.1:6379> hdel userChung:003 gender
(integer) 0
127.0.0.1:6379> hget userChung:003 gender
(nil)
10.hkeys方法
返回hash表中所有field属性/键.
eg:
127.0.0.1:6379> hkeys userChung:002
1) "name"
2) "age"
127.0.0.1:6379> hkeys userChung:001
1) “name”
11.hvals方法
返回hash表中所有field属性值/值.
eg:
127.0.0.1:6379> hvals userChung:001
1) "Harbor"
127.0.0.1:6379> hvals userChung:002
1) "HarborChung"
2) “2”
12.hgetall方法
获取某个hash中的全部field属性/键 以及相应的值
eg:
127.0.0.1:6379> hgetall userChung:002
1) "name"
2) "HarborChung"
3) "age"
4) “2"