Redis中PipeLine使用(二)---批量get與批量set
批量查詢的相關問題總結
再做測試之前首先向redis中批量插入一組資料
1-->1
2-->2
3-->3
4-->4
5-->5
6-->6
現在批量get資料
for (Entry<String,String> entry :map.entrySet())
{
pipe.get(entry.getKey().getBytes());
}
List<Object> list=pipe.syncAndReturnAll();
for(Object o:list){
byte[] tmp=(byte[])o;
System.out.println("---->"+new String(tmp));
}
其列印結果是:
然而這並不是我們想要的,那怎樣才能知道列印的這個value對應的key呢?
這樣的應用場景很多,我們首先批量從redis get資料出來,然後將get的資料與記憶體中的資料進行執行在批量寫入資料庫!
這是需要引入一個HashMap
HashMap<String, String> map=new HashMap<String, String>();
map.put("1","1");
map.put("2","2");
map.put("3","3");
map.put("4","4");
map.put("5","5");
map.put("6","6");
Pipeline pipe=redis.pipelined();
HashMap<byte[], Response<byte[]>> newMap=new HashMap<byte[], Response<byte[]>>();
for (Entry<String,String> entry :map.entrySet()) {
newMap.put(entry.getKey().getBytes(), pipe.get(entry.getKey().getBytes()));
}
pipe.sync();
for (Entry<byte[], Response<byte[]>> entry :newMap.entrySet()) {
Response<byte[]> sResponse=(Response<byte[]>)entry.getValue();
System.out.println(new String(entry.getKey())+"-----"+new String(sResponse.get()).toString());
}
批量get之後與記憶體的資料想加再批量set
HashMap<String, String> map=new HashMap<String, String>();
map.put("1","1");
map.put("2","2");
map.put("3","3");
map.put("4","4");
map.put("5","5");
map.put("6","6");
Pipeline pipe=redis.pipelined();
HashMap<byte[], Response<byte[]>> newMap=new HashMap<byte[], Response<byte[]>>();
for (Entry<String,String> entry :map.entrySet()) {
newMap.put(entry.getKey().getBytes(), pipe.get(entry.getKey().getBytes()));
}
pipe.sync();
for (Entry<byte[], Response<byte[]>> entry :newMap.entrySet()) {
Response<byte[]> sResponse=(Response<byte[]>)entry.getValue();
long temp=Long.valueOf(Long.parseLong(map.get(new String(entry.getKey())))+Long.parseLong(new String(sResponse.get()).toString()));
map.put(new String(entry.getKey()), Long.toString(temp));
}
for (Entry<String,String> entry :map.entrySet()) {
pipe.set(entry.getKey().getBytes(), entry.getValue().getBytes());
}
pipe.sync();
相關文章
- redis大幅效能提升之使用管道(PipeLine)和批量(Batch)操作RedisBAT
- lombok get/set 與 JavaBean get/setLombokJavaBean
- 盤一盤 synchronized (二)—— 偏向鎖批量重偏向與批量撤銷synchronized
- Redis從檔案中批量插入資料Redis
- 批量刪除 redis keysRedis
- php中對MYSQL操作之批量執行,與獲取批量結果PHPMySql
- 使用shell批量監控磁碟壞塊(二)
- 表格的批量重新命名與批量刪除
- Redis效能提高之批量和管道Redis
- Redis批量匯入文字資料Redis
- 批量修改檔名 與 批量檔案字元替換字元
- redis中multi與pipeline介紹分析Redis
- Sequence 批量更改與建立
- 另一種批量裝機神器-----使用PXE批量裝機
- [mysql] 批量匯入提示: Variable ‘character_set_client’ can’t be set to the value of ‘NULLMySqlclientNull
- VI中的批量替換
- 批量按使用者expdp
- MySQL使用Batch批量處理MySqlBAT
- AD 批量匯入使用者(利用 for……do……dsadd user 批量建使用者)
- OCSInventoryNG使用之在windows系統下AGENT的批量部署(二)Windows
- 私有屬性的Get Set 與 Public
- 批量關注掘金使用者
- 使用PrepareStatement實現批量插入操作REST
- 使用JDBC時,加速批量insertJDBC
- 使用MySqlBulkLoader批量插入資料MySql
- 使用Automator批量生成圖示
- 由淺到淺入門批量渲染(二)
- Redis 中的 set 和 sorted set 如何使用,原始碼實現分析Redis原始碼
- java中批量插入資料jdbc hibernate Mybatis使用方式JavaJDBCMyBatis
- redis(二)redis概述與jedis的使用Redis
- 抖音批量取消喜歡,批量取消抖音喜歡
- 如何批量處理word中的表格
- ClearCase中批量重置許可權命令
- 批量刪除檔案中的^M
- SQLServer批量更新SQLServer
- Laravel 批量更新Laravel
- 批量提交事例
- 批量請求