知识点

相关文章

更多

最近更新

更多

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

2019-03-19 21:34|来源: 网路

集群式连接池和普通的连接池主要的区别是:
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();
    }
}


本文参数网络


redis知识点

redis快速入门

reids常用命令

redis数据结构

java_API_客户端

Jedis

Tlcache

redis_持久化

AOF

RDB

发布订阅(pub/sub)

redis_事件

redis事务

redis通讯协议

RESP(Redis Serialization Protocol)

redis高可用

redis哨兵

监控(Monitoring) 提醒(Notification) 自动故障迁移(Automatic failover)

redis主从复制

  • 复制模式

    1. 主从复制
    2. 从从复制
  • 复制过程

    • slave向master发送sync命令;
    • master开启子进程执行bgsave写入rdb文件;
    • master发送缓存和RDB文件给slave;
    • master发送数据发送给slave完成复制;

redis集群(Redis_Cluster)

相关问答

更多
  • 是自己编的 可以引用 连接池思想就是这个啊 不过你可以下载 已经编好的连接池 上面有API 自己可以按照这个思想 就回用 了; import java.io.FileInputStream; public class ConnectionPool{ private Vector pool; private String url; private String username; private String password; private String driverClassNa ...
  • 在spring配置文件中我们可以进行配置Redis,但是为了将Redis分离容易修改我将它卸载另外一个xml文件中,只要在spring配置文件中引入这个Redis配置文件就行了。
  • spring 可以不用连接池吗,为什么? 当然可以。你首先要明白spring是什么。 我实现计算两个整数的和这样一个需求,是否需要连接池呢?我要连接池干嘛呢? 就算我连了数据库,我完全可以用jdbc连啊,你可以写自己的类。 就算用了连接池组件,往往还可以配置是否是连接池的属性。也就相当于不用连接池,而是每次创建一个新的连接。 你问这个问题,说明你还有弄没有明白spring是什么,多看看书吧,或者到www.itcast.net上看黎活明老是的spring2.5视频教程。
  • 在spring配置文件中我们可以进行配置Redis,但是为了将Redis分离容易修改我将它卸载另外一个xml文件中,只要在spring配置文件中引入这个Redis配置文件就行了。
  • 是的你只需要在你的配置文件稍微配置一下就能用,把我们项目的redis配置给你参考一下 redis: host: port: password: # 连接超时时间(毫秒) timeout: 10000 pool: # 连接池中的最大空闲连接 max-idle: 100 # 连接池中的最小空闲连接 min-idle: 10 # 连接池最大连接数(使用负值表示没有限制) max-active: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1 # # 连接池中的最大空闲连接 # ...
  • node mssql 连接池[2022-08-06]

    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 var ...
  • impala 支持jdbc 所以druid,c3p0等常用连接池都可以,但是在高并发的情况下会有问题。
  • 如何实现连接池[2023-04-22]

    连接池的作用就是预先和数据库建立好若干的连接并存储在连接池中,在使用的时候程序直接调用这些连接池中的连接而不是和数据库在发生连接建立的过程。 在一个程序中建立和销毁连接是很耗费资源的一件事情,所以连接池最主要的作用就是为了提高程序的运行效率。 根据上面的说法我们可以得出连接池实现的方法: 1.必须有一个容器来存储一些已有的连接,这样我们最容易想到的就是数组或者一些JAVA容器。 2.连接池的特性是取出或者放回去一个连接,所以最符合这种特性的容器应该是栈特性,所以我们一般使用LinkedList来当做连接池的 ...