1:springboot 配置修改:

1.1  yml 文件:

springboot + BloomFilter 改造redis哨兵模式

   1.2  

redisPool 对象换成  JedisSentinelPool   当然如果原来是用spring自带的 templateredis就不需要改
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxTotal(maxActive);
jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMinIdle(minIdle);
// 设置从连接池中取一个连接出来前进行有效性检验(如果检验失败,则从池中去除连接并尝试取出另一个)
jedisPoolConfig.setTestOnBorrow(true);
// 空闲期间对连接池中的连接的有效性进行检验
jedisPoolConfig.setTestWhileIdle(true);
// 2018-12-30 chen.mz Change the constructor without password and designation the database.

Set<String> sentinels = Sets.newHashSet(StringUtils.split(nodes, ","));

JedisSentinelPool sentinelJedisPool = new JedisSentinelPool(master, sentinels, jedisPoolConfig, Protocol.DEFAULT_TIMEOUT);

1.3:在使用redisPool的地方获取redis信息改成:

public static JedisSentinelPool jedisPool = (JedisSentinelPool) ServiceLocator.getInstance().getBeanFactory().getBean("redisPoolFactory");

public static Jedis getJedis() {
    Jedis jedis = jedisPool.getResource();
    return jedis;
}

到这里redis就改造完毕,下面是布隆过滤器的改造:

布隆过滤器改造:

原来的布隆过滤器初始化代码(单机模式):

//  @Bean
// public BloomFilter<String> bloomFilter() {
//    logger.info("begin to init bloomfilter...");
//    BloomFilter<String> bloomFilter = new FilterBuilder(expectedElements, falsePositiveProbability)
//          .name(filterName) //use a distinct name
//           .redisBacked(true)
//           .redisHost(host) //Default is localhost
//           .redisPort(port) //Default is standard 6379
//           .buildBloomFilter();
//    logger.info("bloomfilter init successed.");
//    return bloomFilter;
// }

 

改造后:

/*
哨兵模式布隆过滤器
 */
@Bean
public BloomFilter<String> bloomFilter() {
   logger.info("begin to init bloomfilter...");
   Set<String> sentinels = Sets.newHashSet(StringUtils.split(nodes, ","));
   BloomFilter<String> bloomFilter = new FilterBuilder(expectedElements, falsePositiveProbability)
         .name(filterName) //use a distinct name
          .redisBacked(true)
         .pool(RedisPool.sentinelBuilder()
               .master(master)
               .sentinels(sentinels)
               .database(database)
               .redisConnections(connections)
               .build())
          .buildBloomFilter();
   logger.info("bloomfilter init successed.");
   return bloomFilter;
}

改造完成!

 

相关文章:

  • 2021-10-20
猜你喜欢
  • 2021-07-21
  • 2021-09-24
  • 2021-05-10
  • 2021-08-01
相关资源
相似解决方案