Redis 订阅功能实现

DataHelper.java

package com.phoenix.db;

import com.phoenix.core.db.dao.Dao;
import com.phoenix.core.db.impl.CacheService;
import com.phoenix.core.tools.Tools;
import com.phoenix.socket.DBServer;
import org.slf4j.Logger;
import redis.clients.jedis.Jedis;

/**
 * 数据操作
 * Created by Lovell on 7/5/16.
 */
public class DataHelper extends Dao {
    private static Logger logger = Tools.getLogger(DBServer.Log_FileName, DBServer.class);

    private static DataHelper dataHelper;
    public static DataHelper getInstance() {
        if (dataHelper == null) {
            dataHelper = new DataHelper();
        }
        return dataHelper;
    }

    /**
     * 监听 redis 事件
     */
    public void startListenRedisEvent(){
        // 由于监听会阻塞线程,所以使用线程来监听
        (new Thread() {
            public void run() {
            // 获得一个 redis 链接
            Jedis jedis = CacheService.getInstance().getJedis();
            RedisEventListener listener = new RedisEventListener();

            logger.info("开始监听Redis事件......");

            jedis.psubscribe(listener, "__keyevent@0__:expired");
            }
        }).start();
    }
}

RedisEventListener.java

package com.phoenix.db;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.JedisPubSub;

/**
 * Redis时间监听类
 */
public class RedisEventListener extends JedisPubSub {
    private static Logger logger = LoggerFactory.getLogger(RedisEventListener.class);

    // 取得订阅的消息后的处理
    public void onMessage(String channel, String message) {
        //System.out.println(channel + "=" + message);
        logger.info("收到redis事件onMessage:{} = {}", channel, message);
    }

    // 取得按表达式的方式订阅的消息后的处理
    public void onPMessage(String pattern, String channel, String message) {
        //System.out.println(pattern + "=" + channel + "=" + message);
        logger.info("收到redis事件onPMessage:{} = {} = {}", pattern, channel, message);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

VCHH

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值