redis的hash类型操作方法

 更新时间:2023年06月26日 11:25:46   作者:船长@  
Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象,这篇文章主要介绍了redis的hash类型的详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

简介

Hash是一个键值对的集合。Hash 是一个 String 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。

Hash存储结构优化:

如果field数量较少,存储结构优化为类数组结构

如果field数量较多,存储结构使用HashMap结构

原生操作

增加/修改【key的field的value】

增加/修改

hset key field value

如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。 如果字段已经存在于哈希表中,旧值将被重写

增加(多个)

hmset key field1 value1 field2 value2……

增加(锁,只有field不存在时生效)

 hsetnx key field value

如果哈希表不存在,一个新的哈希表被创建并进行 hsetnx 操作。

如果字段已经存在于哈希表中,操作无效。

如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令

查询

查询一个(key的field的value)

hget key field

查询所有field

hkeys key

查询所有value

hvals key

删除【key的field】

删除一个或多个

hdel key field1 field2……

不存在的字段将被忽略

方法 判断指定key中是否存在field

hexists key field

如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0

为哈希表key中的field字段的值加上增量increment(数字)

hincrby key field increment

增量也可以为负数,相当于对指定字段进行减法操作 如果哈希表的 key 不存在,一个新的哈希表被创建并执行 hincrby 命令 如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 对一个储存字符串值的字段执行 hincrby 命令将造成一个错误

java操作redis的hash类型

【boundHashOps()】 增加 往指定key中存储 键值

redisTemplate.boundHashOps("demo").put("1",1);

批量存储到指定key中

Map<String,String> map = new HashMap<>();
          map.put("3","zhangsan");
          map.put("4","lisi");
          redisTemplate.boundHashOps("demo").putAll(map);

根据指定key判断键是否存在,存在返回false不新增,不存在则新增键值对返回true

System.out.println(redisTemplate.boundHashOps("demo").putIfAbsent("7", 5));

修改

重新命名当前key的名称

redisTemplate.boundHashOps(key).rename("test");          

查询

根据指定key中得键取出值

System.out.println(redisTemplate.boundHashOps("demo").get("1"));

根据指定key取出所有键

Set<Object> keys = redisTemplate.boundHashOps("demo").keys();

获取指定key中所有键值对得值

List<Object> values = redisTemplate.boundHashOps("demo").values();
System.out.println(values);

根据指定key取出全部键值对

 Map&lt;Object, Object&gt; entries &#61; redisTemplate.boundHashOps(&#34;demo&#34;).entries();

删除

根据指定key中得键删除

redisTemplate.boundHashOps("demo").delete("1");

方法

设置key得到期时间 TimeUnit 设置时间类型(时、分、秒...)

redisTemplate.boundHashOps("demo").expire(100000, TimeUnit.MILLISECONDS);

获取当前key过期时间

System.out.println(redisTemplate.boundHashOps("demo").getExpire());

获取指定key得元素长度

Long size &#61; redisTemplate.boundHashOps(&#34;demo&#34;).size();

判断指定key中是否存在该键

System.out.println(redisTemplate.boundHashOps(&#34;demo&#34;).hasKey(&#34;1&#34;));

获取当前key的存储方式

System.out.println(redisTemplate.boundHashOps(&#34;demo&#34;).getType());

到此这篇关于redis的hash类型的详解的文章就介绍到这了,更多相关redis的hash类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • redislive监控redis服务的图文教程_动力节点Java 学院整理

    redislive监控redis服务的图文教程_动力节点Java 学院整理

    这篇文章主要介绍了redislive监控redis服务的图文教程_动力节点Java 学院整理,需要的朋友可以参考下
    2017-08-08
  • 基于Redis实现共享Session登录的实现

    基于Redis实现共享Session登录的实现

    本文主要介绍了基于Redis实现共享Session登录的实现,包括发送短信验证码、短信验证码登录和注册、以及登录状态校验的流程,具有一定的参考价值,感兴趣的可以了解一下
    2025-03-03
  • Linux服务器Redis6.x安装、配置全过程

    Linux服务器Redis6.x安装、配置全过程

    Redis是一个高性能的键值对数据库,支持多种数据类型和持久化方式,它在缓存、分布式系统、聊天室、任务队列等领域有广泛应用,本文详细介绍了Redis的安装、配置、高级类型和持久化机制
    2026-03-03
  • Redis集群的节点之间通信的实现

    Redis集群的节点之间通信的实现

    Redis集群的节点之间通过Gossip协议进行通信,在Redis集群中,Gossip协议用于节点之间的状态同步和故障检测,下面就来详细的介绍一下Redis集群节点通信,感兴趣的可以了解一下
    2025-09-09
  • 浅谈Redis缓存更新策略

    浅谈Redis缓存更新策略

    这篇文章主要介绍了Redis缓存更新策略的相关资料,讲解的十分细致,有需要的小伙伴可以参考下
    2022-08-08
  • Redis迷你版微信抢红包实战

    Redis迷你版微信抢红包实战

    本文主要介绍了Redis迷你版微信抢红包实战
    2025-05-05
  • Redis 数据库忘记密码找回或重置的解决方法

    Redis 数据库忘记密码找回或重置的解决方法

    对于 Redis 数据库,如果忘记了密码,可以通过密码重置来找回密码,今天通过本文给大家分享Redis 数据库忘记密码找回或重置的解决方法,感兴趣的朋友一起看看吧
    2024-01-01
  • Redis实现单设备登录的场景分析

    Redis实现单设备登录的场景分析

    这篇文章主要介绍了Redis实现单设备登录,用户首次登录时,将用户信息存入Redis,key是用户id,value是token,当用户在其他设备登录时,会重新生成token,这个时候原先的token已经被覆盖了,本文给大家提供样例及核心代码,感兴趣的朋友参考下吧
    2022-04-04
  • redis主从+哨兵搭建的实现示例

    redis主从+哨兵搭建的实现示例

    本文主要介绍了redis主从+哨兵搭建的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • redis发布和订阅_动力节点Java学院整理

    redis发布和订阅_动力节点Java学院整理

    这篇文章主要为大家详细介绍了redis发布和订阅的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08

最新评论