redis升级之原数据导入
2017年4月27日
redis版本老旧
写代码的过程中,刚好用到一个新的redis命令SRANDMEMBER,调用的时候却发现报了错误(error) ERR unknown command 'SRANDMEMBER'
, 查询redis的手册看到命令在2.6版本之后才开始支持, 再查看现在所使用redis的版本号, 居然是老旧的2.4版本。既然如此那便开始动手升级吧。
升级redis
从redis官网下载了稳定版源码包 redis-3.2.8.tar.gz,
1 | wget http://download.redis.io/releases/redis-3.2.8.tar.gz |
然后开始安装编译, 安装完毕。就当我关掉新的redis进程, 开启新版本的redis进程的时候。测试那边都在报首页数据不见了, 这才想起, 网站的很多持久化配置数据
都在redis上, 那只能把原数据导入过来了。
数据导入
Google了一会发现了一个叫 redis-dump 的工具, 支持redis数据的导入导出。那么开始安装redis-dump。
1 | gem install redis-dump |
gem是ruby包管理工具,如果没有的话需要提前安装。
安装完毕执行命令导出数据比较多的库
1 | redis-dump -u 192.168.8.30:6379 -d 6 > shihuo6.json |
然后把数据导入新版本的redis
1 | redis < shihuo6.json redis-load -d 6 -u 192.168.8.30:2345 |
报错invalid bytes in UTF8 string, 打开文档看到如果存储的字符串是 二进制 或者 序列化 过的需要加参数-n。再来导入一次。
1 | redis < shihuo6.json redis-load -d 6 -u 192.168.8.30:2345 -n |
成功了。