redis客户端的几个问题总结

redis-cli的批量数据导入

具体可以参考redis官网的内容Redis Mass Insertion,这里也有中文版的

  • 导入命令

cat test.proto | redis-cli -c -h 10.118.15.7 -p 7002 –pipe

  • 文件的生成
    现在的问题就是test.proto这个文件的生成,需要参考redis的协议文档
    以命令SET name csdn为例,生成的协议为:
    *3\r\n$3\r\nSET\r\n$4\r\nname\r\n$4\r\ncsdn\r\n
    解释如下:
    *3 代表这条命令总共有三个参数,分别为SET,name,csdn
    $3 代表第一个参数的长度,也就是SET字符串的长度
    SET
    $4 代表第二个参数的长度,也就是name字符串的长度
    name
    $4 代表第三个参数的长度,也就是csdn字符串的长度
    csdn
    最后,每个部分都以\r\n分隔

  • 集群环境的导入
    在执行导入命令的时候,如果是redis集群环境,那么如何指定集群的机器呢?答案是不能指定。
    做法是指定其中一台机器的IP和端口,执行命令,如果最终Key的分配不是在这台机器上,会报类似下面的错误

    MOVED 3109 10.118.15.7:7003

我们可以中断脚本执行,然后重新指定导入命令的IP和端口为上面报错时打印的值,重新执行命令。

redis C语言客户端的选择

在redis官网列出了不同语言的客户端版本,我们可以从中找出C语言的

  • 官方版本hiredis
    可以从github上找到它的版本,先把它编译成库文件,然后再在自己的工程里使用。
    当你把hiredis的头文件放到你工程里,然后include “hiredis.h”,最后编译你的工程时,有可能会出现下面的问题

    ../hiredis.h:158:7: error: expected identifier or ( before numeric constant
    } unix;
    ^

    这里有这个问题的讨论
    有两种解决办法:

    1. 使用0.12.1版本,这个版本没有问题
    2. 加上-std=c99编译器选项

解决了编译问题,问题又来了,此版本不支持redis集群

  • 支持redis集群版本hiredis-vip
    github地址下载,这个版本没有编译问题,也支持集群访问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值