Redis.h 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #pragma once
  2. #include "include/adapters/qt.h"
  3. #include "include/async.h"
  4. #include "include/hiredis.h"
  5. #include "MWareInterface.h"
  6. #include <QtCore/QObject>
  7. #include <QtCore/QDebug>
  8. class Redis : public QObject
  9. {
  10. Q_OBJECT
  11. public:
  12. explicit Redis(QObject *parent = 0);
  13. ~Redis();
  14. public slots:
  15. void start();
  16. void conn();
  17. bool hset(QString m, QString k, QString v);
  18. QString hget(QString m, QString k);
  19. QHash<QString, QString> hgetall(QString k);
  20. QStringList hkeys(QString k);
  21. QStringList hvals(QString k);
  22. bool set(QString k, QString v);
  23. bool setb(QString k, QByteArray &v);
  24. QString get(QString k);
  25. QByteArray getb(QString k);
  26. bool rpush(QString lData, QString js); //向队列尾部加入字符串数据
  27. bool rpushb(QString lData, QByteArray ba); //向队列尾部加入二进制数据
  28. QString lpop(QString lData);
  29. QString blpop(QString lData, quint32 timeout); //同步阻塞一定时间返回数据
  30. bool blpop(QString lData, redisCallbackFn *fn); //阻塞从队列头部获取最早数据
  31. bool publish(QString ch, QString js);
  32. bool publishb(QString ch, QByteArray ba);
  33. bool expire(QString k,int sec);
  34. void subscribe(QString ch, EventSubInterface *fn); // 订阅
  35. void psubscribe(QString ch, EventSubInterface *fn); // 订阅:模式匹配
  36. private:
  37. QString ip = "127.0.0.1";
  38. quint16 port = 16379;
  39. QString auth = "<LanPeng&&CeKong>";
  40. bool redisOk = false; //redis全局状态,操作出错时置为false, redis线程内会自动重连
  41. redisContext *rc; //同步连接
  42. redisAsyncContext *rac = nullptr; //异步连接
  43. RedisQtAdapter adapter; //异步事件驱动适配器
  44. public:
  45. void Setup(tagSetup ts);
  46. };