Redis分片连接池与普通连接池使用

1.普通连接池

    对稳定性、数据量要求不大小型应用可以使用它,连接池只能配置一个redis服务

	/**
	 * 测试普通连接池使用方式
	 */
	@Test
	public void test2() {
		//1.实例化Jedis连池配置对象
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(10);
		config.setMaxWaitMillis(30);
		//2.实例化连接池
		JedisPool pool = new JedisPool(config,"192.168.245.112", 6381);
		//3.拿到连接
		Jedis redis = pool.getResource();
		//4.使用连接
		redis.set("user_name", "Messi");
	}

2.分片连接池

    先说说分片的概念:在分布式系统中,根据输入定位数据存放服务器的计算过程,其中计算用到算法非常重要,会极大的影响存储、后期维护、数据迁移等

    分片连接池和普通连接池适用场景刚好相反,高可用、高并发的大型应用需要使用分片连接池,可以配置整个redis集群的服务器,连接池根据哈希一致性算法,将数据存放到不同的Redis内存数据库中

	/**
	 * 测试分片连接池的使用方式
	 */
	@Test
	public void test1() {
		//1.实例化Jedis分片对象,并放入到一个List当中
		List<JedisShardInfo> list = new ArrayList<>();
		list.add(new JedisShardInfo("192.168.245.111", 6381));
		list.add(new JedisShardInfo("192.168.245.111", 6382));
		list.add(new JedisShardInfo("192.168.245.111", 6383));
		
		//2.实例化Jedis连池配置对象
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxTotal(10);
		config.setMaxWaitMillis(30);
		
		//3.实例化Jedis连接池
		ShardedJedisPool pool = new ShardedJedisPool(config, list);
		
		//4.拿到一个连接
		ShardedJedis redis = pool.getResource();
		//5.添加数据
		for(int i=0;i<1000;i++) {
			redis.set("item_"+i, Double.toString(Math.random()));
		}
		//6.获取数据
		for(int i=0;i<10;i++) {//获取数据意思一下就行,不需要全部取出来看一遍
			System.out.println(redis.get("item_"+i));
		}
	}

 

如果对Redis还有更高要求的,可以看看哈希一致性、哈希取余、自定义轮询分片的比较

以上两种方式都不是现在企业所采用的,现在已经都使用Redis集群了,集群的内部数据存储方式为哈希槽,其使用方式可以参考Redis集群搭建与使用方法

转载于:https://my.oschina.net/u/3049601/blog/1788805

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值