当前位置: 首页 > article >正文

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.结果


http://www.kler.cn/a/406574.html

相关文章:

  • 华三(H3C)T1020 IPS服务器硬件监控指标解读
  • 【Unity3D插件】Unity3D HDRP Outline高亮发光轮廓描边插件教程
  • Appium常用的使用方法(一)
  • AWS CLI
  • 【前端】第12节:Vue3新特性
  • windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...
  • Java、Android引用类型
  • rust中解决DPI-1047: Cannot locate a 64-bit Oracle Client library问题
  • C++ String
  • 【嵌入式】手把手教你入门STM32的GPIO:使用GPIO输入
  • SpringBoot入门准备——Maven的使用
  • Web3与智能合约:区块链技术下的数字信任体系
  • Python世界:力扣题解875,珂珂爱吃香蕉,中等
  • Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)
  • uniapp跨域问题解决方案
  • 博客文章怎么设计分类与标签
  • Java SE 与 Java EE:基础与进阶的探索之旅
  • PAL(Program-Aided Language Model)
  • android 使用MediaPlayer实现音乐播放--获取音乐数据
  • Spring Boot 3.0废弃了JavaEE,改用了Jakarta EE
  • Linux云平台Oracle 12c安装与数据迁移
  • 大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
  • el-tree扩展vue-easy-tree虚拟树的使用(解决页面卡顿)
  • 力扣 LeetCode 701. 二叉搜索树中的插入操作(Day10:二叉树)
  • wpf 事件转命令的方式
  • 【微服务】Spring AI 使用详解