Redis-Hash
#1 环境
redis-5.0.4
#2 Hash
Redis中的Hash类型可以看成具有String Key和String Value的map容器
添加和删除操作都是O(1)(平均)的复杂度
Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)
字符串是一个key对应一个value,value中通常只有一个对应key的数据,而hash中,把很多个数据(field:value)存到一个value中
#3 开始
#3.1 命令
#3.1.1 将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
参数
说明
HSET
往redis库中插入一条hash类型的数据
key
redis中的键
field
hash表中的"键"(唯一)
value
hash键对应的值
127.0.0.1:6379[1]> hset myhash-001 framework tornado
(integer) 0
127.0.0.1:6379[1]> hset myhash-001 framework1 Django
(integer) 1
127.0.0.1:6379[1]> hset myhash-001 framework2 flask
(integer) 1
127.0.0.1:6379[1]> hset myhash-001 framework3 tornado
#3.1.2 取出一条hash类型数据中所有field-value对
hgetall key
参数
说明
hgetall
取出一条hash类型数据中所有field-value对
key
redis中的键
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework"
2) "tornado"
3) "framework1"
4) "Django"
5) "framework2"
6) "flask"
7) "framework3"
8) "tornado"
#3.1.3 取出hash数据中所有fields
hkeys key
参数
说明
hkeys
取出hash数据中所有fields
key
redis中的键
127.0.0.1:6379[1]> hkeys myhash-001
1) "framework"
2) "framework1"
3) "framework2"
4) "framework3"
#3.1.4 取出hash数据中所有value
hvals key
参数
说明
hvals
取出hash数据中所有value
key
redis中的键
127.0.0.1:6379[1]> hvals myhash-001
1) "tornado"
2) "Django"
3) "flask"
4) "tornado"
#3.1.5 取出hash数据中一个指定field的值
hget key field
参数
说明
hget
取出hash数据中一个指定field的值
key
redis中的键
field
hash中的"键"(字段)
127.0.0.1:6379[1]> hget myhash-001 framework1
"Django"
#3.1.6 为哈希表 key 中的指定字段的整型数值加上增量 increment (可以是负数)
hincrby key field increment
参数
说明
hincrby
为哈希表 key 中的指定字段的浮点数值加上增量 increment
key
redis中的键
field
hash中的"键"(字段)
increment
增量
127.0.0.1:6379[1]> hset myhash-002 age 23
(integer) 1 # 设置age = 23
127.0.0.1:6379[1]> hincrby myhash-002 age 3
(integer) 26 # 为整型age添加增量3
127.0.0.1:6379[1]> hget myhash-002 age
"26" # 获取age数值
#3.1.7 为哈希表 key 中的指定字段的浮点数值加上增量 increment
hincrbyflost key field increment
参数
说明
hincrbyflost
为哈希表 key 中的指定字段的浮点数值加上增量 increment
key
redis中的键
field
hash中的"键"(字段)
increment
增量
#3.1.8 从hash数据中删除一个/多个字段field及其值
hdel key field field2 field3 ...
参数
说明
hdel
从hash数据中删除一个字段field及其值
key
redis中的键
field
hash中的"键"(字段)
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework"
2) "tornado"
3) "framework1"
4) "Django"
5) "framework2"
6) "flask"
7) "framework3"
8) "tornado"
127.0.0.1:6379[1]> hdel myhash-001 framework
(integer) 1
127.0.0.1:6379[1]> hgetall myhash-001
1) "framework1"
2) "Django"
3) "framework2"
4) "flask"
5) "framework3"
6) "tornado"
#3.1.9 同时将多个 field-value (域-值)对设置到哈希表 key 中
hmset key field value field1 value1 ...
参数
说明
hmset
同时将多个 field-value (域-值)对设置到哈希表 key 中
key
redis中的键
field
hash中的"键"(字段)
127.0.0.1:6379[1]> hmset myhash-001 name cox age 23 sex male
OK
127.0.0.1:6379[1]> hgetall myhash-001
1) "name"
2) "cox"
3) "age"
4) "23"
5) "sex"
6) "male"
#3.1.10 获取所有给定字段的值
hmget key field field1 ...
参数
说明
hmget
获取所有给定字段的值
key
redis中的键
field
hash中的"键"(字段)
127.0.0.1:6379[1]> hmget myhash-001 name age
1) "cox"
2) "23"
#3.1.11 判断某个field是否存在,存在则返回1,否则返回0
hexists key field
参数
说明
hexists
获取所有给定字段的值
key
redis中的键
field
hash中的"键"(字段)
127.0.0.1:6379[1]> hexists myhash-001 age
(integer) 1
127.0.0.1:6379[1]> hexists myhash-001 haha
(integer) 0