目录
基本概念
前几天学了个java的,现在想搞个C++的,但在hiredis上发现了一个qt的。就准备直接用Qt来撸项目算了,毕竟Pro文件,比Makefile要好写多了,先来看下hiredis:
虽然是4年前的,但用起来,还是刚刚的。下面来详细说明下。操作
代码与实例
程序运行截图如下:
这里要先把master文件上传,然后make install下:
ok!这样配置好pro文件,这里要主要,因为qt.h里面的RedisQtAdapter类,是继承了QObject并且有有Q_Object宏,对此,要放到项目中一起编译,生成moc文件,不然会出错。
源码如下:
begin.pro
QT += core
QT -= gui
CONFIG += c++11
TARGET = begin
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
LIBS += -L/XXX/XXX/XXX/MyRedis/hiredis-master -lhiredis
INCLUDEPATH += /XXX/XXX/XXX/XXX/hiredis-master
HEADERS += \
../../hiredis-master/adapters/qt.h
main.cpp
#include <QCoreApplication>
#include <adapters/qt.h>
#include <QDebug>
void getCallback(redisAsyncContext *ctx, void *r, void *privdata){
qDebug() << "getCallback called";
redisReply *reply = static_cast<redisReply*>(r);
if(reply == nullptr){
qDebug() << "The reply is nullptr";
return;
}
qDebug() << "result: ";
for(int i = 0; i < reply->elements; i++){
qDebug() << "key: " << reply->element[i]->str;
}
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
redisAsyncContext *ctx = redisAsyncConnect("XXX.XXX.XXX.XXX", 6379);
RedisQtAdapter adapter;
if(ctx->err){
qDebug()<< "error: " << ctx->errstr;
redisAsyncFree(ctx);
return 0;
}
adapter.setContext(ctx);
redisAsyncCommand(ctx, nullptr, nullptr, "auth xxxxxxxxx");
redisAsyncCommand(ctx, getCallback, nullptr, "KEYS *");
qDebug() << "over";
return a.exec();
}
源码下载地址:https://github.com/fengfanchen/Qt/tree/master/RedisWithQt