redis客户端的几个问题总结
2016-09-23 12:40
375 查看
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;
^
这里有这个问题的讨论
有两种解决办法:
使用0.12.1版本,这个版本没有问题
加上-std=c99编译器选项
解决了编译问题,问题又来了,此版本不支持redis集群
支持redis集群版本hiredis-vip
github地址下载,这个版本没有编译问题,也支持集群访问。
相关文章推荐
- Pedis: NoSQL data store using the SEASTAR framework, compatible with Redis
- redis安装问题小结
- 使用 Redis 和 Python 构建一个共享单车的应用程序
- Redis偶发连接失败案例实战记录
- Redis中实现查找某个值的范围
- win 7 安装redis服务【笔记】
- redis的hGetAll函数的性能问题(记Redis那坑人的HGETALL)
- Redis和Memcached的区别详解
- Redis02 使用Redis数据库(String类型)全面解析
- 分割超大Redis数据库例子
- Redis总结笔记(一):安装和常用命令
- Redis sort 排序命令详解
- 用Redis实现微博关注关系
- Redis实现信息已读未读状态提示
- redis中修改配置文件中的端口号 密码方法
- 在Ruby on Rails上使用Redis Store的方法
- Redis和Memcache的区别总结
- 在Node.js应用中使用Redis的方法简介
- Redis服务器的启动过程分析
- web 应用中常用的各种 cache详解