Redis批量導入數據的方法


有時候,我們需要給redis庫中插入大量的數據,如做性能測試前的准備數據。遇到這種情況時,偶爾可能也會懵逼一下,這里就給大家介紹一個批量導入數據的方法。

先准備一個redis protocol的文件(redis protocol可以參考這里:https://redis.io/topics/protocol),這里是用java程序來輸出的,java代碼如下:

<<RedisBatchTest>>

public class RedisBatchTest {

    public static void main(String[] args) {
        String outputFile = "d:\\temp\\redis_input.txt";
        RedisBatchTest test = new RedisBatchTest();
        test.generateFile(outputFile);

    }

    /**
     * 格式化成輸入字符串
     *
     * @param args
     * @return
     */
    private String getString(String key, String value) {
        StringBuilder sb = new StringBuilder();
        sb.append("*3").append("\r\n");
        sb.append("$3").append("\r\n");
        sb.append("SET\r\n");

        sb.append("$").append(key.getBytes().length).append("\r\n");
        sb.append(key).append("\r\n");

        sb.append("$").append(value.getBytes().length).append("\r\n");
        sb.append(value).append("\r\n");

        return sb.toString();
    }

    public void generateFile(String file) {
        
        BufferedWriter w = null;
        String key = null;
        String value = null;
        StringBuilder sb = new StringBuilder();
        try {
            w = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file), "utf-8"));
            for (int i = 1; i <= 380; i++) {
                key = "test_batch_" + i;
                value = "v_" + i + "注冊即送水電費ServiceTest"; // 這是key對應的value
                sb.append(this.getString(key, value));
                if (i % 10 == 0) {
                    w.write(sb.toString());
                    w.flush();
                    sb.delete(0, sb.length());
                    System.out.println("Current write: " + i);
                }
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                w.flush();
                w.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

}

執行以上代碼,就會在d:\\temp目錄下生成一個文本文件,格式如下:

 

 

以上就是redis protocol格式的文件了,請上傳到要執行的機器上。然后使用以下命令來執行它:

cat input/redis_input.txt | bin/redis-cli -p 6370 -a yourpasswd –pipe

 

如果執行成功的話,你就可以看到如下信息了:

 

從以上輸出可以看出,380條數全部插入到redis服務器上啦。

更詳細的信息,可以參考:https://redis.io/topics/mass-insert

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM