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 ...
随机推荐
- 常见Http协议响应码
总体总结: 1XX:信息相应类,表示接受到请求并且继续处理 2XX:处理成功响应类,表示动作被成功的接收.理解和接受 3XX:重定向响应类,为了完成指定的动作,必须完成进一步处理和操作 4XX:客户端 ...
- mysql 必知必会总结
以前 mysql 用的不是很多, 2 天看了一遍 mysql 必知必会又复习了一下基础. 200 页的书,很快就能看完, 大部分知识比较基础, 但还是了解了一些以前不知道的知识点.自己做一个备份,随 ...
- android 仿网易新闻首页框架
实现思路很简单左侧栏目是一个一个的 Fragment 的,点击时动态替换各个 Fragment 到当前 Activity 中. 关键代码: public void loadFragment(Ma ...
- 转 关于shell中if 语法结构的广泛误解
转自 ttp://blog.csdn.net/security134/article/details/6742156 最近学习SHELL编程 这篇文章很好很重要.有些东西不能想当然.同时不是表面看起来 ...
- Android OpenGL教程-第一课【转】
第一课 快速的开始一个Android OpenGL项目 首先,读懂我们的教程,需要有android的初步基础,我们这里只是通过android提供的SDK,来进行OpenGL的学习,所以你必须先学习如何 ...
- Java入门系列-26-JDBC
认识 JDBC JDBC (Java DataBase Connectivity) 是 Java 数据库连接技术的简称,用于连接常用数据库. Sun 公司提供了 JDBC API ,供程序员调用接口和 ...
- HDU 5694——BD String——————【递归求解】
BD String Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total S ...
- Swift函数_inout参数
//无inout参数的函数 func changeName(var name:String){ name = "Hello" println(name) } let payerNa ...
- oracle OCI lob操作
可以有两种方式来bind lob字段 1)直接绑定lob 值 2)绑定lob locator指针 对于 直接绑定lob值的操作如下 char* sql = "insert into tab_ ...
- Java finally关键字
关于finally语句块,有如下特点: 1.finally语句块可以直接和try语句块联用.try...finally... 2.try...catch...finally也可以 3.通常在final ...