RedisTemplate操作哈希数据

这篇具有很好参考价值的文章主要介绍了RedisTemplate操作哈希数据。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

redistemplate hash操作,# 随笔,哈希算法,算法,redis,RedisTemplate,java,后端

主页传送门:📀 传送

概述


  Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息代理。Redis 的核心是提供数据类型的集合,在Redis中,有多种数据结构,如字符串、列表、集合、有序集合和哈希表,它可以帮助解决从缓存到队列再到事件处理的各种问题。

  RedisTemplate是Spring Data Redis提供的一个用于操作Redis的模板类,它提供了丰富的方法来操作Redis中的哈希数据。

常用方法


  本文来介绍下一些常用的使用RedisTemplate操作哈希数据的方法及简单示例。

添加哈希数据


  向Redis中的哈希表中添加数据,可以使用opsForHash()方法获取哈希操作对象,然后调用putAll()方法。

示例:

@Resource
private RedisTemplate<String, Object> redisTemplate;

public void addHashData(String key, Map<String, Object> hashData) {
    redisTemplate.opsForHash().putAll(key, hashData);
    Map newMap = new HashMap();  
    newMap.put("map3","map3-3");  
    newMap.put("map5","map5-5");  
    redisTemplate.opsForHash().putAll("hashValue",newMap);  
    map = redisTemplate.opsForHash().entries("hashValue");  
    System.out.println("通过putAll(H key, Map<? extends HK,? extends HV> m)方法以map集合的形式添加键值对:" + map); 
}

添加hashMap值


  向Redis中的哈希表中添加hashMap值,可以使用opsForHash()方法获取哈希操作对象,然后调用put(H key, HK hashKey, HV value)方法。

示例:

@Resource
private RedisTemplate<String, Object> redisTemplate;

public void addHashMapValue(String key, String hashKey, String value) {
    redisTemplate.opsForHash().put("hashValue","map1","map1-1");  
    redisTemplate.opsForHash().put("hashValue","map2","map2-2"); 
    redisTemplate.opsForHash().put(key, hashKey, value); 
} 

判断hashkey


  Redis中的哈希表判断hashkey是否存在,可以使用putIfAbsent(H key, HK hashKey, HV value)方法判断hashkey是否存在,如果hashKey存在,啥也不操作,如果hashKey不存在,则新增。

示例:


    redisTemplate.opsForHash().putIfAbsent("hashValue","map6","map6-6");  
    map = redisTemplate.opsForHash().entries("hashValue");  
    System.out.println("通过putIfAbsent(H key, HK hashKey, HV value)方法添加不存在于变量中的键值对:" + map); 

获取哈希数据


  从Redis中的哈希表中获取数据,可以使用opsForHash()方法获取哈希操作对象,然后调用entries()方法。

示例:

public Map<Object, Object> getHashData(String key) {
    return redisTemplate.opsForHash().entries(key);
}

获取属性值


  从Redis中的哈希表中获取某个属性的值,可以使用opsForHash()方法获取哈希操作对象,然后调用get()方法:

示例:

public Object getHashDataValue(String key, String field) {
    return redisTemplate.opsForHash().get(key, field);
}

获取hashMap值。


   获取指定变量中的hashMap值,通过values(H key)方法获取变量中的hashMap值

示例:

values(H key)
List<Object> hashList = redisTemplate.opsForHash().values("hashValue");  
System.out.println("通过values(H key)方法获取变量中的hashMap值:" + hashList); 

获取键值对。


   通过entries(H key)方法获取变量中的键值对

示例:

entries(H key)
Map<Object,Object> map = redisTemplate.opsForHash().entries("hashValue");  
System.out.println("通过entries(H key)方法获取变量中的键值对:" + map);

获取map键是否有值


  获取变量中的指定map键是否有值,如果存在该map键则获取值,没有则返回null。

示例:

   get(H key, Object hashKey)
    Object mapValue = redisTemplate.opsForHash().get("hashValue","map1");  
    System.out.println("通过get(H key, Object hashKey)方法获取map键的值:" + mapValue); 

