#include <iostream>
#include <redis-cpp/redis.h>
class RedisManager {
private:
redis::Connection* connection;
bool isConnected;
void checkConnection();
public:
RedisManager();
~RedisManager();
bool isConnectedToRedis();
};
以下是实现:
RedisManager::RedisManager() : connection(nullptr), isConnected(false) {
try {
connection = redis::Connection::create("localhost", 6379);
isConnected = true;
std::cout << "Connected to Redis." << std::endl;
} catch (const std::exception& e) {
std::cerr << "Failed to connect to Redis: " << e.what() << std::endl;
}
}
RedisManager::~RedisManager() {
if (connection) {
delete connection;
}
}
void RedisManager::checkConnection() {
try {
if (connection) {
auto reply = connection->command("PING");
if (reply && reply->str() == "PONG") {
// 连接正常,无需修改 isConnected
} else {
std::cerr << "Redis connection lost." << std::endl;
isConnected = false;
}
}
} catch (const std::exception& e) {
std::cerr << "Error checking connection: " << e.what() << std::endl;
isConnected = false;
}
}
bool RedisManager::isConnectedToRedis() {
checkConnection();
return isConnected;
}