【Redis数据库 第4章】redis中的hash类型全部命令使用介绍,最详细版使用演示
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
文章目录
- 💨更多相关知识👇
- 一、redis中的key结构
- 二、redis中的hash类型
- 1、hash类型
- 2、hash类型的全部命令
- 🔸hset添加或者修改hash类型key的field的值
- 🔸hget获取一个hash类型key的field的值
- 🔸hmset批量添加多个hash类型key的field的值
- 🔸hmget批量获取多个hash类型key的field的值
- 🔸hgetall获取一个hash类型的key中的所有的field和value
- 🔸hkeys获取一个hash类型的key中的所有的field
- 🔸hvals获取一个hash类型的key中的所有的value
- 🔸hincrby让一个hash类型key的字段值自增并指定步长如果给负数就自减
- 🔸hincrbyfloat 让一个hash类型的key的字段值自增并指定步长是用来设置浮点数的
- 🔸hsetnx添加一个hash类型的key的field值前提是这个field不存在否则不执行没有字段就新增有字段就不变
- 🔸hdel 删除存储在哈希表中的key的指定field字段
- 🔸hlen获取哈希中的field字段数
- 🔸hexists查看hash表中给定key的域field是否存在。如果存在则返回1如果field不存在或者是key也不存在返回0
- 🔸hrandfield 随机返回一个key的field字段
- 🔸hscan迭代hash的所有field
- 🔸hstrlen返回key中field的值的长度
- 作者KJ.JK
💨更多相关知识👇
💖Spring中的创建对象的三种方式、第三方资源配置管理详细描述及使用XML版完结篇
💖Spring中的bean的配置、作用范围、生命周期详细描述及使用XML版上篇
💖Spring中的依赖注入、setter与构造器注入、自动装配与集合注入详细描述及使用XML版中篇
🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈
🍂个人博客首页 KJ.JK
💖系列专栏JavaEE进阶教程系列
一、redis中的key结构
Redis的key允许有多个单词形成层级结构多个单词之间用 ’ : '隔开
格式如下
项目名 : 业务名 : 类型 : id
这个格式并非固定也可以根据自己的需求来删除或添加词条。
例如我们的项目名称叫 abc有user和product两种不同类型的数据我们可以这样定义key
user相关的keyabc:user:1
product相关的keyabc:product:1
二、redis中的hash类型
1、hash类型
Hash类型也叫散列其value是一个无序字典类似于Java中的HashMap结构。
String结构是将对象序列化为JSON字符串后存储当需要修改对象某个字段时很不方便
KEY VALUE abcuser1 {name“Jack”age21} abcuser2 {name“Rose”age18} 当对象的某个属性需要频繁修改时不适合用 string+json因为它不够灵活每次修改都需要重新将整个对象序列化并赋值如果使用 hash 类型则可以针对某个属性单独修改没有序列化也不需要修改整个对象。比如商品的价格、销量、关注数、评价数等可能经常发生变化的属性就适合存储在hash类型里。
两种存储方式的对比如下表所示
String + json Hash 效率 很高 高 容量 低 低 灵活性 低 高 序列化 简单 复杂 Hash结构可以将对象中的每个字段独立存储可以针对单个字段做CRUD
2、hash类型的全部命令
可以使用help @hash 获取全部的命令
🔸hset添加或者修改hash类型key的field的值
- HSET key field value添加或者修改hash类型key的field的值
例子 hset abc:user:3 age 25
key field field的值
🔸hget获取一个hash类型key的field的值
- HGET key field获取一个hash类型key的field的值
例子 hget abc:user:3 name
key field
🔸hmset批量添加多个hash类型key的field的值
- HMSET key field value [field value …]批量添加多个hash类型key的field的值
例子 hmset abc:user:4 name lihua age 25 sex man
🔸hmget批量获取多个hash类型key的field的值
- HMGET key field [field …]批量获取多个hash类型key的field的值
例子 hmget abc:user:4 name age sex
🔸hgetall获取一个hash类型的key中的所有的field和value
- HGETALL key获取一个hash类型的key中的所有的field和value
例子 hgetall abc:user:4
🔸hkeys获取一个hash类型的key中的所有的field
- HKEYS key获取一个hash类型的key中的所有的field
例子hkeys abc:user:4
🔸hvals获取一个hash类型的key中的所有的value
- HVALS key获取一个hash类型的key中的所有的value
例子 hvals abc:user:4
🔸hincrby让一个hash类型key的字段值自增并指定步长如果给负数就自减
- HINCRBY key field increment让一个hash类型key的字段值自增并指定步长如果给负数就自减
例子 hincrby abc:user:4 age 2
🔸hincrbyfloat 让一个hash类型的key的字段值自增并指定步长是用来设置浮点数的
- HINCRBYFLOAT key field increment让一个hash类型的key的字段值自增并指定步长是用来设置浮点数的负数就负增长
例子 hincrbyfloat abc:user:4 age 1.1
🔸hsetnx添加一个hash类型的key的field值前提是这个field不存在否则不执行没有字段就新增有字段就不变
- HSETNX key field value添加一个hash类型的key的field值前提是这个field不存在否则不执行没有字段就新增有字段就不变
例子 hsetnx abc:user:4 sex woman
🔸hdel 删除存储在哈希表中的key的指定field字段
- HDEL key field [field …] 删除存储在哈希表中的key的指定field字段
例子hdel abc:user:4 name
🔸hlen获取哈希中的field字段数
- HLEN key获取哈希中的field字段数
例子 hlen abc:user:4
🔸hexists查看hash表中给定key的域field是否存在。如果存在则返回1如果field不存在或者是key也不存在返回0
- HEXISTS key field查看hash表中给定key的域field是否存在。如果存在则返回1如果field不存在或者是key也不存在返回0
例子 hexists abc:user:4 age
🔸hrandfield 随机返回一个key的field字段
- HRANDFIELD key [count [WITHVALUES]]随机返回一个key的field字段
- count指定随机返回多少个字段
- withvalues选择返回字段的时候一起返回它们的值加了count才可用
例子hrandfield abc:user:4
hrandfield abc:user:4 2
hrandfield abc:user:4 2 withvalues
🔸hscan迭代hash的所有field
HSCAN key cursor [MATCH pattern] [COUNT count]迭代hash的所有field迭代之后会返回游标和field和value游标用于下次迭代第一次迭代写0迭代完的游标也是0
cursor遍历时的游标只能是整数
match pattern可选pattern处是匹配规则
Count count可选count处是返回多少个某个字段的字节数大于64字节,或者字段数大于512count选项才有用
例子hscan abcuser4 0 match *e
🔸hstrlen返回key中field的值的长度
- HSTRLEN key field返回key中field的值的长度
例子 hstrlen abcuser4 age
作者KJ.JK
文章对你有所帮助的话欢迎给个赞或者 star你的支持是对作者最大的鼓励不足之处可以在评论区多多指正交流学习