1. Hash散列
是指Redis中存储的value值是Hash散列类型的。而Hash也有自己的数据结构: 它是由field和关联的value组成的map键值对。field和value是字符串类型,一个hash中最多包含2^32-1键值对。
Hash.png
2. Hash指令
2.1 赋值
- 设置一个字段值
hset key field value
插入返回1,更新返回0 - 设置多个字段值
hmset key field value [field value ...]
- 当字段不存在时赋值
hsetnx key field value
127.0.0.1:6379> hset message m1 11111
1
127.0.0.1:6379> hmset message m2 22222 m3 33333 m4 44444
OK
127.0.0.1:6379> hsetnx message m2 222
0
127.0.0.1:6379> hset message m3 333
0
127.0.0.1:6379> hsetnx message m5 55555
1
127.0.0.1:6379>
2.2 取值
- 获取一个字段值
hget key field
- 获取多个字段值
hmget key field [field ...]
- 获取所有字段值
hgetall key
127.0.0.1:6379> hget message m1
11111
127.0.0.1:6379> hmget message m1 m2 m3
11111
22222
333
127.0.0.1:6379> hgetall message
m1
11111
m2
22222
m3
333
m4
44444
m5
55555
127.0.0.1:6379>
2.3 获取字段数量
hlen key
127.0.0.1:6379> hlen message
5
127.0.0.1:6379>
2.4 获取字段名或字段值
hkeys key
hvals key
127.0.0.1:6379> hkeys message
m1
m2
m3
m4
m5
127.0.0.1:6379> hvals message
11111
22222
333
44444
55555
127.0.0.1:6379>
2.5 判断字段是否存在
hexists key field
127.0.0.1:6379> hexists message m5
1
127.0.0.1:6379> hexists message m6
0
127.0.0.1:6379>
2.6 数值字段增加
- 增加整数语法:
hincrby key field increment
- 增加小数语法:
hincrbyfloat key field increment
127.0.0.1:6379> hset message number 5
1
127.0.0.1:6379> hincrby message number 2
7
127.0.0.1:6379> hget message number
7
127.0.0.1:6379> hincrbyfloat message number 0.38
7.38
127.0.0.1:6379> hget message number
7.38
127.0.0.1:6379>
2.7 删除字段
hdel key field [field ...]
127.0.0.1:6379> hgetall message
m1
11111
m2
22222
m3
333
m4
44444
m5
55555
number
7.38
127.0.0.1:6379> hdel message number
1
127.0.0.1:6379> hgetall message
m1
11111
m2
22222
m3
333
m4
44444
m5
55555
127.0.0.1:6379>
3. Hash的使用
因hash有key和field 2个标志,可用其进行一些统计,比如:
- 统计个人好友:
hset 我id 他id date
- 关注商品数
不适合hash的情况:
- 需要位运算,用字符串,因为有bitmap操作
- 使用过期功能,因为Redis的键过期功能目前只能对键进行过期操作,而不能对散列的字段进行过期操作
网友评论