# chuck-redis **Repository Path**: chizon/chuck-redis ## Basic Information - **Project Name**: chuck-redis - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-28 - **Last Updated**: 2025-12-28 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Redis C++ Client 基于 hiredis 的 Redis C++ 客户端库,提供连接池和分布式锁功能。 ## 功能特性 - 基本的 Redis 操作(set, get, del, expire, exists, ttl 等) - 连接池管理 - 分布式锁(支持 watchdog 自动续期) - 重试机制和超时控制 - 健康检查 - 线程安全 ## 依赖项 - C++17 或更高版本 - hiredis 库 - CMake 3.10 或更高版本 ## 安装依赖 ### Ubuntu/Debian ```bash sudo apt-get update sudo apt-get install -y libhiredis-dev cmake build-essential ``` ### AlmaLinux/CentOS/RHEL ```bash sudo dnf install -y hiredis-devel cmake gcc-c++ ``` ## 构建项目 ### 首次构建 ```bash mkdir -p build cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. make ``` ### 重新构建 ```bash cd build make ``` ### 清理构建 ```bash cd build make clean ``` ### 完全重新构建 ```bash rm -rf build mkdir -p build cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. make ``` ## 运行示例 ### 基础 Redis 操作示例 ```bash cd build ./examples/redis_example ``` ### 连接池和分布式锁示例 ```bash cd build ./examples/redis_pool_lock_example ``` ### 生产环境示例 ```bash cd build ./examples/redis_production_example ``` ## 配置 Redis 密码 示例程序默认使用密码 `123456`。如果需要修改,请编辑示例文件中的密码,或通过环境变量设置: ```bash export REDIS_PASSWORD="your_password" ``` ## IDE 配置 ### VSCode 项目已配置好 VSCode 的 C/C++ 开发环境: - `compile_commands.json` 在 `build/` 目录中 - `.vscode/c_cpp_properties.json` 已配置好编译器路径和标准 - 每次修改 CMakeLists.txt 后,需要重新生成 `compile_commands.json`: ```bash cd build cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON .. ``` ### 重要提示 - `build/` 目录已被 `.gitignore` 忽略 - 删除 `build/` 目录后,需要重新运行 CMake 配置 - IDE 会从 `build/compile_commands.json` 读取编译配置 ## 项目结构 ``` . ├── include/chuck/redis/ # 头文件 │ ├── RedisClient.h # Redis 客户端 │ ├── RedisConnectionPool.h # 连接池 │ └── RedisLock.h # 分布式锁 ├── src/ # 源文件 │ ├── RedisClient.cc │ ├── RedisConnectionPool.cc │ └── RedisLock.cc ├── examples/ # 示例程序 │ ├── redis_example.cc │ ├── redis_pool_lock_example.cc │ └── redis_production_example.cc ├── src/CMakeLists.txt # 库的构建配置 ├── examples/CMakeLists.txt # 示例的构建配置 ├── CMakeLists.txt # 顶层构建配置 └── .vscode/ # VSCode 配置 ├── c_cpp_properties.json ├── launch.json └── tasks.json ``` ## 使用示例 ### 基本使用 ```cpp #include "chuck/redis/RedisClient.h" chuck::RedisClient::Config config; config.max_retries = 3; config.connect_timeout_ms = 5000; chuck::RedisClient client(config); client.connect("127.0.0.1", 6379, "password"); client.set("key", "value"); std::string value = client.get("key"); ``` ### 使用连接池 ```cpp #include "chuck/redis/RedisConnectionPool.h" chuck::RedisConnectionPool::Config pool_config; pool_config.pool_size = 10; pool_config.max_wait_time = std::chrono::milliseconds(5000); pool_config.enable_health_check = true; chuck::RedisConnectionPool pool("127.0.0.1", 6379, "password", pool_config); auto conn = pool.getConnection(); conn->set("key", "value"); ``` ### 使用分布式锁 ```cpp #include "chuck/redis/RedisLock.h" chuck::RedisLockConfig lock_config; lock_config.expire_time_ms = 30000; lock_config.enable_watchdog = true; chuck::RedisLock lock(conn, "lock_key", lock_config); if (lock.tryLock()) { // 执行临界区操作 lock.unlock(); } ``` ### 使用锁守卫 ```cpp #include "chuck/redis/RedisLock.h" chuck::RedisLockConfig lock_config; lock_config.expire_time_ms = 30000; { chuck::RedisLockGuard guard(conn, "lock_key", lock_config); if (guard.isLocked()) { // 执行临界区操作 } } // 锁自动释放 ``` ## 注意事项 1. 确保 Redis 服务器正在运行 2. 如果使用密码,确保配置正确 3. 在生产环境中,建议启用 watchdog 自动续期 4. 连接池大小应根据实际负载调整 5. 分布式锁的过期时间应大于临界区执行时间 ## 许可证 本项目仅供学习和参考使用。