redis数据批量导入导出
針對工作中可能用到 將某臺服務器中的redis數據 導出然后導入到新的服務器中,一種方法是redis-dump工具,但是 他需要安裝ruby環境,安裝環境的過程中還可能出現意想不到的錯誤。所以不得不選用其他方法了。一下 是幾點思路 供參考。在此謝謝我的同事(yaoer)的幫忙。
1、數據導出,不用自己寫,也不用第三方腳本,
echo "HGETALL xxx" | redis-cli -h localhost -p 6379
echo "HGETALL xxx" | redis-cli -h localhost -p 6379 >> wordlist.raw
2.這樣得到的結果,你可以上到服務器上 查看?wordlist.raw文件
3.整理成輸入需要的文件格式?
$f = 'xx.oo';
$lines = 0;
$inkey = 0;
$rawfile = 'xx.oo';
$hashkey = 'xx';
$buff = '';
$fp = fopen($rawfile,'w');
$fps = fopen($f,'r');
while($line= fgets($fps)){
?$inkey = !$inkey;
?if ($inkey){
$f = 'bayes_wordlist.raw';
$lines = 0;
$inkey = 0;
$rawfile = 'bayes_wordlist.3.raw';
$hashkey = 'bayes_wordlist';
$buff = '';
$fp = fopen($rawfile,'w');
$fps = fopen($f,'r');
while($line= fgets($fps)){
?$inkey = !$inkey;
?if ($inkey){
??$line = sprintf('"%s"',trim($line));
??$buff = "HSET $hashkey ".trim($line);
??}
?else
?{
??$buff .= ' "'.trim($line).'"';
??fwrite($fp,$buff."\r\n");
?}
}
??$buff = "HSET $hashkey ".trim($line);
?}
?else
?{
??$buff .= ' "'.trim($line).'"';
??fwrite($fp,$buff."\r\n");
?}
}
如果選擇哪個庫 要在首行寫入 select x
4.利用redis-cli進行導入
echo `date` > pipe.log && cat?xx.oo | redis-cli >> pipe.log && echo `date` >> pipe.log
5.加上了時間記錄,和對導入結果進行紀錄,真正執行導入的語句是
cat wordlist.raw | redis-cli,當然嚴謹些的話redis-cli后面還要加-h localhost -p 6379等參數。
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。互聯網+時代,時刻要保持學習,攜手千鋒PHP,Dream It Possible。
轉載于:https://www.cnblogs.com/gaohj/archive/2013/06/13/3133576.html
總結
以上是生活随笔為你收集整理的redis数据批量导入导出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精读-软件测试的艺术之模块测试及更高级别
- 下一篇: jieba分词的原理