判断是否有map键。


   通过hasKey(H key, Object hashKey)方法判断变量中是否存在map键

示例:

    hasKey(H key, Object hashKey)
    
    boolean hashKeyBoolean = redisTemplate.opsForHash().hasKey("hashValue","map3");  
    System.out.println("通过hasKey(H key, Object hashKey)方法判断变量中是否存在map键:" + hashKeyBoolean);   

获取键。


   通过keys(H key)方法获取变量中的键

示例:

    
    keys(H key)
    
    Set<Object> keySet = redisTemplate.opsForHash().keys("hashValue");  
    System.out.println("通过keys(H key)方法获取变量中的键:" + keySet);  

获取长度。


   通过size(H key)方法获取变量的长度

示例:

    size(H key)
    
    long hashLength = redisTemplate.opsForHash().size("hashValue");  
    System.out.println("通过size(H key)方法获取变量的长度:" + hashLength); 

集合方式获取值。


   通过multiGet(H key, Collection hashKeys)方法以集合的方式获取变量中的值

示例:

    multiGet(H key, Collection<HK> hashKeys)
    
    List<Object> list = new ArrayList<Object>();  
    list.add("map1");  
    list.add("map2");  
    List mapValueList = redisTemplate.opsForHash().multiGet("hashValue",list);  
    System.out.println("通过multiGet(H key, Collection<HK> hashKeys)方法以集合的方式获取变量中的值:"+mapValueList); 

匹配获取键值对


   匹配获取键值对,通过scan(H key, ScanOptions options)方法获取匹配键值对,ScanOptions.NONE为获取全部键对,ScanOptions.scanOptions().match(“map1”).build() 匹配获取键位map1的键值对,不能模糊匹配。

示例:

    scan(H key, ScanOptions options)
   
    Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.scanOptions().match("map1").build());  
    //Cursor<Map.Entry<Object,Object>> cursor = redisTemplate.opsForHash().scan("hashValue",ScanOptions.NONE);  
    while (cursor.hasNext()){  
        Map.Entry<Object,Object> entry = cursor.next();  
        System.out.println("通过scan(H key, ScanOptions options)方法获取匹配键值对:" + entry.getKey() + "---->" + entry.getValue());  
    }  

自增


以double值大小自增。


   通过increment(H key, HK hashKey, double delta)方法使变量中的键以值的大小进行自增长

示例:

increment(H key, HK hashKey, double delta) 

double hashIncDouble = redisTemplate.opsForHash().increment("hashInc","map1",3);  
System.out.println("通过increment(H key, HK hashKey, double delta)方法使变量中的键以值的大小进行自增长:" + hashIncDouble);  

以long值大小自增。


   通过increment(H key, HK hashKey, long delta)方法使变量中的键以值的大小进行自增长

示例:

increment(H key, HK hashKey, long delta)

long hashIncLong = redisTemplate.opsForHash().increment("hashInc","map2",6);  
System.out.println("通过increment(H key, HK hashKey, long delta)方法使变量中的键以值的大小进行自增长:" + hashIncLong);  

修改删除


修改哈希数据中的某个属性值


   修改Redis中的哈希表中某个属性的值,可以使用opsForHash()方法获取哈希操作对象,然后调用put()方法。

示例:

public void updateHashDataValue(String key, String field, Object newValue) {
    redisTemplate.opsForHash().put(key, field, newValue);
}

删除哈希数据中的某个属性值


   从Redis中的哈希表中删除某个属性的值,可以使用opsForHash()方法获取哈希操作对象,然后调用delete()方法。

示例:

public void deleteHashDataValue(String key, String field) {
    redisTemplate.opsForHash().delete(key, field);
}

删除哈希表


   要删除Redis中的整个哈希表,可以使用delete()方法。示例:

public void deleteHashTable(String key) {
    redisTemplate.delete(key);
    delete(H key, Object... hashKeys)
    删除变量中的键值对,可以传入多个参数,删除多个键值对。
    redisTemplate.opsForHash().delete("hashValue","map1","map2");  
    map = redisTemplate.opsForHash().entries("hashValue");  
    System.out.println("通过delete(H key, Object... hashKeys)方法删除变量中的键值对后剩余的:" + map); 
}

