336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
Hiredis Subscribe/Publish
CWinThread 를 이용한 구현
struct event_base *base = event_base_new();
class CRedisConnect : public CWinThread
{
public:
redisAsyncContext *c;
// CWinThread extends
virtual BOOL InitInstance();
virtual int Run();
};
BOOL CRedisConnect::InitInstance()
{
return TRUE;
}
int CRedisConnect::Run()
{
c = redisAsyncConnect(redisServerIP, redisServerPort);
if (c->err) {
/* Let *c leak for now... */
return 1;
}
redisLibeventAttach(c, base);
int re2 = redisAsyncCommand(c, getCallback, NULL, "SUBSCRIBE foo");
event_base_dispatch(base);
return (0);
}
void getCallback(redisAsyncContext *c, void *r, void *privdata) {
redisReply *reply = (redisReply *)r;
if (reply == NULL)
{
LOG4CXX_DEBUG(g_log, "Subcribe reply == NULL");
}
// reply->type
// #define REDIS_REPLY_STRING 1
// #define REDIS_REPLY_ARRAY 2
// #define REDIS_REPLY_INTEGER 3
// #define REDIS_REPLY_NIL 4
// #define REDIS_REPLY_STATUS 5
// #define REDIS_REPLY_ERROR 6
else if (reply->type == REDIS_REPLY_ERROR)
{
LOG4CXX_DEBUG(g_log, "Subcribe reply type == REDIS_REPLY_ERROR");
}
else if (reply->type == REDIS_REPLY_ARRAY)
{
LOG4CXX_DEBUG(g_log, "reply->elements == " << reply->elements);
LOG4CXX_DEBUG(g_log, "reply->len == " << reply->len);
for (int i = 0; i < reply->elements; i++)
{
if (reply->element[i]->str != NULL)
LOG4CXX_DEBUG(g_log, "Subcribe reply array [" << i << "] == " << reply->element[i]->str);
}
}
else
{
LOG4CXX_DEBUG(g_log, "getCallback reply str : " << reply->str);
}
}
'Programming > Redis' 카테고리의 다른 글
| Hiredis SMEMBERS 활용 (0) | 2017.01.24 |
|---|---|
| Redis Client Connect Test (0) | 2016.10.26 |
| How to use Pub/sub with hiredis in C++? (0) | 2016.09.29 |
| hiredis fatal error C1853: (0) | 2016.09.29 |
| hiredis MFC import Visual Studio 2013 (0) | 2016.09.28 |

