wumu
1 天以前 e726146c9699f7fbedbbce99f83529bc4fcbdaa1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#ifndef DBCACHE_H
#define DBCACHE_H
 
#include <QObject>
#include <QSqlDatabase>
#include <QString>
#include <QHash>
#include <QVector>
#include <QVariant>
#include <hiredis.h>
 
 
class DBCache : public QObject
{
    Q_OBJECT
public:
    explicit DBCache(QObject *parent = nullptr);
    ~DBCache();
 
 
    // 初始化数据库连接
    bool initMySQL(const QString &host, int port,
                   const QString &user, const QString &password,
                   const QString &database);
    bool initRedis(const QString &host, int port,
                   const QString &password = "");
 
    // 执行查询,优先从Redis获取
    QVector<QHash<QString, QVariant>> query(const QString &sql);
 
    // 清除缓存
    void clearCache();
 
private:
    // Redis连接
    redisContext *m_redisContext;
 
    // MySQL连接
    QSqlDatabase m_mysqlDB;
 
    // 生成查询的哈希键
    QString generateCacheKey(const QString &sql) const;
 
    // 从Redis获取数据
    QVector<QHash<QString, QVariant>> getFromRedis(const QString &key);
 
    // 将数据存入Redis
    bool setToRedis(const QString &key,
                    const QVector<QHash<QString, QVariant>> &data);
 
    // 从MySQL查询数据
    QVector<QHash<QString, QVariant>> queryMySQL(const QString &sql);
};
 
#endif // DBCACHE_H