前言:
spring和redis集成有很多方式,看到网上很多都是使用redistemplate自己去做redis 的一些操作,但是对于我们开发来说,肯定是使用越方便越好,于是乎就有了spring的对redis或者memcahe这些换成框架的封装,只需要引入spring的spring-data-redis的jar。
好了,废话不多说,我们开始上代码。
我们先预览一下这个项目的工程目录结构先:
还没安装的redis 的同学可以自己去安装redis,我自己是在window上安装的,其实也不是安装,解压一下就可以使用了,不过需要注意的是它的启动方式,直接点击redis-server启动会直接闪退的,正确的启动方式使用命令【redis-server.exe redis.windows.conf】,详细请参考:Windows 64位下安装Redis详细教程
pom文件就没什么好说的了,直接贴配置给大家吧
4.0.0
ylink.com
spring-redis-test
0.0.1-SNAPSHOT
war
4.2.6.RELEASE
1.6.4
1.0.0
4.9
UTF-8
org.springframework
spring-core
${spring.version}
commons-logging
commons-logging
org.springframework
spring-beans
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-context-support
${spring.version}
org.springframework
spring-expression
${spring.version}
org.springframework
spring-orm
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-test
${spring.version}
test
org.mybatis
mybatis-spring
1.1.1
junit
junit
${junit.version}
test
commons-lang
commons-lang
2.6
org.mybatis
mybatis
3.2.2
org.slf4j
slf4j-api
${slf4j.version}
ch.qos.logback
logback-classic
${logback.version}
test
commons-logging
commons-logging
1.1.1
redis.clients
jedis
2.8.1
org.springframework.data
spring-data-redis
1.7.2.RELEASE
mysql
mysql-connector-java
5.1.31
com.jolbox
bonecp
0.7.1.RELEASE
直接上service,其他的大家可以自己去我上传的源码去下载查看,至于对spring的缓存的注解不太了解怎么使用的,可以参考下这边博客园博主写的博文:Spring Cache使用详解
package com.cn.service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import com.cn.bean.User;
import com.cn.dao.UserDao;
/**
* @类名称: UserServiceImpl
* @类描述:
* @创建人: 1603254
* @创建时间: 2016-12-2 上午11:10:33
*
* @修改人: 1603254
* @操作时间: 2016-12-2 上午11:10:33
* @操作原因:
*
*/
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserDao userDao;
@Cacheable(value="common",key="'id_'+#id")
public User selectByPrimaryKey(Integer id) {
System.out.println("======================");
System.out.println("======================");
System.out.println("======================");
return userDao.selectByPrimaryKey(id);
}
@CachePut(value="common",key="#user.getUserName()")
public void insertSelective(User user) {
// userDao.insertSelective(user);
System.out.println("########################");
System.out.println("########################");
System.out.println("########################");
}
@CacheEvict(value="common",key="'id_'+#id")
public void deleteByPrimaryKey(Integer id) {
// userDao.deleteByPrimaryKey(id);
System.out.println("******************************");
System.out.println("******************************");
System.out.println("******************************");
}
}
insert into user(id,name) values(#{id,jdbcType=CHAR},#{name,jdbcType=VARCHAR})
spring-redis-test
index.html
index.htm
index.jsp
default.html
default.htm
default.jsp
SpringMVC
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:spring-mvc.xml
1
true
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;
import com.cn.bean.User;
import com.cn.service.UserService;
@ContextConfiguration(locations="classpath:spring-mvc.xml")
public class Test extends AbstractJUnit4SpringContextTests {
@Autowired
private UserService userService;
@org.junit.Test
public void add(){
User user=new User();
user.setName("wen");
user.setId("1");
userService.insertSelective(user);
}
@org.junit.Test
public void query(){
User user=userService.selectByPrimaryKey(1);
System.out.println(user.toString());
}
}
下载地址是:spring集成redis源码+表结构
其实说实话,用起来还是蛮简单的,而且方便,快捷,真正想要了解深入一点的话,还是建议有时间去看看源代码。
后面大家评论说RedisCache类没写给出来,下面给一下(链接里面的demo 有Override 注解删除就可以使用了):
package com.cn.util;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.springframework.cache.Cache;
import org.springframework.cache.support.SimpleValueWrapper;
import org.springframework.dao.DataAccessException;
import org.springframework.data.redis.connection.RedisConnection;
import org.springframework.data.redis.core.RedisCallback;
import org.springframework.data.redis.core.RedisTemplate;
public class RedisCache implements Cache{
private RedisTemplate redisTemplate;
private String name;
public RedisTemplate getRedisTemplate() {
return redisTemplate;
}
public void setRedisTemplate(RedisTemplate redisTemplate) {
this.redisTemplate = redisTemplate;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
// TODO Auto-generated method stub
return this.name;
}
public Object getNativeCache() {
// TODO Auto-generated method stub
return this.redisTemplate;
}
public ValueWrapper get(Object key) {
// TODO Auto-generated method stub
System.out.println("get key");
final String keyf = key.toString();
Object object = null;
object = redisTemplate.execute(new RedisCallback