前言
提示:本文針對的是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 的管道實質就是命令打包批量執行,多次網路互動減少到單次。使用管道和不使用管...