国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 詳解Java使用Pipeline對Redis批量讀寫(hmset&hgetall)

詳解Java使用Pipeline對Redis批量讀寫(hmset&hgetall)

2020-07-17 13:23引鴆懟孑 Java教程

本篇文章主要介紹了Java使用Pipeline對Redis批量讀寫(hmset&hgetall),具有一定的參考價值,有興趣的可以了解一下。

一般情況下,Redis Client端發出一個請求后,通常會阻塞并等待Redis服務端處理,Redis服務端處理完后請求命令后會將結果通過響應報文返回給Client。

感覺這有點類似于HBase的Scan,通常是Client端獲取每一條記錄都是一次RPC調用服務端。

在Redis中,有沒有類似HBase Scanner Caching的東西呢,一次請求,返回多條記錄呢?

有,這就是Pipline。官方介紹 http://redis.io/topics/pipelining

通過pipeline方式當有大批量的操作時候,我們可以節省很多原來浪費在網絡延遲的時間,需要注意到是用pipeline方式打包命令發 送,redis必須在處理完所有命令前先緩存起所有命令的處理結果。打包的命令越多,緩存消耗內存也越多。所以并不是打包的命令越多越好。

使用Pipeline在對Redis批量讀寫的時候,性能上有非常大的提升。

Java測試了一下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
package com.lxw1234.redis;
 
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
 
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
import redis.clients.jedis.Response;
 
 
public class Test {
 
 public static void main(String[] args) throws Exception {
 Jedis redis = new Jedis("127.0.0.1", 6379, 400000);
 Map<String,String> data = new HashMap<String,String>();
 redis.select(8);
 redis.flushDB();
 //hmset
 long start = System.currentTimeMillis();
 //直接hmset
 for (int i=0;i<10000;i++) {
  data.clear();
  data.put("k_" + i, "v_" + i);
  redis.hmset("key_" + i, data);
 }
 long end = System.currentTimeMillis();
 System.out.println("dbsize:[" + redis.dbSize() + "] .. ");
 System.out.println("hmset without pipeline used [" + (end - start) / 1000 + "] seconds ..");
 redis.select(8);
 redis.flushDB();
 //使用pipeline hmset
 Pipeline p = redis.pipelined();
 start = System.currentTimeMillis();
 for (int i=0;i<10000;i++) {
  data.clear();
  data.put("k_" + i, "v_" + i);
  p.hmset("key_" + i, data);
 }
 p.sync();
 end = System.currentTimeMillis();
 System.out.println("dbsize:[" + redis.dbSize() + "] .. ");
 System.out.println("hmset with pipeline used [" + (end - start) / 1000 + "] seconds ..");
 
 //hmget
 Set<String> keys = redis.keys("*");
 //直接使用Jedis hgetall
 start = System.currentTimeMillis();
 Map<String,Map<String,String>> result = new HashMap<String,Map<String,String>>();
 for(String key : keys) {
  result.put(key, redis.hgetAll(key));
 }
 end = System.currentTimeMillis();
 System.out.println("result size:[" + result.size() + "] ..");
 System.out.println("hgetAll without pipeline used [" + (end - start) / 1000 + "] seconds ..");
 
 //使用pipeline hgetall
 Map<String,Response<Map<String,String>>> responses = new HashMap<String,Response<Map<String,String>>>(keys.size());
 result.clear();
 start = System.currentTimeMillis();
 for(String key : keys) {
  responses.put(key, p.hgetAll(key));
 }
 p.sync();
 for(String k : responses.keySet()) {
  result.put(k, responses.get(k).get());
 }
 end = System.currentTimeMillis();
 System.out.println("result size:[" + result.size() + "] ..");
 System.out.println("hgetAll with pipeline used [" + (end - start) / 1000 + "] seconds ..");
 
 redis.disconnect();
 
 }
 
 
}

測試結果如下:

?
1
2
3
4
5
6
7
8
dbsize:[10000] ..
hmset without pipeline used [243] seconds ..
dbsize:[10000] ..
hmset with pipeline used [0] seconds ..
result size:[10000] ..
hgetAll without pipeline used [243] seconds ..
result size:[10000] ..
hgetAll with pipeline used [0] seconds ..

使用pipeline來批量讀寫10000條記錄,就是小菜一碟,秒完。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://my.oschina.net/u/2273085/blog/419920

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 日韩视频网 | 日韩在线一区二区 | 亚洲乱码国产乱码精品精98午夜 | 久久丁香 | 欧美大片免费观看 | 婷婷狠狠| 精品国产一区二区三区性色av | 午夜视频免费 | 精品久久久久久久久久久 | 亚洲精品久久久久久动漫 | 天堂一区二区三区在线 | 欧美成在线视频 | 国产一区二区av | 久久精品无码一区二区日韩av | www.色小妹| 欧美一区二区免费在线观看 | www中文字幕 | 天天操天天拍 | 精品国产乱码久久久久久牛牛 | 国产精品一区二区av | 一区二区三区在线播放 | 欧美成人综合 | 国产三级在线 | 麻豆精品国产91久久久久久 | 在线一区视频 | 久久久久久91 | 亚洲精品自拍 | 成人教育av | 亚洲激情视频 | 精品视频在线播放 | 欧美日韩在线免费 | 一区二区三区高清在线 | 欧美日韩精品一区二区三区四区 | 成人区精品一区二区毛片不卡 | 午夜小电影 | 日韩精品免费在线视频 | 香蕉一区 | 欧美成人免费 | 国产精品久久久久久婷婷天堂 | 免费成年人视频在线观看 | 日本欧美在线观看 |