程序员子龙(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-04-28

11、RedisTemplate使用最详解(一)--- opsForValue()

1、set(K var1, V var2)

新增一个字符串类型的值

var1是key var2是值 key存在就覆盖,不存在新增

redisTemplate.opsForValue().set("BBB","你好");
1

2、set(K key, V value, Duration timeout)

新增一个字符串类型的值,同时设置过期时间

var1是key var2是值 key存在就覆盖,不存在新增

redisTemplate.opsForValue().set("BBB","你好", Duration.ofMinutes(1));
1

3、set(K var1, V var2, long var3, TimeUnit var5)

新增一个字符串类型的值,同时设置过期时间

var1是key var2是值 key存在就覆盖,不存在新增

redisTemplate.opsForValue().set("BBB","你好", 1, TimeUnit.MINUTES);
1

4、append(K var1, String var2)

# 给对应的key追加value,key不存在直接新增

redisTemplate.opsForValue().append("AAA", "哈哈哈");
1
2
3

5、set(K key1, V v1, long v2)

# 将key的值从下标1往后替换为新的value,key不存在相当于新增

redisTemplate.opsForValue().set("BBB","您的",1);
1
2
3

6、setBit(K var1, long var2, boolean var4)

#key键对应的值value对应的ascii码,在offset的位置(从左向右数)变为value

redisTemplate.opsForValue().setBit("BBB", 0, true);
1
2
3

7、getBit(K var1, long var2)

#判断指定的位置ASCII码的bit位是否为1

redisTemplate.opsForValue().getBit("BBB", 1);
1
2
3

8、setIfAbsent(K var1, V var2);

#如果key不存在则新增,key存在不做任何操作

redisTemplate.opsForValue().setIfAbsent("BBB", "好的");
1
2
3

9、setIfAbsent(K var1, V var2, long var3, TimeUnit var5)

#如果key不存在则新增,同时设置过期时间,key存在不做任何操作。

redisTemplate.opsForValue().setIfAbsent("AAA", "好的", 1, TimeUnit.MINUTES);
1
2
3

10、setIfAbsent(K key, V value, Duration timeout)

#如果key不存在则新增,同时设置过期时间,key存在不做任何操作。

redisTemplate.opsForValue().setIfAbsent("BBB", "好的", Duration.ofMinutes(1));
1
2
3

11、setIfPresent(K var1, V var2)

#如果key存在则修改,key不存在不做任何操作

redisTemplate.opsForValue().setIfPresent("BBB", "好的");
1
2
3

12、setIfPresent(K var1, V var2, long var3, TimeUnit var5)

#如果key存在则修改,同时设置过期时间,key不存在不做任何操作。

redisTemplate.opsForValue().setIfPresent("BBB", "好的",1, TimeUnit.MINUTES);
1
2
3

13、setIfPresent(K key, V value, Duration timeout)

#如果key存在则修改,同时设置过期时间,key不存在不做任何操作

redisTemplate.opsForValue().setIfPresent("BBB", "好的",Duration.ofMinutes(1));

1
2
3
4

14、getAndSet(K var1, V var2)

#获取key对应的值,如果key存在则修改,不存在则新增

redisTemplate.opsForValue().getAndSet("BBB", "心情");
1
2
3

15、increment(K var1)

#以增量的方式(默认增量为1)将long值存储在变量中(value为其他类型时报错),返回最新值

redisTemplate.opsForValue().increment("AAA");
1
2
3

16、increment(K var1, long var2)

#以指定增量的方式将Long值存储在变量中,返回最新值

redisTemplate.opsForValue().increment("AAA",2);
1
2
3

17、increment(K var1, double var2)

#以指定增量的方式将Double值存储在变量中,返回最新值

redisTemplate.opsForValue().increment("AAA", 3.2);
1
2
3

18、decrement(K var1)

#以递减的方式(默认为1)将long值存储在变量中(value为其他类型时报错,Double也不行,只能为Long),返回最新值

redisTemplate.opsForValue().decrement("AAA");
1
2
3

19、decrement(K var1, long var2)

#以指定递减量递减的方式将long值存储在变量中(value为其他类型时报错,Double也不行,只能为Long),返回最新值

redisTemplate.opsForValue().decrement("AAA",2);
1
2
3

20、size(K var1)

#获取指定key对应值的长度

redisTemplate.opsForValue().size("BBB");
1
2
3

21、get(Object var1)

#获取指定的key对应的值

String BBB = (String) redisTemplate.opsForValue().get("BBB");
System.out.println("BBB = " + BBB);

1
2
3
4
5

22、get(K var1, long var2, long var4)

#获取key指定下标之间对应的值

String BBB = redisTemplate.opsForValue().get("BBB",0,1);
System.out.println("BBB = " + BBB);
1
2
3
4

23、multiSet(Map<? extends K, ? extends V> var1)

将map中的key分别作为不同的key存到Redis中(见截图)

若某个key已经存在则替换为新值,其他不存在的则新增 map中5个key,3个存在Redis中,2个没有,结果就是3个值被修改,2个新增

Map valueMap = new HashMap();
valueMap.put("valueMap1","aa");
valueMap.put("valueMap2","bb");
valueMap.put("valueMap3","cc");
valueMap.put("valueMap4","ee");
redisTemplate.opsForValue().multiSet(valueMap);
1
2
3
4
5
6

24、multiSetIfAbsent(Map<? extends K, ? extends V> var1)

将map中的key分别作为不同的key存到Redis中(见截图)

若某个key已经存在不做修改,不存在的则新增(map中的key在Redis中都不存在时才新增) map中5个key,3个存在Redis中,2个没有,结果就是不会新增不会修改,若map中5个key,5个都不存在Redis中,则新增

Map valueMap = new HashMap();
valueMap.put("valueMap1","aa");
valueMap.put("valueMap2","bb");
valueMap.put("valueMap3","cc");
valueMap.put("valueMap4","ee");
valueMap.put("valueMap5","ff");
redisTemplate.opsForValue().multiSetIfAbsent(valueMap);
1
2
3
4
5
6
7

25、multiGet(Collection var1)

#根据集合中的key取出对应的value值

List paraList = new ArrayList();
paraList.add("valueMap1");
paraList.add("valueMap2");
paraList.add("valueMap3");
List list = redisTemplate.opsForValue().multiGet(paraList);
1
2
3
4
5
6
7

26、拓展

存入JSON字符串(对象集合)

对象和对象集合一定要转成JSON存放,容易解析

List<MPEntity> list = mpService.list();
redisTemplate.opsForValue().set("BBB", JSON.toJSONString(list));
1
2

#获取解析JSON字符串

String bbb = (String) redisTemplate.opsForValue().get("BBB");
List<MPEntity> mpEntities = JSON.parseArray(bbb, MPEntity.class);
System.out.println("mpEntities = " + mpEntities);
1
2
3
4
5

上次更新: 2024/10/09, 22:27:53
Redis 管道技术——Pipeline
RedisTemplate使用最详解(二)--- opsForList()

← Redis 管道技术——Pipeline RedisTemplate使用最详解(二)--- opsForList()→

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

    辽ICP备2023001503号-2

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