设为首页 加入收藏

TOP

Redis(五)
2017-10-16 18:18:51 】 浏览:4825
Tags:Redis
che-max-memory可以应对临时峰值写入。但是diskstore写入瓶颈最终还是在IO。

                3) rdb 和新 diskstore 格式关系
            rdb是传统Redis内存方式的存储格式,diskstore是另外一种格式,那两者关系如何?

            ·通过BGSAVE可以随时将diskstore格式另存为rdb格式,而且rdb格式还用于Redis复制以及不同存储方式之间的中间格式;

      · 通过工具可以将rdb格式转换成diskstore格式;

                        当然,diskstore原 理很美好,但是目前还处于alpha版本,也只是一个简单demo,diskstore.c加上注释只有300行,实现的方法就是将每个value                       作为一 个独立文件保存,文件名是key的hash值。因此diskstore需要将来有一个更高效稳定的实现才能用于生产环境。但由于有清晰的接口设 计,                      diskstore.c也很容易换成一种B-Tree的实现。很多开发者也在积极探讨使用bdb或者innodb来替换默认diskstore.c的 可行性。

           

    下面介绍一下Diskstore的算法。

       其实DiskStore类 似于Hash算法,首先通过SHA1算法把Key转化成一个40个字符的Hash值,然后把Hash值的前两位作为一级目录,然后把Hash             值的三四位作 为二级目录,最后把Hash值作为文件名,类似于“/0b/ee/0beec7b5ea3f0fdbc95d0dd47f3c5bc275da8a33” 形式。算法如下:

    dsKeyToPath(key):

    char path[1024];

    char *hashKey = sha1(key);

    path[0] = hashKey[0];

    path[1] = hashKey[1];

    path[2] = '/';

    path[3] = hashKey[2];

    path[4] = hashKey[3];

    path[5] = '/';

    memcpy(path + 6, hashKey, 40);

    return path;

 

  存储算法(如key == apple):

    dsSet(key, value, expireTime):

      // d0be2dc421be4fcd0172e5afceea3970e2f3d940

    char *hashKey = sha1(key);

    // d0/be/d0be2dc421be4fcd0172e5afceea3970e2f3d940

    char *path = dsKeyToPath(hashKey);

    FILE *fp = fopen(path, "w");

    rdbSaveKeyValuePair(fp, key, value, expireTime);

    fclose(fp)

 

    获取算法:

    dsGet(key):

    char *hashKey = sha1(key);

    char *path = dsKeyToPath(hashKey);

    FILE *fp = fopen(path, "r");

    robj *val = rdbLoadObject(fp);

    return val;

 3》Redis安装:

            1>软件安装:                  

      # cd /data/soft/

      # tar xf redis-2.4.15.tar.gz -C tmp/

      # cd tmp/redis-2.4.15/

      #make PREFIX=/usr/local/services/redis-2.4.15 >/dev/null

      #make PREFIX=/usr/local/services/redis-2.4.15 install >/dev/null

      #ln -s /usr/local/services/redis-2.4.15/bin/ /usr/local/services/redis/

      会在当前目录下生成可执行文件,分别是redis-server、redis-cli、redis-benchmark、redis-stat,它们的作用如下:

                     

·                      redis-server:Redis服务器的daemon启动程序

·                      redis-cli:Redis命令行操作工具。当然,你也可以用telnet根据其纯文本协议来操作

·                      redis-benchmark:Redis性能测试工具,测试Redis在你的系统及你的配置下的读写性能

·                      redis-stat:Redis状态检测工具,可以检测

首页 上一页 2 3 4 5 6 7 8 下一页 尾页 5/8/8
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇在ubuntu16.04中一键创建LAMP环境.. 下一篇Ubuntu linux系统下 su:出现: au..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目