• 针对JedisShardInfo中无法修改db的解决办法


    package com.ldr.bean;
    
    import java.lang.reflect.Field;
    
    import redis.clients.jedis.JedisShardInfo;
    
    public class MyJedisInfo {
        
        String host;
        int port;
        int db;
    
        public JedisShardInfo newInstance() throws NoSuchFieldException, SecurityException, IllegalArgumentException, IllegalAccessException {  
            JedisShardInfo jedisShardInfo=new JedisShardInfo(host,port) ;
            Class<? extends JedisShardInfo> clz = jedisShardInfo.getClass();
            Field declaredField = clz.getDeclaredField("db");
            declaredField.setAccessible(true);
            declaredField.set(jedisShardInfo, db);
            return jedisShardInfo;
        }
    
        public String getHost() {
            return host;
        }
    
        public void setHost(String host) {
            this.host = host;
        }
    
        public int getDb() {
            return db;
        }
    
        public void setDb(int db) {
            this.db = db;
        }
        public int getPort() {
            return port;
        }
    
        public void setPort(int port) {
            this.port = port;
        }  
    }

    spring中的application.xml中配置如下

        
        <!-- spring集成redis -->
        <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
            <property name="maxTotal">
            <value>${redis.maxTotal}</value>
            </property>
            <property name="maxIdle">
             <value>${redis.maxIdle}</value>
            </property>
            <property name="testOnBorrow" value="true"/>
            <property name="testOnReturn" value="true"/>
        </bean>
       
         <bean id="shardedJedisPool" class="redis.clients.jedis.ShardedJedisPool"  scope="singleton">
            <constructor-arg index="0" ref="jedisPoolConfig" />
            <constructor-arg index="1">
                <list>
                    <!-- <bean class="redis.clients.jedis.JedisShardInfo">
                        <constructor-arg name="host" value="${redis.host}" />
                        <constructor-arg name="port" value="${redis.port}" />
                    </bean> -->
              
                    <ref bean="jedisShardInfo"/><!-- 生产环境请换成上述 -->
                </list>
            </constructor-arg>
        </bean>
        
        <!-- 以下配置上生产请注释掉  begin-->
        <bean id="jedisFactory" class="com.ldr.bean.MyJedisInfo">
            <property name="host" value="${redis.host}"></property>
            <property name="port" value="${redis.port}"></property>
            <property name="db" value="${redis.db}"></property>
        </bean>  
         
        <bean id="jedisShardInfo" class="redis.clients.jedis.JedisShardInfo"  
            factory-bean="jedisFactory" factory-method="newInstance" >  
        </bean> 
         <!-- 以上配置上生产请注释掉 end -->
  • 相关阅读:
    2019-1-17 水晶报表自动补空行及格线(无分组版)
    通过ssh证书远程登录
    kali linux下不能以root权限运行vlc的解决办法
    SSH服务:packet_write_wait: Connection to 67.218.143.160 port 22: Broken pipe错误处理
    python系列--函数--递归函数
    python虚拟环境安装pyqt5
    docker API接口service update错误记录 error while removing network:…
    docker service create api参数
    docker api参数文档
    docker 集群
  • 原文地址:https://www.cnblogs.com/wangyang108/p/8962925.html
Copyright © 2020-2023  润新知