Cmakelist.txt之Linux-redis配置

1.cmakelist.txt

复制代码
cmake_minimum_required(VERSION 3.16)
​
project(redis_linux_test LANGUAGES C)
​
​
​
add_executable(redis_linux_test main.c)
​
# 设置hiredis库的头文件路径和库文件路径
set(Hiredis_INCLUDE_DIR /usr/local/include/hiredis)
set(Hiredis_LIBRARY_DIR /usr/local/lib)
# 将hiredis的头文件路径添加到包含路径
include_directories(${Hiredis_INCLUDE_DIR})
# 将hiredis的库文件路径添加到库搜索路径
link_directories(${Hiredis_LIBRARY_DIR})
# 链接hiredis库到可执行文件
target_link_libraries(redis_linux_test hiredis)
​
​
include(GNUInstallDirs)
install(TARGETS redis_linux_test
    LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
    RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
复制代码
​

2.测试代码

复制代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <hiredis/hiredis.h>

int main()
{
    // 创建Redis连接
    redisContext *c = redisConnect("192.168.127.128", 6379);
    if (c == NULL) {
        // 如果无法分配redis上下文,直接报错并退出
        printf("Can't allocate redis context\n");
        return 1;
    } else if (c->err) {
        // 如果连接有错误,打印错误信息并释放上下文,然后退出
        printf("Error: %s\n", c->errstr);
        redisFree(c);
        return 1;
    } else {
        // 连接成功时打印消息
        printf("Successfully connected to Redis server\n");
    }

    // 切换到数据库6
    redisReply *reply;
    reply = redisCommand(c, "SELECT 6");
    if (reply == NULL) {
        printf("Error executing SELECT command\n");
        redisFree(c);
        return 1;
    } else if (reply->type == REDIS_REPLY_ERROR) {
        printf("Error reply: %s\n", reply->str);
        freeReplyObject(reply);
        redisFree(c);
        return 1;
    }
    freeReplyObject(reply);

    // 插入一些数据,例如插入一个键值对 "name": "John"
    reply = redisCommand(c, "SET name John");
    if (reply == NULL) {
        printf("Error executing SET command\n");
        redisFree(c);
        return 1;
    } else if (reply->type == REDIS_REPLY_ERROR) {
        printf("Error reply: %s\n", reply->str);
        freeReplyObject(reply);
        redisFree(c);
        return 1;
    }
    freeReplyObject(reply);

    // 可以继续插入更多数据
    reply = redisCommand(c, "SET age 30");
    if (reply == NULL) {
        printf("Error executing SET command\n");
        redisFree(c);
        return 1;
    } else if (reply->type == REDIS_REPLY_ERROR) {
        printf("Error reply: %s\n", reply->str);
        freeReplyObject(reply);
        redisFree(c);
        return 1;
    }
    freeReplyObject(reply);

    redisFree(c);
    return 0;
}

3.结果

相关推荐
木头左3 小时前
【Nginx】内网服务源 IP 白名单实战:动态域名解析放行网段 + 端口接管零改造
运维·nginx·白名单·反向代理
Linux-lucky3 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
禁默4 小时前
启元 Q1 二次开发实践:Ubuntu 部署与仿真验证,从 PrimeConsole 到 ROS 2 Humble + RViz
linux·运维·ubuntu
skywalk81634 小时前
把 去也网站 从 Ubuntu 搬到 FreeBSD:一次 Service Jail + nginx 的部署实录
linux·运维·nginx·ubuntu·freebsd
翔云1234565 小时前
RocksDB中,客户端每写入一次数据,需要访问几次磁盘
运维·数据库·mysql
爱莉希雅&&&6 小时前
GitLab 完整学习笔记
linux·运维·服务器
aiks_yuan6 小时前
Token 放 Redis 还是用 JWT:Java 实测验签和查 Redis 耗时,退出登录、改密码踢下线怎么做(jjwt 0.12 + Redis 7.2)
redis
风笙9787 小时前
[文件系统]文件系统挂载与卸载详解
linux
GeW7 小时前
新质生产力路线图解读:数据库性能优化与Linux调优专场
linux·数据库
小杨爱科普8 小时前
制造业上自动化改造,改造部分的专利到底归谁
运维·经验分享·自动化