使用集群式的连接池操作redis

2016-03-19|来源:

集群式连接池和普通的连接池主要的区别是:
1、普通连接池使用的是 JedisPool
2、集群式连接池使用的是 ShardedJedisPool

普通连接池的创建方式在上一节已经介绍过了,本次介绍集群式连接池的创建方式
// 定义集群信息
List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
shards.add(new JedisShardInfo("127.0.0.1", 6379));
shards.add(new JedisShardInfo("127.0.0.1", 6380));
// 定义集群连接接
ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards);

示例:
package com._656463.redis;
 
import java.util.ArrayList;
import java.util.List;
 
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisShardInfo;
import redis.clients.jedis.ShardedJedis;
import redis.clients.jedis.ShardedJedisPool;
 
/**
 * 集群式的连接池
 * 
 */
public class ShardedJedisPoolDemo {
 
    public static void main(String[] args) {
        // 构建连接池配置对象
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        // 设置最大连接数
        poolConfig.setMaxTotal(50);
 
        // 定义集群信息
        List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();
        shards.add(new JedisShardInfo("127.0.0.1", 6379));
        shards.add(new JedisShardInfo("127.0.0.1", 6380));
 
        // 定义集群连接接
        ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig,
                shards);
        ShardedJedis shardedJedis = null;
        try {
            // 从连接池中获取到jedis分片对象
            shardedJedis = shardedJedisPool.getResource();
 
            for (int i = 0; i < 100; i++) {
                shardedJedis.set("key" + i, "value" + i);
            }
 
            // 从redis中获取数据
            String value = shardedJedis.get("mytest");
            System.out.println(value);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null != shardedJedis) {
                // 关闭,检测连接是否有效,有效则放回到连接池中,无效则重置状态
                shardedJedis.close();
            }
        }
 
        // 关闭连接池,正常使用的时候,不用关闭
        shardedJedisPool.close();
    }
}


本文参数网络


相关问答

更多

SpringBoot整合redis后,是否自带了连接池管理

是的你只需要在你的配置文件稍微配置一下就能用,把我们项目的redis配置给你参考一下 redis: host: port: password: # 连接超时时间(毫秒) timeout: 10000 pool: # 连接池中的最大空闲连接 max-idle: 100 # 连接池中的最小空闲连接 min-idle: 10 # 连接池最大连接数(使用负值表示没有限制) max-active: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1 # # 连接池中的最大空闲 ...

nodejs 使用redis 为什么不用连接池

: node.js使用redis也是应该配置连接池的。 node.js中配置连接池可以考虑使用generic-pool模块

node mssql 连接池

generic-pool模块是nodejs的一个第三方模块,其作用为提供一个通用的连接池模块,可以通过generic-pool实现对tcp连接池或者MySQL数据库连接池等的管理。github的地址如下:https://github.com/coopernurse/node-pool // Create a MySQL connection pool with // a max of 10 connections, a min of 2, and a 30 second max idle time ...

python 的 redis 库,连接池怎么用

Redis 的连接池是多线程安全的、多进程安全的、自动重连的。 你扔 flask.g 之类的全局的地方当然也行,反正 Redis 总是会使用连接池(不指定它每次就用一个新的)。显式指定连接池的话差异不大,反正你总是要手动在某个全局的地方存一样东西(连接池对象或者 Redis 对象)。

java数据库连接池详细操作

是自己编的 可以引用 连接池思想就是这个啊 不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了; import java.io.FileInputStream; public class ConnectionPool{ private Vector<Connection> pool; private String url; private String username; private String password; private String driverCl ...

专题教程

相关文章

更多

最近更新

更多