Redis效能大幅提公升之Batch批量讀寫詳解

2022-09-28 06:42:07 字數 1430 閱讀 7925

前言

提示:本文針對的是stackexchange.redis

一、問題呈現

前段時間在開發的時候,遇到了redis批量讀的問題,由於在stackexchange.redis裡面我確實沒有找到pipeline命令,找到的是batch命令,因此對其用法進行了**一下。

下面的**是我之前寫的:

public list get(list ids)

if (dic.keys.contains(studententityredishashkey.name.tostring()))

result.add(se);

}catch (exception ex)

return result;

}從上面的**中可以看出,並不是批量讀,經過效能測試,效能確實是要遠遠低於用batch操作,因為hashgetall方法被執行了多次。

下面給出批量方法:

二、解決問題方法

具體的用法是:

var batch = db.createbatch();

...//這裡寫具體批量操作的方法

batch.execute();

2.wvgba1批量寫:

具體**:

public bool insertbatch(list selist)

batch.execute();

result = true;

} catch (exception ex)

return result;

}這個方法裡執行的是批量插入學生實體資料,這裡只是針對hash,其它的也一wvgba樣操作。 

2.2批量讀:

具體**:

public list getbatch(list ids)

batch.execute();

foreach(var hashentry in valuelist)

wvgba

if (dic.keys.contains(studententityredishashkey.name.tostring()))

result.add(se);

}} catch (exception ex)

return result;

}這個方法是批量讀取學生實體資料,批量拿到實體資料後,將其轉化成我們需要的資料。下面給出效能對比。

2.3效能對比:

10條資料,約4-5倍差距:

1000條資料,約28倍的差距:

隨著資料了增多,差距將越來越大。

三、原始碼測試案例 

上面是批量讀寫實體資料,下面給出stackexchange.redis原始碼測試案例裡的批量讀寫寫法:

public void testbatchsent()

}這個方法裡也給出了批量寫和讀的操作。

總結本文標題: redis效能大幅提公升之batch批量讀寫詳解

本文位址:

你又可以大幅提公升專案效能啦!

一 資源載入 重點分析專案通過resources和assetbundle的載入開銷,說明如下 1.assetbundle資源載入 在assetbundle載入頁面中,使用者可以看到每個具體資源在專案檢測過程中的具體cpu耗時,同時我們在之前版本的基礎上還明確了資源的載入母體assetbundle資訊...

Kafka2 6 0發布 效能大幅提公升

近日kafka2.6版本發布,距離2.5.0發布只過去了不到四個月的時間。kafka 2.6.0包含許多重要的新功能。以下是一些重要更改的摘要 如果要從2.1.x之前的版本公升級,請參閱以下注釋,以了解用於儲存使用者偏移量的架構的更改。將inter.broker.protocol.version更改...

使用Redis管道提公升效能

首發於 樊浩柏科學院 redis 的 管道 pipelining 是用來打包多條無關命令批量執行,以減少多個命令分別執行帶來的網路互動時間。在一些批量運算元據的場景,使用管道可以顯著提公升 redis 的讀寫效能。redis 的管道實質就是命令打包批量執行,多次網路互動減少到單次。使用管道和不使用管...