Redis rio

系统 1609 0

Redis rio的代码很少,基本上包了一个虚基类:

struct _rio {
    void (*update_cksum)(struct _rio *, const void *buf, size_t len);

    /* The current checksum */
    uint64_t cksum;

    /* Backend-specific vars. */
    union {
        struct {
            sds ptr;
            off_t pos;
        } buffer;
        struct {
            FILE *fp;
            off_t buffered; /* Bytes written since last fsync. */
            off_t autosync;   // buffered超过这个值自动更新,默认为0
        } file;
    } io;
};

API如下:

static inline size_t rioWrite(rio *r, const void *buf, size_t len) ;  // 调用 rio->write,同时更新checksum
static inline size_t rioRead(rio *r, void *buf, size_t len) // 调用 rio->read,同时更新checksum
static inline off_t rioTell(rio *r);  //直接调用rio->tell

void rioInitWithFile(rio *r, FILE *fp);  // 初始化rio->io->file
void rioInitWithBuffer(rio *r, sds s);  // 初始化rio->io->buffer

//  以下几个是High Level Interface,用于写AOF文件
size_t rioWriteBulkCount(rio *r, char prefix, int count);
size_t rioWriteBulkString(rio *r, const char *buf, size_t len);
size_t rioWriteBulkLongLong(rio *r, long long l);
size_t rioWriteBulkDouble(rio *r, double d);


// 更新crc64 checksum

void rioGenericUpdateChecksum(rio *r, const void *buf, size_t len);


// 设置自动sync的字节数

void rioSetAutoSync(rio *r, off_t bytes);


 

Redis rio


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论