用的是最新的jedis-2.6.2.jar这个包,这个和以前的有点不同。还需要添加spring-data-redis-1.2.1.RELEASE.jar和commons-pool2-2.3.jar。
在类路径下创建spring-redis-config.xml文件
由于引用配置文件,使用不了表达式,这里写死了。使用表达式启动就报错,我也不知道为什么。
##redis.host=localhost ##redis.port=6379## redis.pass= ##redis.maxIdle=300## redis.maxTotal=512##redis.maxWaitMillis=1000 ##redis.testOnBorrow=true
redis.properties文件配置。
以前的版本应该有配置redis.maxActive但是看了源码,是没有setMaxActive方法的,所以不能注入,改用了redis.maxTotal。就因为这个弄了挺长时间的。
在web.xml配置spring-redis-config.xml文件
contextConfigLocation classpath*:spring-redis-config.xml
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.RedisSerializer;public abstract class AbstractBaseRedisDao{ @Autowired protected RedisTemplate redisTemplate; public void setRedisTemplate(RedisTemplate redisTemplate) { this.redisTemplate = redisTemplate; } /** * 获取 RedisSerializer * ------------------------------ */ protected RedisSerializer getRedisSerializer() { return redisTemplate.getStringSerializer(); } }
创建一个抽象类,然后让使用到的类都继承这个方法。
@Service("areaRedisService")public class AreaRedisServiceextends AbstractBaseRedisDao { public boolean add(final Area area) { boolean result = redisTemplate.execute(new RedisCallback () { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = getRedisSerializer(); byte[] key = serializer.serialize(area.getId()+""); byte[] name = serializer.serialize(area.getName()); return connection.setNX(key, name); } }); return result; } public Area get(final String keyId) { Area result = redisTemplate.execute(new RedisCallback () { public Area doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer serializer = getRedisSerializer(); byte[] key = serializer.serialize(keyId); byte[] value = connection.get(key); if (value == null) { return null; } String name = serializer.deserialize(value); return new Area(Integer.valueOf(keyId),name,null); } }); return result; } }
@Autowired AreaRedisService areaRedisService; private String path = "/WEB-INF/jsp/"; @RequestMapping("/area/redis.htm") public ModelAndView areaRedis(HttpServletRequest request, HttpServletResponse response,String name) throws Exception { ModelAndView mv = new ModelAndView(path+"add.html"); Area area = new Area(); area.setCreateTime(new Date()); area.setCommon(true); area.setDeleteStatus(false); area.setLevel(4); area.setName(name); area.setParentId(null); area.setSequence(1); area.setId(1); areaRedisService.add(area); mv.addObject("area", area); mv.addObject("arearedis",areaRedisService.get(area.getId()+"")); return mv; }
这是controller的方法,这里使用了spring的注解。
使用注解,需要在上面的spring-redis-config.xml文件加入<context:component-scan base-package="基础包路径"/>配置了扫描路径可以不配置<context:annotation-config/>,因为前面的包含了后面的,他会激活@Controller,@Service,@Autowired,@Resource,@Component等注解。
http://www.cnblogs.com/hjy9420/p/4278002.html