import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; import org.apache.ibatis.cache.Cache; import org.redisson.RedissonClient; import org.redisson.core.RBucket; import org.redisson.core.RSet; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.yijiupi.himalaya.order.Constants; /** * ******************************************* * ClassName: MybatisRedisCache * * @Description: Mybatis 基于redis 的缓存 * * @author 章英杰 * @date 2016年5月10日 * ******************************************** */ public class MybatisRedisCache implements Cache{ private Logger logger=LoggerFactory.getLogger(getClass()); private RedissonClient redissonClient; private String id; private RSet<String> keys; public MybatisRedisCache(final String id) { if (id == null) { throw new IllegalArgumentException("Cache instances require an ID"); } this.id = id; logger.info("redis>>>>MybatisRedisCache:id="+this.id); if(null==redissonClient){ redissonClient=AppConfig.getBean(RedissonClient.class); } keys=redissonClient.getSet(Constants.MYBATIS_CACHE_ID+ id); } @Override public String getId() { return id; } @Override public void putObject(Object key, Object value) { RBucket<Object> obj= redissonClient.getBucket(key.toString()); obj.set(value, Constants.MYBATIS_CACHE_TIME_TO_LIVE, Constants.MYBATIS_CACHE_TIME_UNIT); if(!keys.contains(key.toString())){ keys.add(key.toString()); } } @Override public Object getObject(Object key) { RBucket<Object> obj= redissonClient.getBucket(key.toString()); return obj.get(); } @Override public Object removeObject(Object key) { RBucket<Object> obj= redissonClient.getBucket(key.toString()); Boolean flag=false; if(obj.delete()){ flag=keys.remove(key.toString()); } return flag; } @Override public void clear() { for(String key:keys){ RBucket<Object> obj= redissonClient.getBucket(key.toString()); obj.delete(); } keys.clear(); } @Override public int getSize() { return keys.size(); } @Override public ReadWriteLock getReadWriteLock() { return redissonClient.getReadWriteLock(getId()); } }
相关推荐
3、自定义redis KEY生成器/CacheManager来管理redis缓存 4、分布式redis-session共享 5、springboot实现初始化加载配置(实现缓存预热)的两种方式 6、二级缓存联合使用 方式一:redis原生方法工具类(RedisService...
基于 SpringBoot 从0搭建一个企业级开发项目,基于SpringBoot 的项目,并集成MyBatis-Plus、Redis、Druid、Logback ,并使用 Redis 配置 MyBatis 二级缓存。
通过以上步骤,我们就成功地将Redis集成到MyBatis的自定义缓存中,实现了高效的数据库查询缓存。这不仅可以显著提高系统的响应速度,还能降低数据库的压力,提升整体性能。当然,实际应用中可能还需要考虑分布式环境...
public class MybatisRedisCache implements Cache { // 读写锁 private final ReadWriteLock readWriteLock = new ReentrantReadWriteLock(true); // 使用springboot自动注入RedisTemplate @Autowired ...
首先,MyBatis作为一款轻量级的持久层框架,其核心特性之一就是支持自定义的SQL查询。MyBatis的二级缓存机制允许我们将执行过的SQL查询结果存储在内存中,以供后续相同的查询直接使用,从而避免了重复的数据库访问。...
本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...
本项目"redis-cache-mybatis"正是为了实现这一目的,提供了一个可以直接使用的Redis缓存解决方案。 在MyBatis中,Redis缓存主要涉及以下几个核心概念: 1. **配置Redis**:首先,我们需要在应用的配置文件中添加...
基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ 实现的秒杀系统 基于SpringBoot+MyBatis+Redis+RabbitMQ ...
3. **实现自定义缓存类**:需要创建一个自定义的缓存类,该类实现`org.apache.ibatis.cache.Cache`接口,例如`com.example.RedisCache`。 - 在自定义的缓存类中,实现基本的缓存操作方法,如`getId()`、`putObject...
在IT行业中,Spring Boot、Redis和MyBatis-Plus是三个非常重要的技术组件,它们各自在不同的领域发挥着关键作用。下面将详细讲解这三个技术及其整合应用。 **Spring Boot** Spring Boot是由Pivotal团队提供的全新...
基于Spring Boo+Mybatis+Redis+RabbitMQ设计的高并发电商秒杀系统基于Spring Boo+Mybatis+Redis+RabbitMQ设计的高并发电商秒杀系统基于Spring Boo+Mybatis+Redis+RabbitMQ设计的高并发电商秒杀系统基于Spring Boo+...
基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于springboot+mybatis redis构建的在线抽奖系统 基于...
springboot-redis-mybatis redis实现mybatis的二级缓存 springboot 2.0.1.RELEASE 关键点: 1.自己实现的二级缓存,必须要有一个带id的构造函数,否则会报错。...因为RedisCache并不是Spring容器里的
在这个"cas-client 基于redis自定义实现"项目中,开发者针对CAS客户端进行了定制化改造,以满足特定的功能需求。下面我们将深入探讨这个自定义实现的关键知识点。 首先,CAS客户端(cas-client)是CAS服务器与应用...
Spring Boot 自定义属性 Spring Boot 开发、测试、生产环境选择 Spring Boot 结合MyBatis--MySQL数据库 Spring Boot 结合Thymeleaf Spring Boot 结合Redis Spring Boot Logback.日志 Spring Boot 拦截器
基于SpringBoot+MyBatis+Redis+RabbitMQ实现的秒杀系统源码(高分毕设).zip 基于SpringBoot+MyBatis+Redis+RabbitMQ实现的秒杀系统源码(高分毕设).zip 基于SpringBoot+MyBatis+Redis+RabbitMQ实现的秒杀系统源码...
redis-cache-mybatis-redis-1.0.0-beta1.zip redis-cache-mybatis-redis-1.0.0-beta1.tar.gz Mybatis 整合 Redis 实现分布式缓存。
redis-cache-mybatis-redis-1.0.0-beta1.zip redis-cache-mybatis-redis-1.0.0-beta1.tar.gz Mybatis 整合 Redis 实现分布式缓存。
基于SpringBoot + MyBatis + Redis的图像素材管理系统 基于SpringBoot + MyBatis + Redis的图像素材管理系统 基于SpringBoot + MyBatis + Redis的图像素材管理系统 基于SpringBoot + MyBatis + Redis的图像素材管理...
1、基于springboot+mybatis redis构建的在线抽奖系统源码.zip 2、该资源包括项目的全部源码,下载可以直接使用! 3、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料...