C++测试redis中的publish/subscribe

本文档展示了如何使用C++测试Redis的publish/subscribe功能。通过`Policy`类整合`redis_publisher.h`、`redis_subscriber.h`等文件,实现发布和接收消息。测试代码创建了一个`Policy`实例,不断发布消息并睡眠,实现了数据的自发自收,适用于项目中简单的异构数据收发。
摘要由CSDN通过智能技术生成
运用
http://blog.csdn.net/xumaojun/article/details/51558237 中的redis_publisher.h redis_publisher.cpp redis_subscriber.h redis_subscriber.cpp四个文件,做一个操作类进行测试.
头文件 Policy.h
#pragma once
#include "redis_publisher.h"
#include "redis_subscriber.h"
#include <iostream>

using namespace std;

class Policy
{
public:
    Policy();
    ~Policy();
    void publish();
    static void recieve_message(const char *channel_name,const char *message, int len);

    CRedisPublisher publisher;
    CRedisSubscriber subscriber;
};
代码文件 Policy.cpp
#include "Policy.h"

Policy::Policy()
{
    bool ret = publisher.init();
    if (!ret) {
        printf("Init failed.\n");

    }

    ret = publisher.connect();
    if (!ret) {
        printf("connect failed.");

    }

    //***********************************
    CRedisSubscriber::NotifyMessageFn fn =
        bind(recieve_message, std::tr1::placeholders::_1,
             std::tr1::placeholders::_2, std::tr1::placeholders::_3);

    bool ret1 = subscriber.init(fn);
    if (!ret1) {
        printf("Init failed.\n");
    }

    ret1 = subscriber.connect();
    if (!ret1) {
        printf("Connect failed.\n");
    }
    subscriber.subscribe("test-channel");
}

Policy::~Policy()
{
    publisher.disconnect();
    publisher.uninit();

    subscriber.disconnect();
    subscriber.uninit();
}


void Policy::publish()
{
    cout<<"Policy::publish()...\n"<<endl;
    publisher.publish("test-channel", "Test message");
}


void Policy::recieve_message(const char *channel_name,
    const char *message, int len)
{
    printf("Recieve message:    channel name: %s    message: %s\n",
        channel_name, message);
}

测试文件 testPolicy.cpp
#include "Policy.h"
int main(int argc, char *argv[])
{
    Policy m_policy;
    int i=0;
    while(i<8){
        m_policy.publish();
        sleep(2);
        cout<<"main sleep...\n";
        i++;
    }
    return 0;
}

Makefile
EXE=server_main client_main  
CC=g++  
FLAG=-lhiredis -levent -pthread  
OBJ=redis_publisher.o redis_subscriber.o Policy.o testPolicy.o  


all:$(EXE)

$(EXE):$(OBJ)
	$(CC) -o testPolicy  redis_publisher.o redis_subscriber.o Policy.o t
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值