springmvc+redis项目搭建

基本架构:mybatis、springmvc、spring、maven

缓存:redis

缓存的使用就是为了提高效率,避免重复的IO操作浪费效率。
查询时使用,如selectById
value:缓存区名称,key:在缓存区内对应的键, 
表示查询缓存区“user”中key为参数id的缓存,如果没有则查询数据库,并把数据放入缓存中(注意这里缓存的数据是指方法执行完成返回的结果),以后直接从缓存取数据。
@Cacheable(key = "#id", value = "user")

查询时使用,如getAll

 

value:缓存区名称,key:没有指定采用默认生成策略(本项目使用:cn.my.base.RedisCacheConfig) 
@Cacheable(value = "users")

 

插入数据使用:@CachePut注解的方法一定会执行,不管有没有缓存,方法的返回值放入缓存中

@CachePut(value = "user", key = "#user.id")

 

删除、更新时使用:beforeInvocation=true表示不管方法执行是否成功,在方法执行之前删除缓存
这里注意缓存一定要删除干净,不仅要删除“user”缓存区,还要删除“users”缓存区
@CacheEvict(key = "#user.id", value = "user", beforeInvocation = true)
@CacheEvict(value="users",allEntries=true,beforeInvocation=true)
像上边这种一下执行两条及以上缓存操作的,要用组合缓存操作,即改为
@Caching(
evict={
@CacheEvict(key = "#user.id", value = "user", beforeInvocation = true),
@CacheEvict(value="users",allEntries=true,beforeInvocation=true)
}

 

)

 

service:

package cn.my.service.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.CachePut;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.cache.annotation.Caching;
import org.springframework.stereotype.Service;

import cn.my.base.BaseDao;
import cn.my.base.BaseServiceImpl;
import cn.my.dao.UserMapper;
import cn.my.model.User;
import cn.my.service.UserService;

@Service
public class UserServiceImpl extends BaseServiceImpl implements UserService
{
	@Resource
	private UserMapper userMapper;

	@Override
	public BaseDao getDao()
	{
		return userMapper;
	}

	/**
	 * 
	 * @Description: 获取全部
	 * @throws
	 * @author kang
	 * @date 2016年4月25日
	 */
	@Cacheable(value = "users")
	public List getAll()
	{
		return userMapper.selectByExample(null);
	}

	/**
	 * 
	 * @Description: 插入数据
	 * @throws
	 * @author kang
	 * @date 2016年4月21日
	 */
	@Override
	@Caching(//
	put = {@CachePut(value = "user", key = "#user.id")},//
	evict = {@CacheEvict(value = "users", allEntries = true, beforeInvocation = true)}//
	)
	public User insert(User user)
	{
		userMapper.insertSelective(user);
		return user;
	}

	/**
	 * 
	 * @Description: 查询
	 * @throws
	 * @author kang
	 * @date 2016年4月21日
	 */
	@Override
	@Cacheable(key = "#id", value = "user")
	public User selectById(String id)
	{
		return super.selectById(id);
	}

	/**
	 * 
	 * @Description: 更新
	 * @throws
	 * @author kang
	 * @date 2016年4月21日
	 */
	@Override
	@Caching(//
	evict = {@CacheEvict(value = "user", key = "#user.id", beforeInvocation = true),//
			@CacheEvict(value = "users", allEntries = true, beforeInvocation = true)//
	})
	public User update(User user)
	{
		return super.update(user);
	}

	/**
	 * 
	 * @Description: 删除
	 * @throws
	 * @author kang
	 * @date 2016年4月21日
	 */
	@Override
	@Caching(//
	evict = {@CacheEvict(value = "user", key = "#id", beforeInvocation = true),//
			@CacheEvict(value = "users", allEntries = true, beforeInvocation = true)//
	})
	public int delete(String id)
	{
		return super.delete(id);
	}
}

 

 

 

实例完整项目下载:点击打开链接

你可能感兴趣的:(redis,springmvc,架构)