1、需要使用hiredis库
下载地址:GitHub - redis/hiredis: Minimalistic C client for Redis >= 1.2
下载后需要执行cmake .和make命令编译,得到libhiredis.a和libhiredis.dylib
2、复制文件到项目或添加到主机/usr/local/include和lib目录下,再执行一个命令刷新一下头文件生效
需复制文件alloc.h、hiredis.h、read.h、sds.h及libhiredis.a
3、配置cmake文件
cmake_minimum_required(VERSION 3.21)
project(testc C)
set(CMAKE_C_STANDARD 99)
#添加头文件目录 (相当于gcc中-l参数,也相当于环境变量中增加路径到cplus_include_path变量的作用)
#语法:include_directories("/opt/……/extern/include") (相当于export CPLUS_INCLUDE_PATH=CPLUS_INCLUDE_PATH:$MATLAB/extern/include)
include_directories("//Users/sumengnan/CLionProjects/testc/include")
#需要链接的库文件目录 (相当于gcc命令中的-L选项作用,也相当于环境变量中增加LD_LIBRARY_PATH的路径的作用)
#语法:LINK_DIRECTORIES("/opt/……/bin") (相当于export LD_LIBRARY_PATH=LD_LIBRARY_PATH:$MATLAB/bin)
link_directories("/Users/sumengnan/CLionProjects/testc/lib")
#添加需要链接的库文件全路径(在add_executable之前,已过时,推荐target_link_libraries)
#语法:LINK_LIBRARIES("/opt/……/bin/liba.so") 或LINK_LIBRARIES("/opt/……/bin/liba.so" "/opt/……/bin/libb.so")
#link_libraries()
#引入另外的cmake文件
#include()
#打包成可执行文件
add_executable(testc main.c)
#打包成库文件
#add_library()
#----------------------------------
#设置要链接的库文件名称(以下集中写法都可以,需要写在add_executable后)
#语法:TARGET_LINK_LIBRARIES(myProject hello) 链接libhello.so库
#或TARGET_LINK_LIBRARIES(myProject libhello.a)
#或TARGET_LINK_LIBRARIES(myProject libhello.so)
#或TARGET_LINK_LIBRARIES(myProject -lhello)
target_link_libraries(testc libhiredis.a)
#设置要链接的库文件的全路径名称
#target_link_directories()
#指定可执行文件需要包含的头文件的路径
#target_include_directories()
4、redis操作代码
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "hiredis.h"
int main() {
printf("Hello, World!\n");
//连接redis
redisContext *pContext = redisConnect("127.0.0.1", 6379);
if(pContext==NULL){
printf("pContext null!\n");
exit(1);
}
if(pContext->err){
printf("connection error:%s\n", pContext->errstr);
exit(1);
}
// 密码验证
// redisReply *pReply = (struct redisReply *) redisCommand(pContext, "AUTH %s","password");
// printf("auth is %s\n", pReply->str);
// freeReplyObject(pReply);
//set方法
redisReply *pReply = (struct redisReply *) redisCommand(pContext, "set 2 3");
printf("pReply:%s\n",pReply->str);
//释放reply对象
freeReplyObject(pReply);
//get方法
pReply = (struct redisReply *) redisCommand(pContext, "get 1");
printf("pReply:%s\n",pReply->str);
//释放reply对象
freeReplyObject(pReply);
//释放连接
redisFree(pContext);
return 0;
}