文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何开发redis的二级缓存

2024-04-02 19:55

关注

如何开发redis的二级缓存

开发redis二级缓存的示例:

redis二级缓存的实现,主要是重写了Cache.java的方法,代码:

public class  implements Cache {

    private static final Logger logger = LoggerFactory.getLogger(MybatisRedisCache.class);

    private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock();

    private RedisTemplate redisTemplate;

    private String id;

    

    private static final long EXPIRE_TIME_IN_MINUTES = 30;

    public (String id){

        if (id==null){

            throw new IllegalArgumentException("Cache instances require an ID");

        }

        logger.info("=====================================Redis cache id = "+id);

        this.id = id;

    }

    

    public String getId() {

        return id;

    }

    

    public void putObject(Object key, Object value) {

        logger.debug("==============================redis put= "+key);

        RedisTemplate redisTemplate = getRedisTemplate();

        ValueOperations opsForValue = redisTemplate.opsForValue();

        opsForValue.set(key, value, EXPIRE_TIME_IN_MINUTES, TimeUnit.MINUTES);

    }

    

    public Object getObject(Object key) {

        logger.debug("================================redis get================================");

        RedisTemplate redisTemplate = getRedisTemplate();

        ValueOperations opsForValue = redisTemplate.opsForValue();

        return opsForValue.get(key);

    }

    

    public Object removeObject(Object key) {

        logger.debug("==========================================redis remove==========================");

        RedisTemplate redisTemplate = getRedisTemplate();

        redisTemplate.delete(key);

        return null;

    }

    

    public void clear() {

        logger.debug("=====================================clear redis================================");

        RedisTemplate redisTemplate = getRedisTemplate();

        redisTemplate.execute(new RedisCallback() {

            @Override

            public Object doInRedis(RedisConnection connection) throws DataAccessException {

 大专栏  redis实现二级缓存

                connection.flushDb();

                return "OK";

            }

        });

    }

    @Override

    public int getSize() {

        return 0;

    }

    @Override

    public ReadWriteLock getReadWriteLock() {

        return readWriteLock;

    }

    public RedisTemplate getRedisTemplate() {

        if (redisTemplate == null) {

            redisTemplate = ApplicationContextHolder.getBean("redisTemplate");

        }

        return redisTemplate;

    }

    public void setRedisTemplate(RedisTemplate redisTemplate) {

        this.redisTemplate = redisTemplate;

    }

}

使用redisTemplate方法实现一个ApplicationContextHolder工具类,代码:

@Component

public class ApplicationContextHolder implements ApplicationContextAware {

    private static ApplicationContext applicationContext;

    @Override

    public void setApplicationContext(ApplicationContext ctx) throws BeansException {

        applicationContext = ctx;

    }

    

    public static ApplicationContext getApplicationContext() {

        return applicationContext;

    }

    

    public static <T> T getBean(Class<T> clazz) {

        return applicationContext.getBean(clazz);

    }

    

    @SuppressWarnings("unchecked")

    public static <T> T getBean(String name) {

        return (T) applicationContext.getBean(name);

    }

}

在mapper中添加自定义cache,使用二级缓存,例如:

<cache type="com.yif.utils.MybatisRedisCache" eviction="LRU"/>

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