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的更多相关文章

  1. 萌新笔记——封装hiredis——C++与redis对接(一)(string的SET与GET操作)

    在菜鸟教程自学了redis,总想着像Mysql一样,在C/C++中进行对接.于是查询了一些资料,最后找到了hiredis.然而直接用它的话,难免有点不方便.于是,对其进行封装. hiredis直接去g ...

  2. Hiredis 基本使用

    0. 前言 Hiredis是一个Redis的C客户端库函数,基本实现了Redis的协议的最小集.这里对hiredis的api作基本的介绍以及应用,主要参考hiredis的README文件以及相关源码. ...

  3. 异步导入导出Redis数据(利用Hiredis、Libevent)

    最近工作中需要用到一个将数据从Redis导出到文本(或从文本导入Redis)的工具.找到一个用Ruby写的开源软件redis-dump(http://delanotes.com/redis-dump/ ...

  4. redis C接口hiredis 简单函数使用介绍

    hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了. 函数原型:redisContext *redisConnect(const char ...

  5. 使用hiredis实现pipeline方式访问

    1.介绍 hiredis: 一个c/c++的访问redis的api库 地址:https://github.com/redis/hiredis pipeline方式: redis中的pipeline方式 ...

  6. hiredis的安装

    Hiredis客户端下载地址:https://github.com/antirez/hiredis/zipball/master Hiredis安装步骤: tar zxvf antirez-hired ...

  7. redis内存数据库C客户端hiredis API 中文说明

    A)编译安装 make make install (/usr/local) make install PREFIX=$HOME/progs(可以自由指定安装路径) B)同步的API接口 redisCo ...

  8. hiredis异步接口封装并导出到Lua

    hiredis异步接口封装并导出到Lua(金庆的专栏 2017.1)hiredis 不支持 Windows, Windows 下使用 wasppdotorg / hiredis-for-windows ...

  9. hiredis的各种windows版本

    hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...

  10. c/c++(hiredis)异步调用redis【转】

    hiredis是redis官方推荐的C/C++客户端代码库.使用hiredis库很简易方便的进行redis的相关开发. 同步方式 不过大多数情况下,我们采用的都是同步的调用方式.   1 2 3 4 ...

随机推荐

  1. <? extends A> 和 <? super A> 的意思

    /** * @author Lee Boynton * @author Arthur van Hoff * @author Martin Buchholz * @author Ulf Zibis * ...

  2. H5页面JS调试

    页面调试 常用的调试方法 开发时候的调试基本是在chrome的控制台Emulation完成 现有的一些手机端调试方案: Remote debugging with Opera Dragonfly 需要 ...

  3. html中文乱码(解决办法)

    在head标签中加上以下代码即可: <head>     <meta http-equiv="Content-Type" content="text/h ...

  4. 关于Map集合的遍历总结

    Map集合的遍历经常遇到,今天在这里总结一下Map集合遍历的几种方式: public static void main(String[] args){ Map<String,String> ...

  5. 【find】Linux中find常见用法示例

    1.根据 某个名字在某个目录下进行查找 find /etc/ -name "*.conf" 在/etc/目录下 查找 后缀名为conf 的文件

  6. 次讲解js中的回收机制是怎么一回事。

    在前几天的一篇闭包文章中我们简单的介绍了一下闭包,但是并没有深入的讲解,因为闭包涉及的知识点比较多,为了能够更好的理解闭包,今天讲解一下关于js中的回收机制. 在初识闭包一文中我说过js中有回收机制这 ...

  7. 微信小程序wx:for循环

    最近做微信小程序碰到了一些问题,和wx:for循环相关,wx:for有很多用途,例如可以用于swiper中图片的循环,也就是所谓的轮播图,也可以用于其它的循环,可以大大地减少代码量. 但wx:for. ...

  8. Redis整合spring总结

    一:Redis简介: Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理. 简单来说,它是一个以(key,value)的形式存储数据的数据库. 官网:https://re ...

  9. java对象中含有Integer类型字段转json字符串问题

    问题:对于含有Integer类型字段的java对象,在通过下面这种方式转为json字符串时,Integer类型的字段如果为空的情况下,会默认转化为0,但是我想让它为空的时候直接转化为null,不要默认 ...

  10. 四、spring之DI

    Bean依赖容器,那容器如何注入Bean的依赖资源,Spring IOC容器注入依赖资源主要有以下两种基本实现方式: setert注入:通过setter方法进行注入依赖:参考代码HelloTest2 ...