1、概述
Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 - 1 键值对(40多亿)。
2、常见命令
HDEL key field [field ...]:删除一个或多个Hash的field
HEXISTS key field:判断field是否存在于hash中
HGET key field: 获取hash中field的值
HGETALL key:从hash中读取全部的域和值
HINCRBY key field increment:将hash中指定域的值增加给定的数字
HINCRBYFLOAT key field increment:将hash中指定域的值增加给定的浮点数
HKEYS key:获取hash的所有字段
HLEN key:获取hash里所有字段的数量
HMGET key field [field ...] : 获取hash里面指定字段的值
HMSET key field value [field value ...]: 设置hash字段值 注意:当向同一个对象的同一个属性赋多个值时,会覆盖。不同属性时,会拼接
HSET key field value: 设置hash里面一个字段的值
HSETNX key field value : 设置hash的一个字段,只有当这个字段不存在时有效
HSTRLEN key field: 获取hash里面指定field的长度
HVALS key: 获得hash的所有值
HSCAN key cursor [MATCH pattern] [COUNT count]: 迭代hash里面的元素。可用版本>=2.8.0
3、命令使用
127.0.0.1:6379> hmset user id 1 name zyw sex 1
OK
//第二条命令覆盖第一条
127.0.0.1:6379> hmset user id 2 name lisi sex 0
OK
127.0.0.1:6379> hget user id
"2"
127.0.0.1:6379> hgetall user
1) "id"
2) "2"
3) "name"
4) "lisi"
5) "sex"
6) "0"
127.0.0.1:6379> hlen user
(integer) 3
127.0.0.1:6379> del user
(integer) 1
127.0.0.1:6379> hmset user:1 id 1 name zyw sex 1
OK
127.0.0.1:6379> hmset user:2 id 2 name qqx sex 0
OK
127.0.0.1:6379> hgetall user:1
1) "id"
2) "1"
3) "name"
4) "zyw"
5) "sex"
6) "1"
127.0.0.1:6379> hget user:1 id
"1"
127.0.0.1:6379> hvals user:1
1) "1"
2) "zyw"
3) "1"
127.0.0.1:6379> hkeys user:1
1) "id"
2) "name"
3) "sex"
127.0.0.1:6379> hexists user:1 id
(integer) 1
127.0.0.1:6379> hmget user:1 id name sex
1) "1"
2) "zyw"
3) "1"
127.0.0.1:6379> hstrlen user:1 id
(integer) 1
127.0.0.1:6379> hstrlen user:1 name
(integer) 3
127.0.0.1:6379> hsetnx user:1 id 3
(integer) 0
127.0.0.1:6379> hscan user:1 0 match "sex" count 1
1) "0"
2) 1) "sex"
2) "1"
127.0.0.1:6379> hscan user:1 0 match "sex1" count 1
1) "0"
2) (empty list or set)
127.0.0.1:6379> hdel user:1 id
(integer) 1
127.0.0.1:6379> hget user:1 id
(nil)
127.0.0.1:6379> hget user:1 name
"zyw"
127.0.0.1:6379> hincrby user:1 sex 1
(integer) 2
127.0.0.1:6379> hget user:2 sex
"0"
127.0.0.1:6379> hget user:1 sex
"2"
4.使用场景
1.存储对象,相比于string json序列化,hash存储更快,节省了序列化的时间。常用于对象存储,例如购物车、商品等