zoukankan      html  css  js  c++  java
  • Spring整合redis

    1.环境

      需要spring.jar、common-pool.jar.jedisjar

    2.简介

      分片(shardedjedis)将不同的key分配到不同的redis server上,达到横向扩展的目的。

    3.配置application.xml

    
    
    <!-- 加载redis配置文件 -->
    <context:property-placeholder location="classpath:redis.properties"/>
    <!-- 连接池配置 -->
    <
    bean id="poolCfg" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxTotal" value="${redis.pool.maxActive}" /> <property name="maxIdle" value="${redis.pool.maxIdle}" /> <property name="minIdle" value="1"/> <property name="maxWaitMillis" value="${redis.pool.maxWait}" /> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="true"/> </bean>
    <!-- port记得指定为int类型 --> <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"> <constructor-arg index="0" ref="poolCfg"></constructor-arg> <constructor-arg index="1"> <list> <bean name="master" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis1.ip}"></constructor-arg> <constructor-arg index="1" value="${redis1.port}" type="int"></constructor-arg> <property name="password" value="${redis2.auth}"/> </bean> <bean name="slaver" class="redis.clients.jedis.JedisShardInfo"> <constructor-arg index="0" value="${redis2.ip}"></constructor-arg> <constructor-arg index="1" value="${redis2.port}" type="int"></constructor-arg> <property name="password" value="${redis2.auth}"/> </bean> </list> </constructor-arg> </bean>

    4.获取资源,释放资源

    @Repository("jedisDataResource")
    public class JedisDataResourceImpl implements JedisDataResource{
    
        @Resource(name="shardedJedisPool")
        private ShardedJedisPool sharededJedisPool;
        
        @Override
        public ShardedJedis getResource() {
            ShardedJedis shardedJedis=null;
            try {
                shardedJedis =sharededJedisPool.getResource();
                return shardedJedis;
            } catch (Exception e) {
                if(null != sharededJedisPool)
                    sharededJedisPool.close();
            }
            return null;
        }
    
        @Override
        public void returnResource(ShardedJedis shardedJedis) {
            if(shardedJedis!=null)
                shardedJedis.close();
        }
        
    }

    5.dao层

    public interface UserRedisDao {
        
        /**获取用户名*/
        double getUserName(String key);
    
    }

    @Repository("userRedisDao")
    public class UserRedisDaoImpl implements UserRedisDao{
        
        @Resource
        private JedisDataResource jedisDataResource;
        
        @Override
        public String getUserName(String key) {
            ShardedJedis shardedJedis = jedisDataResource.getResource();
            if (null == shardedJedis)
                return null;
            try {
                return shardedJedis.get(key);
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                jedisDataResource.returnResource(shardedJedis);
            }
        }

    6.service

    public interface CommodityRedisService {
        
        String getUserName(String key);
        
    }
    @Service("userRedisService")
    public class UserRedisServiceImpl implements UserRedisService{
            
            @Autowired
            private UserRedisDao UserRedisDao;
    
            @Override
            public String increaseCollectNum(String key) {
                return userRedisDao.getUserName(key);
            }
    }
  • 相关阅读:
    司徒正美--前端招聘与前端卖身的困境
    解密中国互联网
    将网页设置为允许 XMLHttpRequest 跨域访问
    window.location.hash属性介绍
    解密中国互联网
    javascript多种继承方式(函数式,浅复制,深复制,函数绑定和借用)
    javascript类式继承函数最优版
    javascript类式继承最优版
    javascript数组去重
    查找字符串中出现最多的字符和个数?
  • 原文地址:https://www.cnblogs.com/rookie404/p/5878052.html
Copyright © 2011-2022 走看看