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 ...
随机推荐
- Git学习系列之Git是什么?
前言 现在主流IDE里,都集成git了. https://git-scm.com/docs 史上最浅显易懂的Git教程! 为什么要编写这个教程?因为我在学习Git的过程中,买过书,也在网上Google ...
- 进入保护模式(二)——《x86汇编语言:从实模式到保护模式》读书笔记14
首先来段题外话:之前我发现我贴出的代码都没有行号,给讲解带来不便.所以从现在起,我要给代码加上行号.我写博客用的这个插入代码的插件,确实不支持自动插入行号.我真的没有找到什么好方法,无奈之下,只能按照 ...
- find ip from hostname or find hostname from ip
1. find ip from hostname ping <hostname> 2.fin hostname from ip nslookup <ip>
- 了解下C#异常时的输出
Sample Code: try { string re = "1.1".Substring(1,4); } catch (Exception ex) { logger.Error ...
- 深入理解JavaScript系列(50):Function模式(下篇)
介绍 本篇我们介绍的一些模式称为初始化模式和性能模式,主要是用在初始化以及提高性能方面,一些模式之前已经提到过,这里只是做一下总结. 立即执行的函数 在本系列第4篇的<立即调用的函数表达式> ...
- 深入理解JavaScript系列(44):设计模式之桥接模式
介绍 桥接模式(Bridge)将抽象部分与它的实现部分分离,使它们都可以独立地变化. 正文 桥接模式最常用在事件监控上,先看一段代码: addEvent(element, 'click', getBe ...
- .netCore2.0 程序集DI依赖注入
传统的依赖注入确实简单,但是随着项目的扩展随之而来的问题又来了,因为传统的注入是单个类和接口注入的,加入项目的接口和类增加到了上百个的话,就需要在Startup.cs中复制注入上百次,虽然能解决问题, ...
- Redis 小结
一.redis简介 redis是一款基于C语言编写的,开源的非关系型数据库,由于其卓越的数据处理机制(按照规则,将常用的部分数据放置缓存,其余数据序列化到硬盘),大家也通常将其当做缓存服务器来使用. ...
- 特殊引用类型(string)
private string FuncWithParameters(int param1, String param2, List<string> param3) { // 我们在这里改变 ...
- [javaEE] jsp的指令
jsp的指令:jsp的指令(directive)是为jsp引擎而设计的,他们并不直接产生任何可见输出,而是告诉引擎如何处理jsp 页面中的其他部分 页面头部的page指令 <%@page imp ...