【Redis数据库 第4章】redis中的hash类型全部命令使用介绍,最详细版使用演示

💨更多相关知识👇

💖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字符串后存储当需要修改对象某个字段时很不方便

KEYVALUE
abcuser1{name“Jack”age21}
abcuser2{name“Rose”age18}

当对象的某个属性需要频繁修改时不适合用 string+json因为它不够灵活每次修改都需要重新将整个对象序列化并赋值如果使用 hash 类型则可以针对某个属性单独修改没有序列化也不需要修改整个对象。比如商品的价格、销量、关注数、评价数等可能经常发生变化的属性就适合存储在hash类型里。

两种存储方式的对比如下表所示

String + jsonHash
效率很高
容量
灵活性
序列化简单复杂

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你的支持是对作者最大的鼓励不足之处可以在评论区多多指正交流学习

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: redis数据库