JAVA使用pipeline批量寫Redis資料

2021-09-08 05:07:38 字數 1675 閱讀 8866

最近遇到乙個需求,需要把資料庫中的手機號批量寫入到資料庫,使用了很多的方法都效能不佳或者出現連線池斷開的問題,最後在網上找到了這個方法

public static void main(string args) throws exception 

long end = system.currenttimemillis();

system.out.println("dbsize:[" + redis.dbsize() + "] .. ");

system.out.println("hmset without pipeline used [" + (end - start) / 1000 + "] seconds ..");

redis.select(0);

redis.flushdb();

//使用pipeline hmset

pipeline p = redis.pipelined();

start = system.currenttimemillis();

for (int i = 0; i < 10000; i++)

p.sync();

end = system.currenttimemillis();

system.out.println("dbsize:[" + redis.dbsize() + "] .. ");

system.out.println("hmset with pipeline used [" + (end - start) / 1000 + "] seconds ..");

//hmget

set keys = redis.keys("*");

//直接使用jedis hgetall

start = system.currenttimemillis();

map> result = new hashmap>();

for (object key : keys)

end = system.currenttimemillis();

system.out.println("result size:[" + result.size() + "] ..");

system.out.println("hgetall without pipeline used [" + (end - start) / 1000 + "] seconds ..");

//使用pipeline hgetall

map>> responses = new hashmap>>(keys.size());

result.clear();

start = system.currenttimemillis();

for (object key : keys)

p.sync();

for (string k : responses.keyset())

end = system.currenttimemillis();

system.out.println("result size:[" + result.size() + "] ..");

system.out.println("hgetall with pipeline used [" + (end - start) / 1000 + "] seconds ..");

redis.disconnect();

}

python使用pipeline批量讀寫redis

用了很久的redis了。隨著業務的要求越來越高。對redis的讀寫速度要求也越來越高。正好最近有個需求 需要在秒級取值1000 的資料 如果對於傳統的單詞取值,迴圈取值,消耗實在是大,有小夥伴可能考慮到多執行緒,但這並不是最好的解決方案,這裡考慮到了redis特有的功能pipeline管道功能。下面...

jenkins 管道Pipeline裡使用公用類庫

1 新增專案資料夾,在資料夾配置裡進行公用類庫的配置 2 在git倉庫根目錄建立vars資料夾,我們的方法檔案就在這個裡面 3 新增具體的方法檔案,擴充套件名為groovy,檔名即為方法名 4 buildproject.groovy這個檔案就是方法,它主要實現的功能是執行乙個.net core容器,...

jenkins 管道Pipeline裡使用公用類庫

1 jenkins 系統設定 共享類庫,或者在新增資料夾之後,在資料夾配置裡進行公用類庫的配置 2 在git倉庫根目錄建立vars資料夾,我們的方法檔案就在這個裡面 3 新增具體的方法檔案,擴充套件名為groovy,檔名即為方法名 4 buildproject.groovy這個檔案就是方法,它主要實...