javaredisTemplate的Operations存取list集合一、存取为list类型@RestController@RequestMapping("/test")@Slf4jpublicclassTestController{@AutowiredprivateRedisTemplateredisTemplate;@ApiOperation("redis-savelist")@PostMapping("/redis/save/list")publicvoidredisSaveList(){List<Person>list=getPersonList();//清空while(redisTemplate.opsForList().siz...
继续阅读 >
分类:RedisTemplate
一、opsForValue用法key:字符串,value:可以是任意对象Object(例如String、具体对象如自定义类Student等),一个key只能对应一个value。1)value为String类型示例://赋值方法redisTemplate.opsForValue().set("username1","wangxinli");redisTemplate.opsForValue().set("username2","yanxiaotang");redisTemplate.opsForValue().set("username3","zhangguoshun");//取值,返回是String类型Stringstr1=redisTemplate.opsForV...
继续阅读 >
2021
03-05
03-05
解决RedisTemplate存储至缓存数据出现乱码的情况
前言RedisTemplate是Spring对于Redis的封装。如上图所示,RedisTemplate中定义了对5种数据结构操作。redisTemplate.opsForList();//操作listredisTemplate.opsForValue();//操作字符串redisTemplate.opsForCluster();//集群时使用redisTemplate.opsForGeo();//地理位置时使用redisTemplate.opsForHash();//操作hashredisTemplate.opsForSet();//操作setredisTemplate.opsForZSet();//操作有序set与StringRedisTemplate的区别String...
继续阅读 >
2021
03-05
03-05
解决RedisTemplate的key默认序列化器的问题
redis的客户端换成了spring-boot-starter-data-redis,碰到了一个奇怪的问题,在同一个方法中1.先hset,再hget,正常获得数据。在不同的方法中先hset,再hget获取不到数据,通过redis的monitor监控发现了命令的问题:实际我的key为JK_HASH:csrk,hashkey为user,但是根据上图所示,实际执行的命令多了好多其他字符,这是什么原因呢?在服务器端先确认发现实际有这个Hash,通过hset可以得到正确的数据,所以第一次执行hset的时候命...
继续阅读 >
2021
02-21
02-21
解决redisTemplate中leftPushAll隐性bug的问题
前言请看下面代码:Stringkey=String.format("test_key:%s",System.currentTimeMillis()/1000);Stringkey2=key+"_2";Stringkey3=key+"_3";List<String>t1=newArrayList<>();t1.add("2");t1.add("3");t1.add("4");t1.add("5");t1.add("1");redisTemplate.opsForList().leftPushAll(key,t1);redisTemplate.opsForList().leftPushAll(key3,t1.toArray());redisTemplate.opsFor...
继续阅读 >
2020
12-29
12-29
spring boot整合redis实现RedisTemplate三分钟快速入门
引入依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>RedisTemplate五种数据结构的操作redisTemplate.opsForValue();//操作字符串redisTemplate.opsForHash();//操作hashredisTemplate.opsForList();//操作listredisTemplate.opsForSet();//操作setredisTemplate.opsForZSet();//操作有序zsetRedisTemplate方法讲解判断key...
继续阅读 >
2020
12-03
12-03
解决使用redisTemplate高并发下连接池满的问题
用JMeter进行高并发测试的时候,发现报错:org.springframework.data.redis.RedisConnectionFailureException:CannotgetJedisconnection;nestedexceptionisredis.clients.jedis.exceptions.JedisException:Couldnotgetaresourcefromthepool连不上redis,是因为连接池不够用了我用的是redisTemplate来操作redis,而redisTemplate并不会自动释放连接有一个方法,就是加大最大连接数,但是治标不治本,加到redis.maxId...
继续阅读 >
2020
11-25
11-25
Java使用RedisTemplate模糊删除key操作
Redis模糊匹配批量删除操作,使用RedisTemplate操作:publicvoiddeleteByPrex(Stringprex){Set<String>keys=redisTemplate.keys(prex);if(CollectionUtils.isNotEmpty(keys)){redisTemplate.delete(keys);}}prex为迷糊匹配的key,如cache:user:*这里需要判断keys是否存在,如果一个都匹配不到会报错:ERRwrongnumberofargumentsfor'del'command当然,如果要直接在linux里面操作的话,在命令行执行以下命令...
继续阅读 >
2020
11-25
11-25
解决RedisTemplate调用increment报错问题
使用springredis的increment方法时,报错:nestedexceptionisredis.clients.jedis.exceptions.JedisDataException:ERRvalueisnotanintegeroroutofrange一、INCRBYkeyincrementINCRBYkeyincrement介绍如下:将key所储存的值加上增量increment。如果key不存在,那么key的值会先被初始化为0,然后再执行INCRBY命令。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。本操作的...
继续阅读 >
有个业务中需要删除某个前缀的所有Redis缓存,于是用RedisTemplate的keys方法先查出所有合适的key,再遍历删除。但是在keys(patten+"*")时每次取出的都为空。解决问题:spring中redis配置中,引入StringRedisTemplate而不是RedisTemplate,StringRedisTemplate本身继承自RedisTemplate,即<beanid="redisTemplate"class="org.springframework.data.redis.core.RedisTemplate"><propertyname="connectionFactory"ref="connectio...
继续阅读 >
2020
11-25
11-25
在RedisTemplate中使用scan代替keys指令操作
keys*这个命令千万别在生产环境乱用。特别是数据庞大的情况下。因为Keys会引发Redis锁,并且增加Redis的CPU占用。很多公司的运维都是禁止了这个命令的当需要扫描key,匹配出自己需要的key时,可以使用scan命令scan操作的Helper实现importjava.io.IOException;importjava.nio.charset.StandardCharsets;importjava.util.ArrayList;importjava.util.List;importjava.util.function.Consumer;importorg.springframework.bea...
继续阅读 >