Redis-plus-plus是一个基于hiRedis的Redis客户端,是用C++ 11 / C++ 17编写。
支持大部分的Redis命令
连接池
Redis脚本
线程安全除非另有说明
发布订阅
管道
事务
集群
哨兵
类似STL的接口
通用命令行接口
因为redis-plus-plu是基于hiRedis的,所以必须先安装hiRedis。支持的hiRedis最低版本是v0.12.1,建议最好安装最新版本的hiRedis
git clone https://github.com/redis/hiredis.git cd hiredis make make install
在默认情况下,hiRedis是安装在/usr/local目录。如果想要安装hiRedis在其他目录,需要使用以下命令来指定安装路径
make PREFIX=/non/default/path make PREFIX=/non/default/path install
redis-plus-plus 是使用 CMAKE.编译
git clone https://github.com/sewenew/redis-plus-plus.git cd redis-plus-plus mkdir compile cd compile cmake -DCMAKE_BUILD_TYPE=Release .. make make install cd ..
如果hiRedis是安装在非默认路径,需要使用CMAKE_PREFIX_PATH来指定hiRedis的安装路径。默认情况下 redis-plus-plus是安装在/usr/local目录,可以使用CMAKE_INSTALL_PREFIX来指定安装在其它路径
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/hiredis -DCMAKE_INSTALL_PREFIX=/path/to/install/redis-plus-plus ..
默认情况下redis-plus-plus是使用C++11标准,如果想要使用 std::string_view 和 std::optional 特性,可以设置使用C++17标准,这需要在cmake文件中指定编译宏:-DREDIS_PLUS_PLUS_CXX_STANDARD=17
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/hiredis -DCMAKE_INSTALL_PREFIX=/path/to/install/redis-plus-plus -DREDIS_PLUS_PLUS_CXX_STANDARD=17 ..
编译redis-plus-plus的时候也会编译一个测试程序,如果不想编译测试程序的话需要在cmake中添加一个选项:-DREDIS_PLUS_PLUS_BUILD_TEST=OFF
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/path/to/hiredis -DCMAKE_INSTALL_PREFIX=/path/to/install/redis-plus-plus -DREDIS_PLUS_PLUS_BUILD_TEST=OFF ..
redis-plus-plus已经通过以下编译器进行了全面测试:
gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC) gcc version 5.5.0 20171010 (Ubuntu 5.5.0-12ubuntu1) gcc version 6.5.0 20181026 (Ubuntu 6.5.0-2ubuntu1~18.04) gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) gcc version 8.3.0 (Ubuntu 8.3.0-6ubuntu1~18.04.1) gcc version 9.2.1 20191008 (Ubuntu 9.2.1-9ubuntu2) clang version 3.9.1-19ubuntu1 (tags/RELEASE_391/rc2) clang version 4.0.1-10 (tags/RELEASE_401/final) clang version 5.0.1-4 (tags/RELEASE_501/final) clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final) clang version 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final) clang version 8.0.1-3build1 (tags/RELEASE_801/final) Apple clang version 11.0.0 (clang-1100.0.33.12)
如果已默认方式构建redis-plus-plus,在/test/目录下会有一个测试程序。
运行测试程序需要先运行一个Redis服务器。由于测试程序要向服务器和集群发送大部分Redis命令,因此需要Redis版本至少是5.0,否则测试可能不通过。比如用Redis4.0来测试的话,ZPOPMAX(5.0才添加)测试用例就会失败。如果要使用其他Redis版本运行测试,必须从Redis plus/test/src/sw/Redis++/目录中的测试源码中注释掉Redis不支持的命令
注意:最新版本的Redis只是运行测试的一个要求。事实上,可以将redis plus与任何版本的redis一起使用,例如redis 2.0、redis 3.0、redis 4.0、redis 5.0。
切勿在生产环境中运行测试程序,因为测试程序读取或写入的密钥可能与应用程序冲突。
要同时使用Redis和Redis Cluster运行测试,可以使用以下命令运行测试程序:
./compile/test/test_redis++ -h host -p port -a auth -n cluster_node -c cluster_port
host 和 port 是Redis服务器的主机和端口号。
cluster_node和cluster_port是Redis群集的主机和端口号。您只需设置集群中单个节点的主机和端口号,redis plus将自动查找其他节点。
auth是Redis实例和Redis集群的密码。Redis实例和Redis群集必须配置相同的密码。如果没有配置密码,请不要设置此选项。
如果只想使用Redis运行测试,则只需指定host、port和auth选项:
./compile/test/test_redis++ -h host -p port -a auth
类似地,如果您只想使用Redis Cluster运行测试,只需指定Cluster\u node、Cluster\u port和auth选项:
./compile/test/test_redis++ -a auth -n cluster_node -c cluster_port
测试程序将在多线程环境中测试运行redis plus,并且此测试将花费很长时间。如果您想跳过它(不推荐),只需在test/src/sw/redis++/test_main.cpp文件中注释掉以下几行即可。
sw::redis::test::ThreadsTest threads_test(opts, cluster_node_opts); threads_test.run();
如果所有测试均已通过,测试程序将打印以下消息:
Pass all tests
否则,它将打印错误消息。