• 大小: 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.xml
     目录           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.xml
     目录           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\baseTest\
     文件         573  2016-01-12 23:27  redis_project\src\test\java\com\luo\baseTest\SpringTestCase.java
     目录           0  2016-01-14 08:33  redis_project\src\test\java\com\luo\service\
............此处省略24个文件信息

评论

共有 条评论

相关资源