redis数据库c语言接口
来源:互联网 发布:人工智能的英文作文 编辑:程序博客网 时间:2024/05/16 11:51
redis数据库拥有方便快捷的c语言接口,下面我将用程序操作redis数据库。
首先redis的c语言接口API是hiredis,下载地址为https://github.com/redis/hiredis
将此API下载到本地:
git clone https://github.com/redis/hiredis编译安装:
make make install
下面是c语言接口代码redisrun.c
#include <stdio.h>#include <stdlib.h>#include <stddef.h>#include <stdarg.h>#include <string.h>#include <assert.h>#include <memory.h>#include <hiredis/hiredis.h>void RedisGet(char* key){ redisContext* c = redisConnect("192.168.3.242", 7000); if(c->err){ redisFree(c); printf("Connect to redisServer faile\n"); return ; } printf("Connect to redisServer Success, ready to Get\n"); char command[100] = "get "; strcat(command, key); redisReply* r = (redisReply*)redisCommand(c, command); if ( r->type != REDIS_REPLY_STRING){ printf("Failed to execute command[%s]\n",command); freeReplyObject(r); redisFree(c); return; } printf("The value of '%s' is %s\n", key, r->str); freeReplyObject(r); redisFree(c);}void RedisPut(char* key, char* value){ redisContext* c = redisConnect("192.168.3.242", 7000); if(c->err){ redisFree(c); printf("Connect to redisServer faile\n"); return ; } printf("Connect to redisServer Success, ready to Put\n"); char command[1000] = "set "; strcat(command, key); strcat(command," "); strcat(command, value); redisReply* r = (redisReply*)redisCommand(c, command); if(NULL == r){ printf("Execut command failure\n"); redisFree(c); return; } if( !(r->type == REDIS_REPLY_STATUS && strcasecmp(r->str,"OK")==0)){ printf("Failed to execute command[%s]\n",command); freeReplyObject(r); redisFree(c); return; } freeReplyObject(r); printf("Succeed to execute command[%s]\n", command); redisFree(c); } struct SFCOrder{ int SFCid; int SFCNumber; int SFClist[10];};int struct_to_str(char **dest, struct SFCOrder *pHead){ unsigned int size = 0; if (dest == NULL || pHead == NULL) return -1; size = 128 + 13 * sizeof(int) ; *dest = (char *)malloc(size); if (*dest == NULL) return -2; memset(*dest, 0, size); sprintf(*dest, "SFClist[1]=%d," "SFClist[2]=%d," "SFClist[3]=%d," "SFClist[4]=%d," "SFClist[5]=%d" return 0;}int str_to_struct(char *str, struct SFCOrder **pHead){ if (str == NULL || pHead == NULL) return -1; *pHead = (struct SFCOrder *)malloc(sizeof(struct SFCOrder)); if (*pHead == NULL) return -2; memset(*pHead, 0, sizeof(struct SFCOrder)); sscanf(str, "SFCid=%d," "SFCNumber=%d," "SFClist[1]=%d," "SFClist[2]=%d," "SFClist[3]=%d," "SFClist[4]=%d," "SFClist[5]=%d" return 0;}int main(int argc, char *argv[]){ struct SFCOrder head_a; struct SFCOrder *p = NULL; char *str = NULL; int res; head_a.SFCid = 6; head_a.SFCNumber = 4; head_a.SFClist[1] = 2; head_a.SFClist[2] = 3; head_a.SFClist[3] = 4; head_a.SFClist[4] = 0; head_a.SFClist[5] = 0; res = struct_to_str(&str, &head_a); if (res != 0) { printf("Failed to execute struct_to_str"); return -1; } char* key = "SFC6"; char* value = str; RedisPut(key, value); RedisGet(key); res = str_to_struct(str, &p); if (res != 0) { free(str); str = NULL; } free(p); p = NULL; printf("succuss\n"); return 0;}
-
编译上面代码:gcc redisrun.c -o redisrun -lhiredis运行代码:
./redisrun这时会遇到下面问题:
./redis: error while loading shared libraries: libhiredis.so.0.13: cannot open shared object file: No such file or directory这是因为系统找不到动态库的问题,需要检查/etc/ld.so.conf文件中是否包含需要的动态库目录(如/usr/local/lib),如果没有进行添加。之后执行sudo /sbin/ldconfig,更新系统动态库配置
此时在运行程序即可,显示:
redis数据库c语言接口测试完毕
0 0
- redis数据库c语言接口
- c语言操作redis数据库
- redis C接口函数
- C语言访问INFORMIX数据库 — 接口实现
- postgresql libpq C语言网络库接口操作数据库例子
- sqlite3数据库c语言常用接口应用实例
- MYSQL数据库在C语言API函数接口
- 利用mysql提供的c语言接口操作数据库
- MySQL数据库简介+c语言接口+ubuntu环境
- 利用mysql提供的c语言接口操作数据库
- Redis C语言
- COM接口 C语言
- linux C语言接口
- SQLite C语言接口
- SQLite C语言接口
- C语言调试接口
- Linux下PostgresQL数据库C语言接口:libpq (二)数据库访问
- c语言下的通用数据库接口(之sqlite消化,模拟c#,java的反射)
- ckeditor4.5.11+ckfinder_java2.6.2配置
- Linux系统上针对rm命令做审计
- JS、JQ中remove()、empty
- 【Java并发编程】之六:Runnable和Thread实现多线程的区别(含代码)
- Mybatis入门:(2)接口方式编程
- redis数据库c语言接口
- Java并发编程】之七:使用synchronized获取互斥锁的几点说明
- 处理器管理及并发进程
- 聊聊并发(2):Java SE1.6中的Synchronized
- 算法篇——入门级算法
- 前端杂记
- 生成式对抗网络GAN研究进展(一)
- 【Java并发编程】之八:多线程环境中安全使用集合API(含代码)
- 五十道编程小题目 --- 50 有五个学生,每个学生有3门课的成绩,计算出平均成绩,况原有的数据和计算出的平均分数存放在磁盘文件"stud"中java