Linux下操作Redis类(基于hiredis接口)

选择Redis作为NoSql数据库的几点考虑:

  • 数据全部存储至内存中,相对操作数据库(写磁盘)而言读写速度快且支持并发量高
  • 支持持久化,AOF&RDB持久化机制可以避免由一些不可控因素导致的数据丢失问题(如:断电)
  • 二进制安全,可支持存储二进制数据(如:自定义的数据包结构体和图片等信息)
  • 支持数据类型多样,字符串、列表、集合、有序集合等对象可完全满足业务系统的数据存储要求
  • Redis3.0开始支持分布式集群,不用再使用twemproxy+redis组合来实现集群,安装配置简单,功能强大。

Redis中重要宏定义及结构体介绍:

  • struct redisContext结构体
/* redisConnect()函数返回结构体,代表该Redis的连接句柄 */
typedef struct redisContext {
    int err; /* Error flags, 0 when there is no error */
    char errstr[128]; /* String representation of error */
    int fd;
    int flags;
    char *obuf; /* Write buffer */
    redisReader *reader; /* Protocol reader */
} redisContext;
  • struct redisReply结构体
/* redisCommand()函数返回结构体,代表该Redis命令操作的返回结果,通过type成员变量处理此结构体*/
typedef struct redisReply {
    int type; 
    long long integer; 
    int len;
    char *str; 
    size_t elements;
    struct redisReply **element; 
} redisReply;

redisReply结构体处理方式如下截图:
struct redisReply结构体根据其成员type不同对应的处理方法

  • struct redisReply::type 成员变量值宏定义:
    #define REDIS_REPLY_STRING 1
    #define REDIS_REPLY_ARRAY 2
    #define REDIS_REPLY_INTEGER 3
    #define REDIS_REPLY_NIL 4
    #define REDIS_REPLY_STATUS 5
    #define REDIS_REPLY_ERROR 6

hiredis接口中重要函数及功能介绍:

  • redisConnect 连接redis
  • redisConnectWithTimeout 连接redis,自定义超时时间
  • redisCommand redis命令执行函数
  • redisFree 释放连接redis资源(redisContext *)
  • freeReplyObject 释放redis执行函数返回的资源(redisReply *)

Talk is cheap, show me the code !!!

linkRedis.h

#ifndef __LINK_REDIS__
#define __LINK_REDIS__

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <hiredis.h>

using namespace std;

/*连接redis必须要的信息*/
struct LinkRedisInfo
{
    string ip;  
    unsigned short port;
    unsigned int timeOut;   //超时时间

    LinkRedisInfo(string ip_, unsigned short port_, unsigned int timeOut_):ip(ip_),\
           port(port_),timeOut(timeOut_){}
};

class LinkRedis
{
private:
    typedef map<string, pair<LinkRedisInfo *, redisContext *> > mp_redis;
    typedef map<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值