Redis 哈希(Hash)使用

Redis-Hash

#1 环境

redis-5.0.4

#2 Hash

Redis中的Hash类型可以看成具有String Key和String Value的map容器

添加和删除操作都是O(1)(平均)的复杂度

Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)

20190506160532-image.png

字符串是一个key对应一个value,value中通常只有一个对应key的数据,而hash中,把很多个数据(field:value)存到一个value中

#3 开始

#3.1 命令

#3.1.1 将哈希表 key 中的字段 field 的值设为 value 。
HSET key field value
参数说明
HSET往redis库中插入一条hash类型的数据
keyredis中的键
fieldhash表中的"键"(唯一)
valuehash键对应的值

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

20190506162259-image.png


#3.1.2 取出一条hash类型数据中所有field-value对
hgetall key
参数说明
hgetall取出一条hash类型数据中所有field-value对
keyredis中的键
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
keyredis中的键
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
keyredis中的键
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的值
keyredis中的键
fieldhash中的"键"(字段)
127.0.0.1:6379[1]> hget myhash-001 framework1
"Django"

#3.1.6 为哈希表 key 中的指定字段的整型数值加上增量 increment (可以是负数)
hincrby key field increment
参数说明
hincrby为哈希表 key 中的指定字段的浮点数值加上增量 increment
keyredis中的键
fieldhash中的"键"(字段)
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
keyredis中的键
fieldhash中的"键"(字段)
increment增量

#3.1.8 从hash数据中删除一个/多个字段field及其值
hdel key field field2 field3 ...
参数说明
hdel从hash数据中删除一个字段field及其值
keyredis中的键
fieldhash中的"键"(字段)
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 中
keyredis中的键
fieldhash中的"键"(字段)
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获取所有给定字段的值
keyredis中的键
fieldhash中的"键"(字段)
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获取所有给定字段的值
keyredis中的键
fieldhash中的"键"(字段)
127.0.0.1:6379[1]> hexists myhash-001 age
(integer) 1
127.0.0.1:6379[1]> hexists myhash-001 haha
(integer) 0

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值