SpringMVC+Redis整合


带上我自己初步整合的架构Demo供大家参考:点击下载

Redis,能高速读取缓存数据,常用于PV较大的系统或业务。例如秒杀业务。
这里,整合了一下SpringMVC+Redis,希望对大家有帮助,说明一下, 这里用的是spirng-4.3.5,Jedis-2.6.1, Spring-data-redis-1.4.1.RELEASE.jar版本

application.properties:
# redis setting
redis.host=127.0.0.1
redis.port=6379
redis.pass=hzj123456
redis.maxIdle=20
redis.maxTotal=500
redis.maxWaitMillis=1000
redis.testOnBorrow=true

这里解释一下testOnBorrow:在获取连接时检测连接是否有效
当然还有其他配置,这里就不一一说明,而且我本人可能配置不是很完善,还有很多属性要看具体的系统情况选择,这里紧紧是测试使用


redis-config.xml:
    xmlns:p=" http://www.springframework.org/schema/p"  
    xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context=" http://www.springframework.org/schema/context"  
    xmlns:jee=" http://www.springframework.org/schema/jee" xmlns:tx=" http://www.springframework.org/schema/tx"  
    xmlns:aop=" http://www.springframework.org/schema/aop"  
    xsi:schemaLocation="
      http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context-4.0.xsd
      http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-4.0.xsd">

     
     
         
         
         
         
     
     
          p:host-name="${redis.host}" 
          p:port="${redis.port}" 
          p:password="${redis.pass}" 
          p:pool-config-ref="poolConfig"/>

     
        p:connection-factory-ref="connectionFactory"/>


Spring-MVC的配置文件 applicationContext-init.xml 里面引入redis
。。。
    
。。。

从上面的redis配置中可以看到,我设置了密码,redis默认安装时没有密码的,这里我们需要对当前地址和端口进行密码授权操作
如下:
Redis 默认安装时没有密码的,我们可以按照下列方式设置一个密码
 
   
设置密码后如何登陆:
redis.host=192.168.142.12   	 #Redis服务器地址
redis.port=6379        		 #服务端口

redis.timeout=3000      	 #超时时间:单位ms
redis.password=nick123    	 #授权密码


redis.pool.maxActive=200  #最大连接数:能够同时建立的“最大链接个数”  //高版本改为maxTotal

redis.pool.maxIdle=20     #最大空闲数:空闲链接数大于maxIdle时,将进行回收

redis.pool.minIdle=5      #最小空闲数:低于minIdle时,将创建新的链接

redis.pool.maxWait=3000    #最大等待时间:单位ms //高版本改为maxWaitMillis

redis.pool.testOnBorrow=true   #使用连接时,检测连接是否成功 

redis.pool.testOnReturn=true  #返回连接时,检测连接是否成功 



否则访问的过程中会出现: JedisDataException: ERR Client sent AUTH, but no password is set   这个错误


基本代码编写:
注入redisTemplate:( 注入的地方自己决定
SpringMVC+Redis整合_第1张图片

测试Redis

controller:···········································································

@ResponseBody
    @RequestMapping("/count")
    public String count(){
        int count = sqlUserService.count();
        System.out.println("count: "+count);
        return ""+count;
    }

service:·························································
/**
     * 返回记录总数
     * @return 返回记录总数
     */
    public int count(){
        return dao.count();
    }

dao:····················································
这里,我只带上一个使用了redis保存数据的方法count,大家参考使用
/**
     * 返回记录总数
     * @return 返回记录总数
     */
    @Override
    public int count(){
        int count = (int) redisTemplate.execute(new RedisCallback() {

            @Override
            public Object doInRedis(RedisConnection paramRedisConnection)
                    throws DataAccessException {
                byte[] c = redisTemplate.getStringSerializer().serialize("count");
                if(paramRedisConnection.exists(c)){
                    System.out.println("存在");
                    return Integer.parseInt(redisTemplate.getStringSerializer().deserialize(paramRedisConnection.get(c)));
                }else{
                    System.out.println("不存在");
                    int nowCount = mapper.count();
                    paramRedisConnection.set(
                            redisTemplate.getStringSerializer().serialize("count"), 
                            redisTemplate.getStringSerializer().serialize(""+nowCount));
                    return nowCount;
                }

            }

        });
        return count;
     }

测试访问:
第一次访问:

SpringMVC+Redis整合_第2张图片
第二次访问:



说明redis可用, 完美

你可能感兴趣的:(架构之路)