程序员子龙(Java面试 + Java学习) 程序员子龙(Java面试 + Java学习)
首页
学习指南
工具
开源项目
技术书籍

程序员子龙

Java 开发从业者
首页
学习指南
工具
开源项目
技术书籍
  • 基础

  • JVM

  • Spring

  • 并发编程

  • Mybatis

  • 网络编程

  • 数据库

  • 缓存

    • Redis

      • Redis基础知识
      • redis底层数据结构
      • 发布和订阅
      • 分分钟搞懂布隆过滤器,亿级数据过滤算法你值得拥有!
      • 缓存和数据库一致性解决方案
      • 详解redis的bitmap
      • 面试常问使用缓存出现的问题
      • Redis hot key 发现以及解决办法
      • Redis实现排行榜功能实战
      • Redis 管道技术——Pipeline
      • 11、RedisTemplate使用最详解(一)--- opsForValue()
      • RedisTemplate使用最详解(二)--- opsForList()
      • RedisTemplate使用最详解(三)--- opsForHash()
        • RedisTemplate使用最详解(四)--- opsForSet()
        • RedisTemplate使用最详解(五)--- opsForZSet()
        • Redis分布式锁-这一篇全了解(Redission实现分布式锁完美方案)
        • 建议收藏!看完全面掌握,最详细的Redis总结
        • Redis分布式锁-这一篇就够了
        • 《进大厂系列》系列-Redis常见面试题
      • 本地缓存

    • 设计模式

    • 分布式

    • 高并发

    • SpringBoot

    • SpringCloudAlibaba

    • Nginx

    • 面试

    • 生产问题

    • 系统设计

    • 消息中间件

    • Java
    • 缓存
    • Redis
    程序员子龙
    2024-05-16
    目录

    RedisTemplate使用最详解(三)--- opsForHash()

    # 1、put(H var1, HK var2, HV var3)

    新增hashMap值

    • var1 为Redis的key
    • var2 为key对应的map值的key
    • var3 为key对应的map值的值
    • var2相同替换var3
    redisTemplate.opsForHash().put("hashValue","map1","value1");
    redisTemplate.opsForHash().put("hashValue","map2","value2");
    
    1
    2

    2、get(H var1, Object var2)

    获取key对应的map中,key为var2的map的对应的值

    Object o = redisTemplate.opsForHash().get("hashValue", "map1");
    System.out.println("o = " + o);
    
    1
    2

    # 3、entries(H key)

    获取key对应的所有map键值对

    Map hashValue = redisTemplate.opsForHash().entries("hashValue");
    System.out.println("hashValue = " + hashValue);
    
    1
    2

    # 4、keys(H key)

    获取key对应的map中所有的键

    Set hashValue = redisTemplate.opsForHash().keys("hashValue");
    System.out.println("hashValue = " + hashValue);
    
    1
    2

    # 5、values(H key)

    获取key对应的map中所有的值

    # 6、hasKey(H key, Object var2)

    判断key对应的map中是否有指定的键

    Boolean aBoolean = redisTemplate.opsForHash().hasKey("hashValue", "map1");
    System.out.println("aBoolean = " + aBoolean);
    
    
    1
    2
    3

    # 7、size(H key)

    获取key对应的map的长度

    Long hashValue = redisTemplate.opsForHash().size("hashValue");
    System.out.println("hashValue = " + hashValue);
    
    
    1
    2
    3

    # 8、putIfAbsent(H key, HK var2, HV var3)

    如何key对应的map不存在,则新增到map中,存在则不新增也不覆盖

    redisTemplate.opsForHash().putIfAbsent("hashValue", "map3", "value3");
    
    1

    # 9、putAll(H key, Map<? extends HK, ? extends HV> map)

    直接以map集合的方式添加key对应的值

    • map中key已经存在,覆盖替换
    • map中key不存在,新增
    Map newMap = new HashMap();
    newMap.put("map4","map4");
    newMap.put("map5","map5");
    redisTemplate.opsForHash().putAll("hashValue",newMap);
    
    
    1
    2
    3
    4
    5

    # 10、multiGet(H key, Collection var2)

    以集合的方式获取这些键对应的map

    List list = new ArrayList<>();
    list.add("map1");
    list.add("map2");
    List hashValue = redisTemplate.opsForHash().multiGet("hashValue", list);
    System.out.println("hashValue = " + hashValue);
    
    
    1
    2
    3
    4
    5
    6

    # 11、lengthOfValue(H key, HK var2)

    获取指定key对应的map集合中,指定键对应的值的长度

    Long aLong = redisTemplate.opsForHash().lengthOfValue("hashValue", "map1");
    System.out.println("aLong = " + aLong);
    
    
    1
    2
    3

    # 12、increment(H key, HK var2, long long1)

    使key对应的map中,键var2对应的值以long1自增

    Long increment = redisTemplate.opsForHash().increment("hashValue", "map7", 1);
    System.out.println("increment = " + increment);
    
    
    1
    2
    3

    # 13、increment(H key, HK var2, double d1)

    使key对应的map中,键var2对应的值以double类型d1自增

    Double increment = redisTemplate.opsForHash().increment("hashValue", "map8", 1.2);
    System.out.println("increment = " + increment);
    
    
    1
    2
    3

    # 14、scan(H var1, ScanOptions var2)

    匹配获取键值对

    • ScanOptions.NONE为获取全部键对
    • ScanOptions.scanOptions().match(“map1”).build(),匹配获取键位map1的键值对,不能模糊匹配
    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("entry.getKey() = " + entry.getKey());
            System.out.println("entry.getValue() = " + entry.getValue());
        }
    
    
    1
    2
    3
    4
    5
    6
    7
    8

    # 15、delete(H key, Object… var2)

    删除key对应的map中的键值对

    Long delete = redisTemplate.opsForHash().delete("hashValue", "map1", "map2");
    System.out.println("delete = " + delete);
    
    
    1
    2
    3

    # 16、拓展

    map中存储对象、对象集合时最好转为JSON字符串,容易解析

    map中键值对都可以存为对象、对象集合JSON字符串,具体看实际应用存储

    List<MPEntity> list = mpService.list();
    redisTemplate.opsForHash().put("hashValue",JSON.toJSONString(list),JSON.toJSONString(list));
    
    
    1
    2
    3

    领取免费学习资源 (opens new window)

    上次更新: 2024/06/14, 13:58:29
    RedisTemplate使用最详解(二)--- opsForList()
    RedisTemplate使用最详解(四)--- opsForSet()

    ← RedisTemplate使用最详解(二)--- opsForList() RedisTemplate使用最详解(四)--- opsForSet()→

    最近更新
    01
    一个注解,优雅的实现接口幂等性
    11-17
    02
    MySQL事务(超详细!!!)
    10-14
    03
    阿里二面:Kafka中如何保证消息的顺序性?这周被问到两次了
    10-09
    更多文章>
    Theme by Vdoing | Copyright © 2024-2024

        辽ICP备2023001503号-2

    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式