-
大小: 21KB文件类型: .zip金币: 1下载: 0 次发布日期: 2021-05-14
- 语言: 其他
- 标签: RedisSpring
资源简介
Redis+Spring缓存实例(windows环境,附实例源码及详解)
代码片段和文件信息
package com.luo.redis.cache;
import java.io.Serializable;
import java.util.concurrent.TimeUnit;
import org.aopalliance.intercept.MethodInterceptor;
import org.aopalliance.intercept.MethodInvocation;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
public class MethodCacheInterceptor implements MethodInterceptor {
private RedisTemplateject> redisTemplate;
private Long defaultCacheExpireTime = 10l; // 缓存默认的过期时间这里设置了10秒
public object invoke(MethodInvocation invocation) throws Throwable {
object value = null;
String targetName = invocation.getThis().getClass().getName();
String methodName = invocation.getMethod().getName();
object[] arguments = invocation.getArguments();
String key = getCacheKey(targetName methodName arguments);
try {
// 判断是否有缓存
if (exists(key)) {
return getCache(key);
}
// 写入缓存
value = invocation.proceed();
if (value != null) {
final String tkey = key;
final object tvalue = value;
new Thread(new Runnable() {
public void run() {
setCache(tkey tvalue defaultCacheExpireTime);
}
}).start();
}
} catch (Exception e) {
e.printStackTrace();
if (value == null) {
return invocation.proceed();
}
}
return value;
}
/**
* 创建缓存key
*
* @param targetName
* @param methodName
* @param arguments
*/
private String getCacheKey(String targetName String methodName
object[] arguments) {
StringBuffer sbu = new StringBuffer();
sbu.append(targetName).append(“_“).append(methodName);
if ((arguments != null) && (arguments.length != 0)) {
for (int i = 0; i < arguments.length; i++) {
sbu.append(“_“).append(arguments[i]);
}
}
return sbu.toString();
}
/**
* 判断缓存中是否有对应的value
*
* @param key
* @return
*/
public boolean exists(final String key) {
return redisTemplate.hasKey(key);
}
/**
* 读取缓存
*
* @param key
* @return
*/
public object getCache(final String key) {
object result = null;
ValueOperationsject> operations = redisTemplate
.opsForValue();
result = operations.get(key);
return result;
}
/**
* 写入缓存
*
* @param key
* @param value
* @return
*/
public boolean setCache(final String key object value Long expireTime) {
boolean result = false;
try {
ValueOperationsject> operations = redisTemplate
.opsForValue();
operations.set(key value);
redisTemplate.expire(key expireTime TimeUnit.SECONDS);
result = true;
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
public void setRedisTemplate(
RedisTemplateject> redisTemplate) {
this.redisTemplate = redisTemplate;
}
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-01-14 08:33 redis_project\
文件 1431 2016-01-13 21:22 redis_project\.classpath
文件 565 2016-01-13 21:22 redis_project\.project
目录 0 2016-01-14 08:33 redis_project\.settings\
文件 131 2016-01-13 22:12 redis_project\.settings\org.eclipse.core.resources.prefs
文件 243 2016-01-13 21:22 redis_project\.settings\org.eclipse.jdt.core.prefs
文件 90 2016-01-13 21:22 redis_project\.settings\org.eclipse.m2e.core.prefs
文件 3306 2016-01-13 21:26 redis_project\pom.xm
目录 0 2016-01-14 08:33 redis_project\src\
目录 0 2016-01-14 08:33 redis_project\src\main\
目录 0 2016-01-14 08:33 redis_project\src\main\java\
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\luo\
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\luo\redis\
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\luo\redis\cache\
文件 2953 2016-01-14 09:20 redis_project\src\main\java\com\luo\redis\cache\MethodCacheInterceptor.java
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\luo\service\
文件 112 2016-01-13 22:05 redis_project\src\main\java\com\luo\service\RedisTestService.java
目录 0 2016-01-14 08:33 redis_project\src\main\java\com\luo\service\impl\
文件 337 2016-01-13 23:48 redis_project\src\main\java\com\luo\service\impl\RedisTestServiceImpl.java
目录 0 2016-01-14 08:33 redis_project\src\main\resources\
文件 3313 2016-01-14 09:23 redis_project\src\main\resources\application.xm
目录 0 2016-01-14 08:33 redis_project\src\main\resources\properties\
文件 612 2016-01-14 09:33 redis_project\src\main\resources\properties\redis.properties
目录 0 2016-01-14 08:33 redis_project\src\test\
目录 0 2016-01-14 08:33 redis_project\src\test\java\
目录 0 2016-01-14 08:33 redis_project\src\test\java\com\
目录 0 2016-01-14 08:33 redis_project\src\test\java\com\luo\
目录 0 2016-01-14 08:33 redis_project\src\test\java\com\luo\ba
文件 573 2016-01-12 23:27 redis_project\src\test\java\com\luo\ba
目录 0 2016-01-14 08:33 redis_project\src\test\java\com\luo\service\
............此处省略24个文件信息
- 上一篇:USB-UART驱动
- 下一篇:.c
评论
共有 条评论