1. 程式人生 > >c++呼叫hiredis讀寫redis

c++呼叫hiredis讀寫redis

c++呼叫hiredis讀寫redis

新增檔案

在工程中新增redis的c語言客戶端檔案,linux無需win32fixes檔案
在這裡插入圖片描述

例子

#ifdef _WIN32
#include "hiredis.h"

#include <WinSock2.h>
#pragma comment(lib,"wsock32.lib")
#else
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <stdlib.h> #include <errno.h> #include <zlib.h> #include <unistd.h> #include <arpa/inet.h> #include "/home/redis/hiredis.h" #endif void main() { #ifdef _WIN32 WORD wVerisonRequested; WSADATA wsaData; wVerisonRequested = MAKEWORD(1, 1); int err = WSAStartup(
wVerisonRequested, &wsaData); if (err != 0){ return; } #endif //初始化redis struct timeval t = { 15, 500000 }; redisContext *pRedisContext = redisConnectWithTimeout("192.168.190.121", 6379, t); if (NULL == pRedisContext || pRedisContext->err) { // redis為NULL與redis->err是兩種不同的錯誤,若redis->err為true,可使用redis->errstr檢視錯誤資訊
printf("%s \r\n", pRedisContext->errstr); printf("Connect to redisServer failed \n"); return; } //輸入redis密碼 const char* pcRedisPassWord = "password"; pRedisReply = (redisReply *)redisCommand(pRedisContext, "AUTH %s", pcRedisPassWord); if (pRedisReply != NULL) { freeReplyObject(pRedisReply); } //用get命令獲取資料 sprintf(pcRedisBuff, "GET %s ", "keyName"); pRedisReply = (redisReply *)redisCommand(pRedisContext, pcRedisBuff); if (pRedisReply == NULL) { return; } if (pRedisReply->str == NULL) { freeReplyObject(pRedisReply); return; } std::string strRes(pRedisReply->str); freeReplyObject(pRedisReply); //用set指令向redis寫入資料 pRedisReply = (redisReply *)redisCommand(pRedisContext, "SET keyName value"); if (pRedisReply != NULL) { freeReplyObject(pRedisReply); } }