windows环境下 springMVC+jdbc+redis整合配置

好久不写写博客了,最近不是很忙,就给自己充充电,研究研究redis,最近一些项目也有类似的问题出现,用户频繁访问数据库,并且用户需要的很多数据并不频繁更行,没必要每次都去查询数据库,否则数据库亚历山大啊,尤其是手机平板客户端的一些数据需要频繁交互却又不会频繁更新,对于数据库的鸭梨很大,于是就想着把那些常用的数据放到缓存里,对于缓存框架目前我所知道的只有memcached和redis,redis,一下是个人总结的关于两者之间的区别

1.memcached把数据全部存储在内存,断电后数据就真挂了,数据全部丢失,然而redis会把部分数据转存到硬盘,而且转存方式也是可配置的,也就是redis持久化的可配置更加保障了数据的安全性,即使断电了针对redis的持久化数据并不会安全丢失,再次启动时可以将持久化的数据再一次载入使用,数据丢失的代价不是很大

2.redis所支持的数据类型远比memcached要多的多吧

以上两点我想是他们最主要的区别了吧,小弟才疏学浅,若有不对之处请不吝赐教

下面开始配置和整合

1.对于springMVC+jdbc的配置主要在于三个文件applicationContext.xml springmvc-servlet.xml web.xml

 @1.首先配置applicationContext.xml。无非就是数据源、事务、以及jdbc模板的配置吧

数据源的配置,此处用了连接池c3p0,引入数据源属性文件

   
     
     	
     	
     	
     	
     	  
     	 
     	
     	
     	  
     	 
     	
     

jdbc模板的配置

    
        
    
事务的配置 先配置一个jdbc的事务管理器,然后声明一个事务的切面,也就是事务生效的切面,然后配置对切面下那些方法需要事务拦截,配置均可用通配符如下

    
     	
     
     
     
     
     	
     
     
     	
     		
     		
     		
     		
     		
     	
     
     
     
     
     	
     
@2再看springmvc-servlet.xml的配置 此处配置的是一些拦截器、扫描路径以及一些不需要过滤的文件的路径等等



    
    
    
    
    
    
    
    
    
    	
    		
			
    	
    
    
     
    
    

    
    	
    	
    
    
@3web.xml的配置 此处配置的是一些编码、spring的控制器、以及一些文件的加载配置



	
	
		webAppRootKey
    	springmvc.root
  	  
	
	
		contextConfigLocation
		classpath:/sysconf/applicationContext.xml
  	  
  	
  	
  	org.springframework.web.context.ContextLoaderListener
  

  
  	springmvc
  	org.springframework.web.servlet.DispatcherServlet
  	
  		contextConfigLocation
  		classpath:/sysconf/springmvc-servlet.xml
  	
  	1
  
  
  
  	springmvc
  	*.do
  
  
  
  	encodingFilter
  	org.springframework.web.filter.CharacterEncodingFilter
  
  
  
  	encodingFilter
  	/*
  
  	
  
    /company/main/main.jsp
  


以下是导入的jar包
下面看spring-data-redis配置 特别的简单 直接在applicationContext.xml中配置如下即可

     
     
     	  
          
             
          
          
             
        
     

看上去和那个jdbcTemplete特别像吧?

下面做两个例子来看看
Controller:
@Controller
@RequestMapping("/company/companyModule.do")
public class CModuleController {
	@RequestMapping(params="method=test1")
	public void test1(){
		CModuleInfo info=new CModuleInfo();
		info.setId(1000);
		info.setModuleCode("1000Code");
		info.setModuleIndex("1000");
		info.setModuleName("缓存测试");
		info.setModulePreCode("#");
		info.setModuleStatus("1");
		info.setModuleType("1");
		info.setModuleUrl("=====");
		this.redisService.addCommentInfoCache(info);
	}
	
	
	@RequestMapping(params="method=test2")
	public void test2(){
		List list=this.redisService.getCommentInfoCache("1000Code");
		for (CModuleInfo moduleInfo : list) {
			System.out.println(moduleInfo.getModuleCode()+"====="+moduleInfo.getModuleName());
		}
	}
}

bean:
public class CModuleInfo implements Serializable{
	private int id;
	private String moduleCode;
	private String moduleName;
	private String modulePreCode;
	private String moduleUrl;
	private String moduleStatus;
	private String moduleIndex;
	private String moduleType;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getModuleCode() {
		return moduleCode;
	}
	public void setModuleCode(String moduleCode) {
		this.moduleCode = moduleCode;
	}
	public String getModuleName() {
		return moduleName;
	}
	public void setModuleName(String moduleName) {
		this.moduleName = moduleName;
	}
	public String getModulePreCode() {
		return modulePreCode;
	}
	public void setModulePreCode(String modulePreCode) {
		this.modulePreCode = modulePreCode;
	}
	public String getModuleUrl() {
		return moduleUrl;
	}
	public void setModuleUrl(String moduleUrl) {
		this.moduleUrl = moduleUrl;
	}
	public String getModuleStatus() {
		return moduleStatus;
	}
	public void setModuleStatus(String moduleStatus) {
		this.moduleStatus = moduleStatus;
	}
	public String getModuleIndex() {
		return moduleIndex;
	}
	public void setModuleIndex(String moduleIndex) {
		this.moduleIndex = moduleIndex;
	}
	public String getModuleType() {
		return moduleType;
	}
	public void setModuleType(String moduleType) {
		this.moduleType = moduleType;
	}
	public CModuleInfo(int id, String moduleCode, String moduleName,
			String modulePreCode, String moduleUrl, String moduleStatus,
			String moduleIndex, String moduleType) {
		super();
		this.id = id;
		this.moduleCode = moduleCode;
		this.moduleName = moduleName;
		this.modulePreCode = modulePreCode;
		this.moduleUrl = moduleUrl;
		this.moduleStatus = moduleStatus;
		this.moduleIndex = moduleIndex;
		this.moduleType = moduleType;
	}
	public CModuleInfo() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	
}

redis服务接口:
public interface RedisService {
	/** 
     * 添加缓存信息 
     * @param commentInfo 
     */  
    public void addCommentInfoCache(CModuleInfo commentInfo);
    
    
    public List getCommentInfoCache(String subjectCommentID);
}

redis接口实现类:
@Service("redisService")
public class RedisServiceImpl implements RedisService {
	
    @Autowired
    private RedisTemplate redisTemplate;
    private String commentInfoKey="commentInfo";
    @Resource(name="redisTemplate") 
    private ListOperations commentInfoHash;
    

    public void addCommentInfoCache(CModuleInfo commentInfo){  
    	commentInfoHash.leftPush(commentInfoKey+"_"+commentInfo.getModuleCode(), commentInfo);   
    	commentInfoHash.trim(commentInfoKey+"_"+commentInfo.getModuleCode(), 0, 1);
    } 
    
    
  
    public List getCommentInfoCache(String subjectCommentID){  
        List list=  commentInfoHash.range(commentInfoKey+"_"+subjectCommentID, 0, -1);//获取所有  
        if(list==null)  
           list= new ArrayList();  
        return list;  
    }
}

到这里还应该干一件事情,就是在自己的机子上安装redis服务,并且开启,这个直接去网上下载最新版2.6的redis,解压后,进入解压目录,运行redis-server.exe redis.conf就好了
在这个例子里面 test1是将实体类存到了redis,test2是将存进去的redis取出来 测试是成功的!简单的例子大家可以看看

再抽时间研究研究redis集群,小有成果的话与大家分享
 
  

你可能感兴趣的:(windows环境下 springMVC+jdbc+redis整合配置)