RedisClient.h 2.2 KB

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