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:
<?xml version="1.0" encoding="UTF-8"?>
    xmlns:context=" http://www.springframework.org/schema/context"  
    xsi:schemaLocation="
 
     <!-- redis的配置 -->
     <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
         <property name="maxIdle" value="${redis.maxIdle}"/>
         <property name="maxTotal" value="${redis.maxTotal}"/>
         <property name="maxWaitMillis" value="${redis.maxWaitMillis}"/>
         <property name="testOnBorrow" value="${redis.testOnBorrow}"/>
     </bean>
     <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:host-name="${redis.host}" 
          p:port="${redis.port}" 
          p:password="${redis.pass}" 
          p:pool-config-ref="poolConfig"/>
 
     <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"
        p:connection-factory-ref="connectionFactory"/>
 
</beans>
 
Spring-MVC的配置文件 applicationContext-init.xml 里面引入redis
。。。
<!-- 引入redis -->
    <import resource="redis-config.xml"/>
。。。
 
从上面的redis配置中可以看到,我设置了密码,redis默认安装时没有密码的,这里我们需要对当前地址和端口进行密码授权操作
如下:
Redis 默认安装时没有密码的,我们可以按照下列方式设置一个密码
 
设置密码后如何登陆:
redis.host=127.0.0.1  	 #Redis服务器地址
redis.port=6379        		 #服务端口

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

 

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:( 注入的地方自己决定
 
测试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<Object>() {
 
            @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;
    }
 
测试访问:
第一次访问:
第二次访问:
 
说明redis可用, 完美

 

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值