Redis 笔记(05)— hash 类型(设置获取单个hash值、判断hash键是否存在、设置获取多个hash值、获取所有hash的键、获取所有hash的值、删除hash指定键)

Redis 的字典是无序字典。Redis 的字典的值只能是字符串,当 hash 移除了最后一个元素之后,该数据结构自动被删除,内存被回收。

hash 结构也可以用来存储用户信息,不同于字符串一次性需要全部序列化整个对象,hash 可以对用户结构中的每个字段单独存储。这样当我们需要获取用户信息时可以进行部分获取。而以整个字符串的形式去保存用户信息的话就只能一次性全部读取,这样就会比较浪费网络流量。

hash 也有缺点,hash 结构的存储消耗要高于单个字符串,到底该使用 hash 还是字符串,需要根据实际情况再三权衡。

1. hash 类型相关命令

命令说明
hset key field value设置hash里面一个字段的值
hget key field获取hash中field的值
hexists key field判断field是否存在hash中
hgetall key从hash中读取全部的域和值
hkeys key获取hash 中所有field
hvals key获取hash的所有值
hlen key获取hash中所有字段的数量
hdel key field[field…]删除一个或多个hash的field
hmget key field[field…]获取hash里面指定字段的值
hmset key field[field…]设置hash字段值
hsetnx key field value设置hash的一个字段,只有这个字段不存在是有效
hstrlen key field获取hash里面指定field的长度(Redis 版本>= 3.2.0)
hscan key cursor迭代hash里面的元素
hincrby key field increment将hash中指定域的值增加给定的值
hincrbyfloat key field increment将hash中指定域的值增加给定的浮点数

2. 使用示例

127.0.0.1:6379> hset student name "jack"
(integer) 1
127.0.0.1:6379> hget student name
"jack"
127.0.0.1:6379> hexists student name
(integer) 1
127.0.0.1:6379> hexists student gender
(integer) 0
127.0.0.1:6379> hset student gender "male"
(integer) 1
127.0.0.1:6379> hgetall student
1) "name"
2) "jack"
3) "gender"
4) "male"
127.0.0.1:6379> hkeys student
1) "name"
2) "gender"
127.0.0.1:6379> hvalues student
(error) ERR unknown command 'hvalues'
127.0.0.1:6379> hvals student
1) "jack"
2) "male"
127.0.0.1:6379> hlen student
(integer) 2
127.0.0.1:6379> hmget student name gender
1) "jack"
2) "male"
127.0.0.1:6379> hmset student grade 90 country "USA"
OK
127.0.0.1:6379> hmget student name grade gender country
1) "jack"
2) "90"
3) "male"
4) "USA"
127.0.0.1:6379> hdel student country
(integer) 1
127.0.0.1:6379> hgetall student
1) "name"
2) "jack"
3) "gender"
4) "male"
5) "grade"
6) "90"
127.0.0.1:6379>
127.0.0.1:6379> hmset student grade 90 country "USA"
OK
127.0.0.1:6379> hgetall
(error) ERR wrong number of arguments for 'hgetall' command
127.0.0.1:6379> hgetall student
1) "grade"
2) "90"
3) "country"
4) "USA"
127.0.0.1:6379> hstrlen student grade
(integer) 2
127.0.0.1:6379> hstrlen student country
(integer) 3
127.0.0.1:6379>
127.0.0.1:6379> hgetall student
1) "grade"
2) "90"
3) "country"
4) "USA"
127.0.0.1:6379> hincrby student grade 5
(integer) 95
127.0.0.1:6379> hgetall student
1) "grade"
2) "95"
3) "country"
4) "USA"
127.0.0.1:6379>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值