spring redis 缓存使用kryo做序列化


import java.nio.ByteBuffer;

import org.springframework.data.redis.serializer.RedisElementReader;
import org.springframework.data.redis.serializer.RedisElementWriter;
import org.springframework.data.redis.serializer.RedisSerializationContext.SerializationPair;
import org.springframework.stereotype.Component;

import com.esotericsoftware.kryo.Kryo;
import com.esotericsoftware.kryo.io.ByteBufferInputStream;
import com.esotericsoftware.kryo.io.Input;
import com.esotericsoftware.kryo.io.Output;
import com.esotericsoftware.kryo.pool.KryoPool;

@Component
public class KryoObjectSerializer implements SerializationPair<Object> {
    /** Kryo池 */
    KryoPool kryoPool = new KryoPool.Builder(Kryo::new).build();

    private Kryo getKryo() {
        Kryo kryo = kryoPool.borrow();
        // 设置类加载器,应对ClassCastException异常
        // 如果不设置的话,使用spring-boot-devtools时,会抛异常
        kryo.setClassLoader(getClass().getClassLoader());
        re
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Redis 缓存时间配置不生效时,可能有几个原因。以下是一些常见的原因和解决方案: 1. 检查 Spring Boot 版本:在一些较早的 Spring Boot 版本中,配置 Redis 缓存时间可能会出现问题。确保你在使用的版本中已经修复了相关问题,并尽可能升级到最新版本。 2. 检查缓存注解的配置:如果你使用Spring缓存注解(例如 `@Cacheable`、`@CachePut`、`@CacheEvict`),请确保在注解中正确配置了缓存的过期时间。可以通过 `expire` 或 `expireTime` 属性来指定过期时间,单位可以是秒或毫秒。 3. 检查缓存键的配置:确保你在使用缓存注解时,使用了正确的缓存键。如果缓存键不正确或不存在,缓存时间配置将不会生效。 4. 检查 RedisTemplate 的配置:如果你使用 RedisTemplate 进行缓存操作,可以通过设置 `defaultExpiration` 属性来配置默认的缓存过期时间。确保在实例化 RedisTemplate 时设置了适当的值。 5. 检查 Redis 配置文件:检查你的 Redis 服务器是否正确配置了过期时间。可以通过检查 Redis 配置文件中的 `maxmemory-policy` 和 `maxmemory` 参数来确认。 6. 检查 Redis 服务器的时间:Redis 使用服务器的时间来判断缓存条目是否过期。确保 Redis 服务器的时间设置正确,以保证过期时间的判定准确。 如果以上解决方案都没有解决问题,建议检查你的代码实现,以确定是否存在其他可能导致缓存时间配置不生效的问题。希望这些信息能对你有所帮助!如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值