Spring+Jedis分库的问题

今天部署新项目,需要用redis的另一个库,本项目用的是

<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.9.0</version>
		</dependency>

由于要用数据库分片,用的是shareJedis

查看了下redis.clients.jedis.JedisShardInfo ,有db参数

 private int connectionTimeout;
  private int soTimeout;
  private String host;
  private int port;
  private String password = null;
  private String name = null;
  // Default Redis DB
  private int db = 0;
  private boolean ssl;
  private SSLSocketFactory sslSocketFactory;
  private SSLParameters sslParameters;
  private HostnameVerifier hostnameVerifier;

有db参数,但是并没有用db作为构造参数,有setDb方法但是并没有getDb方法。

作为spring框架,并无法注入,JedisShardInfo 配置有方法

  public JedisShardInfo(String host) {
    super(Sharded.DEFAULT_WEIGHT);
    URI uri = URI.create(host);
    if (JedisURIHelper.isValid(uri)) {
      this.host = uri.getHost();
      this.port = uri.getPort();
      this.password = JedisURIHelper.getPassword(uri);
      this.db = JedisURIHelper.getDBIndex(uri);
      this.ssl = uri.getScheme().equals("rediss");
    } else {
      this.host = host;
      this.port = Protocol.DEFAULT_PORT;
    }
  }

方法就是转化为uri但是对于本人来并不适用

于是就写个类继承方法:

public class MyShareRedisInfo extends JedisShardInfo{
	private int db=0;
	public MyShareRedisInfo(String host, int port, int db) {
		super(host, port);
		this.setDb(db);
	}
	public int getDb() {
		return db;
	}
	public void setDb(int db) {
		this.db = db;
	}
}
然后配置
<bean id="jedisShardInfo" class="**.web.utils.redis.MyShareRedisInfo">
		<constructor-arg index="0" value="${redis.ip}" />
		<constructor-arg index="1" value="${redis.port}" type="int" />
		<constructor-arg index="2" value="${redis.dbIndex}" />
		<property name="password" value="${redis.pass}" />
	</bean>

完美解决


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值