1. 安装 redis-plus-plus
C++ 操作 Redis 的库有很多,这里选择使用 redis-plus-plus,这个库的功能强大,使用简单。
Github 地址:GitHub - sewenew/redis-plus-plus: Redis client written in C++
访问不了Github 地址的可以使用Steam++来加速访问。
redis-plus-plus 是基于 hiredis 实现的。hiredis 是一个 C 语言实现的 redis 客户端,因此需要先安装 hiredis,直接使用包管理器安装即可。
redis-plus-plus本体,只能编译安装,使用编译安装ubuntu会比centos方便很多
1.1 Ubuntu安装
apt install libhiredis-dev
Ubuntu
安装cmake
apt install cmake
具体步骤:
git clone https://github.com/sewenew/redis-plus-plus.git
cd redis-plus-plusmkdir build
cd build
cmake .. //生成makefile,此处..指向CMakeLists.txt文件所在的目录
make
make install //把刚才的库拷贝到系统目录
2. 编写 HelloWorld
Redis 库最多可以支持到 C++17 版本。(如果是用 Centos,需要注意 gcc/g++ 的版本,看是否支持 C++17。不支持的话,选用 C++11 版本也是可以的)
编译程序时,需要引入的库文件(由于不同系统中安装好的库所在位置会存在差异,因此要注意⽂件路径是否存在。可以用 find 命令来查找库所在的目录):
- Redis++ 自己的静态库
- hiredis 静态库
- 线程库
#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
#include <sw/redis++/redis++.h>using std::cout;
using std::endl;
using std::vector;
using std::string;
using std::unordered_map;int main()
{// 创建Redis对象时,需要在构造函数中指定redis服务器的地址和端口 sw::redis::Redis redis("tcp://127.0.0.1:6379");// 调用ping方法,让客户端给服务器发了一个PING,然后服务器就会返回一个PONG,就通过返回值获取到 string result = redis.ping(); // 测试用,可不写std::cout << result << std::endl;redis.set("key", "HelloWorld");// 使用 get 获取到 key 对应的 valueauto value1 = redis.get("key");// optional 可以隐式转成 bool 类型, 可以直接在 if 中判定. 如果是无效元素, 就是返回 falseif (value1){std::cout << value1.value() << std::endl;}return 0;
}
为什么头文件要写成这样,不能直接写redis++吗?
肯定是不行的
编译器会从系统默认路径寻找头文件,而默认路径是/usr/local/include,所以我们要加上sw/redis/redis++.h
如下是我们makefile文件
mytest:mytest.cppg++ -std=c++17 -o $@ $^ /usr/local/lib/libredis++.a /usr/lib/x86_64-linux-gnu/libhiredis.a -pthread.PHONY:clean
clean:rm mytest
依赖的是redis++的静态库,hiredis静态库和线程库,我们要写makefile编译的时候要带上对应的路径。
这里要注意,不是每个人下载好的对应库跟我是一样的,大家可以通过find命令去寻找对应路径