hiredis
hiredis是redis开源库对外发布的客户端API包。
当redis-server配置启动后,可以通过hiredis操作redis资源。
主要分为:
strings、hash、lists、sets、sort sets
hiredis使用较为简单,下面是几个主要的函数和对象:
/*
作用:用于连接redis服务器
ip : 为redis的ip地址;
port: 端口地址;
tv:连接超时的参数;
*/
redisContext *redisConnectWithTimeout(const char *ip, int port, struct timeval tv);
/*
作用:执行命令
c:redisConnectWitTimeout返回的对象;
format:命令参数;
*/ void *redisCommand(redisContext *c, const char *format, ...)
/*
说明:redisCommand返回的对象指针,也就是已经命令返回的结果数据
*/ typedef struct redisReply {
int type; /* REDIS_REPLY_* */
long long integer; /* The integer when type is REDIS_REPLY_INTEGER */
int len; /* Length of string */
char *str; /* Used for both REDIS_REPLY_ERROR and REDIS_REPLY_STRING */
size_t elements; /* number of elements, for REDIS_REPLY_ARRAY */
struct redisReply **element; /* elements vector for REDIS_REPLY_ARRAY */
} redisReply;
来一个具体的实例
/*需要配置,才能编译通过*/
#include <iostream>
#include "hiredis.h" #define MAX_LEN 64 int main()
{
timeval timeout = {,};
char ip[MAX_LEN],passwd[MAX_LEN];
memset(ip,,MAX_LEN);
memset(passwd,,MAX_LEN);
sprintf(ip,"*****");
sprintf(passwd,"******");
uint32_t port = ;
redisContext *m_pRedisContext = redisConnectWithTimeout(ip,port,timeout);
if(m_pRedisContext->err){
std::cout << "log, redis connect error\n";
return ;
} redisReply *reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,\
"AUTH %s",passwd));
if(!reply){
std::cout << "log, redis command error, " << m_pRedisContext->errstr << \
std::endl;
return ;
} std::cout << "AUTH " << passwd << reply->str << std::endl;
freeReplyObject(reply); //create datadase id = 1;
uint32_t index = ;
reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,"SELECT %d",));
if(!reply) {
std::cout << "log, redis command error," << m_pRedisContext->errstr << \
std::endl;
freeReplyObject(reply);
return ;
} std::cout << "SELECT " << index << reply->str << std::endl;
freeReplyObject(reply); uint32_t id = ;
reply = static_cast<redisReply*>(redisCommand(m_pRedisContext, \
"HMSET user:%u %s %s %s %s",id,"name","xuxu","age",""));
if(!reply){
std::cout << "log, redis command error," << m_pRedisContext->errstr << \
std::endl;
freeReplyObject(reply);
return ;
} reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,\
"SET name:%s %s","","liushun"));
if(!reply){
std::cout << "log, redis command error, " << m_pRedisContext->errstr << \
std::endl;
freeReplyObject(reply);
return ;
} reply = static_cast<redisReply*>(redisCommand(m_pRedisContext,"GET name:%s",""));
if(!reply){
std::cout << "log, redis command error," << m_pRedisContext->errstr << \
std::endl;
freeReplyObject(reply);
return ;
} std::cout << reply->str << std::endl;
freeReplyObject(reply); return ;
}
hiredis的更多相关文章
- 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)
在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...
- Hiredis 基本使用
0. 前言 Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集.这里对hiredis的api作基本的介绍以及应用,主要参考hiredis的README文件以及相关源码. ...
- 异步导入导出Redis数据(利用Hiredis、Libevent)
最近工作中需要用到一个将数据从Redis导出到文本(或从文本导入Redis)的工具.找到一个用Ruby写的开源软件redis-dump(http://delanotes.com/redis-dump/ ...
- redis C接口hiredis 简单函数使用介绍
hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了. 函数原型:redisContext *redisConnect(const char ...
- 使用hiredis实现pipeline方式访问
1.介绍 hiredis: 一个c/c++的访问redis的api库 地址:https://github.com/redis/hiredis pipeline方式: redis中的pipeline方式 ...
- hiredis的安装
Hiredis客户端下载地址:https://github.com/antirez/hiredis/zipball/master Hiredis安装步骤: tar zxvf antirez-hired ...
- redis内存数据库C客户端hiredis API 中文说明
A)编译安装 make make install (/usr/local) make install PREFIX=$HOME/progs(可以自由指定安装路径) B)同步的API接口 redisCo ...
- hiredis异步接口封装并导出到Lua
hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...
- hiredis的各种windows版本
hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...
- c/c++(hiredis)异步调用redis【转】
hiredis是redis官方推荐的C/C++客户端代码库.使用hiredis库很简易方便的进行redis的相关开发. 同步方式 不过大多数情况下,我们采用的都是同步的调用方式. 1 2 3 4 ...
随机推荐
- 009-MailUtils工具类模板
版本一:JavaMail的一个工具类 package ${enclosing_package}; import java.security.GeneralSecurityException; impo ...
- spring mvc中DispatcherServlet如何得到ModelAndView的
首先看下面这种张图,这张图说明了spring mvc整体的流程. 本文讲的就是如何从DispatcherServlet中得到ModerAndView的过程. 首先看DispatherServlet这个 ...
- SpringMVC Controller层的单元测试
Getting Ready 测试相关Maven dependency如下: <dependency> <groupId>org.springframework</grou ...
- win10中xshell的ssh链接virtualBox中的centos7
win10下virtualbox中centos7.3与主机通过xshell的ssh建立连接的方法 2017-02-19 01:29 版权声明:本文为博主原创文章,未经博主允许不得转载. 最近 ...
- 下面我将随机抽取一名幸运女生,XXXXX
个人在经过长久以来(约等于4小时)的奋战,终于实现了一个上课老师提问并抽奖的小程序.希望这个程序变得非常非常实用 课程的理解:在我的项目开始之前,先学习了一下UML项目类图的画法,和类与类之间的关系. ...
- .net core 第一篇选择开发工具和环境
.net core 已经发布三年了,社区也逐步成熟.作为微软阵营的一员,忙了一年年底抽点时间系统学习下.学习资料主要为以下为主: 1. https://docs.microsoft.com/zh-cn ...
- Python学习之环境搭建及模块引用
这是我学习Python过程积累的经验和踩过的坑,希望学习Python的新手们能尽量避免,以免不必要的时间浪费.今天也是我第一次接触Python. 基础语法看了两个晚上,所以如果没看的朋友们,抽时间先看 ...
- 灵感一:搜索型APP,帮助读书爱好者,搜索某本书的关键字
灵感来自生活,我在查询 javascript 高级程序设计 3的时候,由于我记不清楚,该关键字在书的某个地方,我就想,有没有这么一款APP,可以通过扫描一本书的二维码,自动下载该书的内容,然后再通过搜 ...
- C10K问题摘要
本文的内容是下面几篇文章阅读后的内容摘要: http://www.kegel.com/c10k.html (英文版) http://www.oschina.net/translate/c10k (中文 ...
- json转换工具类
using System;using System.Collections.Generic;using System.Text;using Newtonsoft.Json;using System.I ...