8、Redis五大数据类型---哈希(Hash)
2024-08-31 19:45:44
一、哈希(Hash)简介:
- Redis hash 是一个string类型的field和value的映射表,hash特别适合用于存储对象。
- Redis hash 是一个键值对集合。
二、常用命令
1、hset 语法:hset <key> <field> <value>
给<key>
集合中的 <field>
键赋值<value>
127.0.0.1:6379> hset k1 name zhangsan age 12 phone 1231312 #k1里存值
(integer) 3
127.0.0.1:6379> hget k1 name
"zhangsan"
127.0.0.1:6379> hget k1 phone
"1231312"
127.0.0.1:6379> hset k1 name lisi #修改k1里的name的值为李四,返回0
(integer) 0
127.0.0.1:6379> hget k1 name #获取name对应的值
"lisi"
127.0.0.1:6379> hgetall k1
1) "name"
2) "lisi"
3) "age"
4) "12"
5) "phone"
6) "1231312"
127.0.0.1:6379>
2、hget 语法:hget <key1><field>从<key1>
集合<field>
取出 value
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "12"
5) "phone"
6) "1231231"
127.0.0.1:6379> hget k1 name #获取k1集合里的name对应的值
"zhangsan"
127.0.0.1:6379>
3、hmset 语法:hmset <key1><field1><value1><field2><value2>...
批量设置hash的值,会覆盖已存在的值
127.0.0.1:6379> hmset k1 name zhangsan age 22 phone 128909908731 #批量给k1设置对应的值
OK
127.0.0.1:6379> hget k1 name
"zhangsan"
127.0.0.1:6379> hget k1 age
"22"
127.0.0.1:6379> hget k1 phone
"128909908731"
4、hexists`语法:hexists ·查看哈希表 key 中,给定域 field 是否存在。
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hexists k1 name #判断k1中name对应的值是否存在,存在就返回1,反之返回0
(integer) 1
127.0.0.1:6379> hexists k1 sex
(integer) 0
127.0.0.1:6379>
5、hkeys 语法:hkeys <key>
列出该hash集合的所有field
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hkeys k1 #展示出k1里面的所有filed值
1) "name"
2) "age"
3) "phone"
127.0.0.1:6379>
6、hvals 语法:hvals <key>
列出该hash集合的所有value
127.0.0.1:6379> hgetall k1
1) "name"
2) "zhangsan"
3) "age"
4) "22"
5) "phone"
6) "128909908731"
127.0.0.1:6379> hvals k1 #获取k1中所有的value值
1) "zhangsan"
2) "22"
3) "128909908731"
127.0.0.1:6379>
7、hincrby 语法:hincrby <key><field><increment>
为哈希表 key 中的域 field 的值加上增量 1 -1
127.0.0.1:6379> hset k1 age 12
(integer) 1
127.0.0.1:6379> hget k1 age
"12"
127.0.0.1:6379> hincrby k1 age 3 #让年龄增加3
(integer) 15
8、hsetnx 语法<:hsetnx key><field><value>
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在.
127.0.0.1:6379> hgetall k1
1) "age"
2) "15"
127.0.0.1:6379> hsetnx k1 age 12 #设置存在的filed的值,返回0
(integer) 0
127.0.0.1:6379> hget k1 age
"15"
127.0.0.1:6379> hsetnx k1 name zhangsan #设置不存的filed值,返回1,设置成功
(integer) 1
127.0.0.1:6379> hget k1 name
"zhangsan"
三、总结
- 适合存储对象,如用户信息,商品信息
127.0.0.1:6379> hset user:1 name why
(integer) 1
127.0.0.1:6379> hget user:1 name
"why"
127.0.0.1:6379> hset user:2 name lisi
(integer) 1
127.0.0.1:6379> hget user:2 name
"lisi"
- 计数器
- Redis 哈希表作为计数器的使用也非常广泛。它常常被用在记录网站每一天、一月、一年的访问数量。每一次访问,我们在对应的field上自增1
#记录商品的好评数量,差评数量上
127.0.0.1:6379> HINCRBY pid:1 Good 1
(integer) 1
127.0.0.1:6379> HINCRBY pid:1 Good 1
(integer) 2
127.0.0.1:6379> HINCRBY pid:1 bad 1
(integer) 1
本章redis的hash值,就介绍到这里,有不足指出请在评论区指出,大家一起学习!
最新文章
- AppBox升级进行时 - 关联表查询与更新(Entity Framework)
- SQL select结果集和return的区别
- ArcGis在Oracle中常用的sql
- xcode arc引起的autorelease报错问题
- 如何使用SnpEff 对SNP结果进行分析
- 清除IE中Ajax缓存,Chrome不需要
- 从MySpace基于.NET平台的六次重构经历感受分布式
- int 占一个机器字长
- python-Django环境搭建
- Eclipse的几个常用快捷键
- WPF下可编辑Header的Tab控件实现
- [: 11: y: unexpected operator问题
- 《java入门第一季》之面向对象(多态向下转型)
- Linux(Ubuntu 16) 下Java开发环境的配置(三)------Mysql配置
- Web从入门到放弃<;2>;
- 使用Spring AOP实现MySQL读写分离
- Python 全栈开发十 socket网络编程
- go服务运行框架go-svc
- Android -- setWillNotDraw()
- angular性能优化心得
热门文章
- oracle 连接数据库并查询,返回List<;Map<;String, Object>;>; 数据
- 加班时的灵感迸发,我用selenium做了个窗口化的爬*宝数据。(附源码链接)
- [loj3276]遗迹
- Timer定时器的使用
- HDU 6987 - Cycle Binary(找性质+杜教筛)
- Codeforces 1270E - Divide Points(构造+奇偶性)
- webpack--css、html 和 js 代码的常用处理
- CUDA计算矩阵相乘
- expr计算字符串长度
- vector去重--unique