java redis代码配置

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;


/**
 *
 * 该文件只做redis的配置相关, 操作由JedisComponent来实现
 */
public class JedisPoolInfos {


    private static JedisPool slavePool;


    private static JedisPool masterPool;


    /**
     * Jedis 读IP地址
     */
    private static String slaveHost = null;


    /**
     * Jedis 读端口地址
     */
    private static String slavePort = null;


    /**
     * Jedis 读密码
     */
    private static String slavePassword = null;




    /**
     * Jedis 读最大并发数
     */
    private static String slaveIdle = null;


    /**
     * Jedis 读连接超时时间
     */
    private static String slaveTimeout = null;


    /**
     * Jedis 读最大连接数
     */
    private static String slaveMaxTotal = null;




    /**
     * Jedis 写IP地址
     */
    private static String masterHost = null;


    /**
     * Jedis 写端口地址
     */
    private static String masterPort = null;


    /**
     * Jedis 写密码
     */
    private static String masterPassword = null;




    /**
     * Jedis 写最大并发数
     */
    private static String masterIdle = null;


    /**
     * Jedis 写连接超时时间
     */
    private static String masterTimeout = null;


    /**
     * Jedis 写最大连接数
     */
    private static String masterMaxTotal = null;


    /**
     * 数据库编号
     */
    private static Integer dbNumber = 0;


    /**
     * 建立连接池 真实环境,一般把配置参数缺抽取出来。
     */
    private static void createJedisSlavePool() {


        // 建立连接池配置参数
        JedisPoolConfig config = new JedisPoolConfig();


        // 设置最大连接数
        config.setMaxTotal(slaveMaxTotal == null ? 100 : Integer.parseInt(slaveMaxTotal));


        // 设置最大阻塞时间,记住是毫秒数milliseconds
        config.setMaxWaitMillis(slaveTimeout == null ? 3000 : Integer.parseInt(slaveTimeout));


        // 设置空间连接
        config.setMaxIdle(slaveIdle == null ? 50 : Integer.parseInt(slaveIdle));


        // 创建连接池
        slavePool = new JedisPool(
                config,
                slaveHost == null ? "888.88.888.888" : slaveHost,
                slavePort == null ? 6381 : Integer.parseInt(slavePort),
                slaveTimeout == null ? 3000 : Integer.parseInt(slaveTimeout),
                slavePassword == null ? "password" : slavePassword,
                dbNumber
        );


    }


    /**
     * 在多线程环境同步初始化
     */
    private static synchronized void poolSlaveInit() {
        if (slavePool == null)
            createJedisSlavePool();
    }


    /**
     * 获取一个jedis 对象
     */
    public static Jedis getSlaveJedis() {


        if (slavePool == null)
            poolSlaveInit();
        return slavePool.getResource();
    }


    /**
     * 归还一个连接
     */
    public static void returnSlaveRes(Jedis jedis) {
        slavePool.returnResource(jedis);
    }


    /**
     * 建立连接池 真实环境,一般把配置参数缺抽取出来。
     */
    private static void createJedisMasterPool() {


        // 建立连接池配置参数
        JedisPoolConfig config = new JedisPoolConfig();


        // 设置最大连接数
        config.setMaxTotal(masterMaxTotal == null ? 100 : Integer.parseInt(masterMaxTotal));


        // 设置最大阻塞时间,记住是毫秒数milliseconds
        config.setMaxWaitMillis(masterTimeout == null ? 3000 : Integer.parseInt(masterTimeout));


        // 设置空间连接
        config.setMaxIdle(masterIdle == null ? 50 : Integer.parseInt(masterIdle));


        // 创建连接池
        masterPool = new JedisPool(
                config,
                masterHost == null ? "888.88.888.888" : masterHost,
                masterPort == null ? 6380 : Integer.parseInt(masterPort),
                masterTimeout == null ? 3000 : Integer.parseInt(masterTimeout),
                masterPassword == null ? "password" : masterPassword,
                dbNumber
        );


    }


    /**
     * 在多线程环境同步初始化
     */
    private static synchronized void poolMasterInit() {
        if (masterPool == null)
            createJedisMasterPool();
    }


    /**
     * 获取一个jedis 对象
     */
    public static Jedis getMasterJedis() {


        if (masterPool == null)
            poolMasterInit();
        return masterPool.getResource();
    }


    /**
     * 归还一个连接
     */
    public static void returnMasterRes(Jedis jedis) {
        masterPool.returnResource(jedis);
    }


    public void setSlaveHost(String slaveHost) {
        this.slaveHost = slaveHost;
    }


    public void setSlavePort(String slavePort) {
        this.slavePort = slavePort;
    }


    public void setSlavePassword(String slavePassword) {
        this.slavePassword = slavePassword;
    }


    public void setSlaveIdle(String slaveIdle) {
        this.slaveIdle = slaveIdle;
    }


    public void setSlaveTimeout(String slaveTimeout) {
        this.slaveTimeout = slaveTimeout;
    }


    public void setSlaveMaxTotal(String slaveMaxTotal) {
        this.slaveMaxTotal = slaveMaxTotal;
    }


    public void setMasterHost(String masterHost) {
        this.masterHost = masterHost;
    }


    public void setMasterPort(String masterPort) {
        this.masterPort = masterPort;
    }


    public void setMasterPassword(String masterPassword) {
        this.masterPassword = masterPassword;
    }


    public void setMasterIdle(String masterIdle) {
        this.masterIdle = masterIdle;
    }


    public void setMasterTimeout(String masterTimeout) {
        this.masterTimeout = masterTimeout;
    }


    public void setMasterMaxTotal(String masterMaxTotal) {
        this.masterMaxTotal = masterMaxTotal;
    }


    public Integer getDbNumber() {
        return dbNumber;
    }


    public void setDbNumber(Integer dbNumber) {
        this.dbNumber = dbNumber;
    }


}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是 Java Redis 发布订阅的代码配置示例: 首先,在订阅者端,我们可以使用 Jedis 的 subscribe() 方法来订阅一个或多个频道,例如: ``` import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPubSub; public class Subscriber { public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); jedis.subscribe(new JedisPubSub() { @Override public void onMessage(String channel, String message) { System.out.println(String.format("Received message: %s from channel: %s", message, channel)); } }, "channel1", "channel2"); } } ``` 在这个示例中,我们使用 Jedis 的 subscribe() 方法来订阅两个频道:channel1 和 channel2。我们使用匿名内部类来实现 JedisPubSub 类的 onMessage() 方法,该方法用于处理接收到的消息,并将其打印到控制台上。 接下来,在发布者端,我们可以使用 Jedis 的 publish() 方法来向指定频道发布消息,例如: ``` import redis.clients.jedis.Jedis; public class Publisher { public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); jedis.publish("channel1", "hello, world!"); } } ``` 在这个示例中,我们同样使用 Jedis 的 publish() 方法来向频道 channel1 发布一条消息:hello, world!。 需要注意的是,发布者和订阅者可以在同一台机器上,也可以在不同的机器上。只要它们都连接到同一个 Redis 服务器,并且订阅者订阅了发布者所发布的频道,订阅者就可以接收到发布者所发布的消息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值