redistemplate hash操作,# 随笔,哈希算法,算法,redis,RedisTemplate,java,后端文章来源地址https://www.toymoban.com/news/detail-827170.html

  如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏  🙌一起讨论
  你的支持就是我✍️创作的动力!					  💞💞💞

到了这里,关于RedisTemplate操作哈希数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 在Spring Boot微服务使用RedisTemplate操作Redis集群

    记录 :442 场景 :在Spring Boot微服务使用RedisTemplate操作Redis集群的缓存和队列等数据类型。 版本 :JDK 1.8,Spring Boot 2.6.3,redis-6.2.5。 1.微服务中 配置Redis信息 1.1在pom.xml添加依赖 pom.xml文件: 解析:spring-boot-starter-data-redis和spring-boot版本保持一致。 1.2在application.yml中配置Redis集群

    2024年02月12日
    浏览(36)
  • SpringBoot实用开发(五)-- RedisTemplate处理String类型的数据

    目录 1. 新增操作 2. 查看操作  3. 批量获取value值 4. 返回value的长度 5.

    2024年02月03日
    浏览(41)
  • 数据结构与算法 | 哈希表(Hash Table)

    在二分搜索中提到了在有序集合中查询某个特定元素的时候,通过折半的方式进行搜索是一种很高效的算法。那能否根据特征直接定位元素,而非折半去查找?哈希表(Hash Table),也称为散列表,就是一种数据结构,用于实现键-值对的映射关系。它通过将键映射到特定的值

    2024年02月06日
    浏览(51)
  • 算法数据结构基础——哈希表(Hash Table)

    哈希表(Hash Table) :也叫做散列表。是根据关键码值(Key Value)直接进行访问的数据结构。 哈希表通过「键 key 」和「映射函数 Hash(key) 」计算出对应的「值 value 」,把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做「哈希函数(散列函数

    2024年02月13日
    浏览(44)
  • RedisTemplate详解

    SpringData是Spring中数据操作的模块,包括对各种数据库的集成,其中对Redis的集成模块就叫SpringDataRedis 官网地址:https://spring.io/projects/spring-data-redis 提供了对不同Redis客户端的整合(Lettuce和Jedis) 提供了RedisTemplate统一API来操作Redis 支持Redis的发布订阅模型 支持Redis哨兵和Redis集

    2024年02月01日
    浏览(45)
  • redisTemplate.scan 使用注意

    2024年02月12日
    浏览(33)
  • RedisTemplate对象中方法的使用

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、se

    2024年04月14日
    浏览(30)
  • SpringBoot 的 RedisTemplate、Redisson

    优先使用Lettuce, 需要分布式锁,分布式集合等分布式的高级特性,添加Redisson结合使用。 对于高并发,1000/s的并发,数据库可能由行锁变成表锁,性能下降会厉害。 老牌Redis的Java客户端,提供比较全面的Redis命令的支持, 使用阻塞的I/O,方法调用都是同步的,程序流需要等

    2024年02月12日
    浏览(40)
  • RedisTemplate删除指定前缀Keys

    根据前缀keyPre 删除keys debug看下执行流程: 1、keyPro不能为空 redisTemplate.keys()方法里面有个断言,为空就失败 2、序列化keyPre,把字符串变为字节数组 这里可以看到如果keyPre为null,序列化之后返回null 3、这里会拿到redis中所有匹配上的key,然后执行excute两个参数的方法 执行e

    2023年04月14日
    浏览(44)
  • RedisTemplate和StringRedisTemplate的区别、对比

    Jedis、RedisTemplate、StringRedisTemplate之间的比较 博客中提到:一. Jedis是Redis官方推荐的面向Java的操作Redis的客户端。 二. RedisTemplate,StringRedisTemplate是SpringDataRedis中对JedisApi的高度封装。SpringDataRedis相对于Jedis来说可以方便地更换Redis的Java客户端,比Jedis多了自动管理连接池的特性

    2024年02月11日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包