Spring+Redis+MyBatis实现缓存整合
来源:互联网 发布:定情信物 知乎 编辑:程序博客网 时间:2024/05/15 23:50
<!--redis缓存--> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId> <version>1.8.5.RELEASE</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> <version>2.3</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>
<!--配置redis连接的配置文件,placeholder的实例只能存在一个--> <!--<context:property-placeholder location="classpath:redis.properties"/>--> <!--启用缓存注解--> <cache:annotation-driven cache-manager="cacheManager"/> <!--缓存管理器--> <bean id="cacheManager" class="org.springframework.cache.support.SimpleCacheManager"> <property name="caches"> <set> <!--自定义的redis缓存操作实现--> <bean class="com.common.cache.redis.RedisCache"> <property name="name" value="myCache"/> <property name="redisTemplate" ref="redisTemplate"/> </bean> </set> </property> </bean> <!--redis连接池配置--> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}"/> <property name="maxTotal" value="${redis.maxTotal}"/> <property name="testOnBorrow" value="${redis.testOnBorrow}"/> </bean> <!--redis连接工厂配置--> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"> <property name="hostName" value="${redis.host}"/> <property name="port" value="${redis.port}"/> <property name="password" value="${redis.pass}"/> <property name="poolConfig" ref="poolConfig"/> <property name="usePool" value="true"/> </bean> <!--redis操作模板--> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"> <property name="connectionFactory" ref="connectionFactory"/> </bean>
/** * Cache adapter for Redis. */public class RedisCache implements Cache { private RedisTemplate<String, Object> redisTemplate; private String name; public void setRedisTemplate(RedisTemplate<String, Object> redisTemplate) { this.redisTemplate = redisTemplate; } public void setName(String name) { this.name = name; } @Override public String getName() { return this.name; } @Override public Object getNativeCache() { return this.redisTemplate; } /** * 从缓存中获取key */ @Override public ValueWrapper get(Object key) { final String keyf = key.toString(); Object object; object = redisTemplate.execute((RedisCallback<Object>) connection -> { byte[] key1 = keyf.getBytes(); byte[] value = connection.get(key1); if (value == null) { return null; } return SerializationUtils.deserialize(value); }); return (object != null ? new SimpleValueWrapper(object) : null); } /** * 将一个新的key保存到缓存中 * 先拿到需要缓存key名称和对象,然后将其转成ByteArray */ @Override public void put(Object key, Object value) { final String keyf = key.toString(); final Object valuef = value; final long liveTime = 86400; redisTemplate.execute((RedisCallback<Long>) connection -> { byte[] keyb = keyf.getBytes(); byte[] valueb = SerializationUtils.serialize(valuef); connection.set(keyb, valueb); if (liveTime > 0) { connection.expire(keyb, liveTime); } return 1L; }); } /** * 删除key */ @Override public void evict(Object key) { final String keyf = key.toString(); redisTemplate.execute((RedisCallback<Long>) connection -> connection.del(keyf.getBytes())); } /** * 清空key */ @Override public void clear() { redisTemplate.execute((RedisCallback<String>) connection -> { connection.flushDb(); return "ok"; }); } @Override public <T> T get(Object key, Class<T> type) { return null; } @Override public <T> T get(Object o, Callable<T> callable) { return null; } @Override public ValueWrapper putIfAbsent(Object key, Object value) { return null; }}
//在Service层写注解 @Cacheable(value = "myCache", key = "getMethodName()")
阅读全文
0 0
- Spring+Redis+MyBatis实现缓存整合
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis --缓存方案
- redis整合spring mybatis -- 缓存方案
- Spring整合Redis实现数据缓存
- spring boot整合redis实现缓存机制
- Spring Boot 整合 Redis 实现缓存操作
- Spring Boot 整合 Redis 实现缓存操作
- Redis整合Spring实现缓存调度
- Spring Boot 整合 Redis 实现缓存操作
- Spring Boot 整合 Redis 实现缓存操作
- Spring Boot 整合 Redis 实现缓存操作
- Spring整合Redis缓存
- spring整合redis缓存
- redis mybatis spring整合
- spring mvc 小记(八):MyBatis整合redis缓存
- 作业
- 用JS实现input输入框里的只读属性
- WebGL画点程序v1
- 六个创建型模式5: 原型模式-Prototype Pattern【学习难度:★★★☆☆,使用频率:★★★☆☆】
- 同义词
- Spring+Redis+MyBatis实现缓存整合
- orcle数据库中的例外(异常)
- 于博士Cadence教程内容目录
- WebGL画点程序v2
- tensorflow学习——xml文件写与读
- node学习记录(一)
- 百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系互转
- java数据库编程--PreparedStatement接口
- 轮播图+ImageLoader