精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Redis延時隊列,這次徹底給你整明白了

存儲 存儲軟件 Redis
有了 Redis,對于那些只有一組消費者的消息隊列,使用 Redis 就可以非常輕松的搞定。Redis 的消息隊列不是專業的消息隊列,它沒有非常多的高級特性, 沒有 ack 保證,如果對消息的可靠性有著極致的追求,那么它就不適合使用。

[[344441]]

所謂延時隊列就是延時的消息隊列,下面說一下一些業務場景

實踐場景

訂單支付失敗,每隔一段時間提醒用戶

用戶并發量的情況,可以延時2分鐘給用戶發短信

先來看看Redis實現普通的消息隊列

我們知道,對于專業的消息隊列中間件,如Kafka和RabbitMQ,消費者在消費消息之前要進行一系列的繁瑣過程。

如RabbitMQ發消息之前要創建 Exchange,再創建 Queue,還要將 Queue 和 Exchange 通過某種規則綁定起來,發消息的時候要指定 routingkey,還要控制頭部信息

但是絕大 多數情況下,雖然我們的消息隊列只有一組消費者,但還是需要經歷上面一些過程。

有了 Redis,對于那些只有一組消費者的消息隊列,使用 Redis 就可以非常輕松的搞定。Redis 的消息隊列不是專業的消息隊列,它沒有非常多的高級特性, 沒有 ack 保證,如果對消息的可靠性有著極致的追求,那么它就不適合使用

異步消息隊列基本實現

Redis 的 list(列表) 數據結構常用來作為異步消息隊列使用,使用 rpush/lpush 操作入隊列, 使用 lpop 和 rpop 來出隊列

  1. > rpush queue 月伴飛魚1 月伴飛魚2 月伴飛魚3 
  2. (integer) 3 
  3. > lpop queue 
  4. "月伴飛魚1" 
  5. > llen queue 
  6. (integer) 2 

問題1:如果隊列空了

客戶端是通過隊列的 pop 操作來獲取消息,然后進行處理。處理完了再接著獲取消息, 再進行處理。如此循環往復,這便是作為隊列消費者的客戶端的生命周期。

可是如果隊列空了,客戶端就會陷入 pop 的死循環,不停地 pop,沒有數據,接著再 pop, 又沒有數據。這就是浪費生命的空輪詢。空輪詢不但拉高了客戶端的 CPU,redis 的 QPS 也 會被拉高,如果這樣空輪詢的客戶端有幾十來個,Redis 的慢查詢可能會顯著增多。

通常我們使用 sleep 來解決這個問題,讓線程睡一會,睡個 1s 鐘就可以了。不但客戶端 的 CPU 能降下來,Redis 的 QPS 也降下來了

問題2:隊列延遲

用上面睡眠的辦法可以解決問題。同時如果只有 1 個消費者,那么這個延遲就是 1s。如果有多個消費者,這個延遲會有所下降,因 為每個消費者的睡覺時間是岔開來的。

有沒有什么辦法能顯著降低延遲呢?

那就是 blpop/brpop。

這兩個指令的前綴字符 b 代表的是 blocking,也就是阻塞讀。

阻塞讀在隊列沒有數據的時候,會立即進入休眠狀態,一旦數據到來,則立刻醒過來。消 息的延遲幾乎為零。用 blpop/brpop 替代前面的 lpop/rpop,就完美解決了上面的問題。

問題3:空閑連接自動斷開

其實他還有個問題需要解決—— 空閑連接的問題。

如果線程一直阻塞在哪里,Redis 的客戶端連接就成了閑置連接,閑置過久,服務器一般 會主動斷開連接,減少閑置資源占用。這個時候 blpop/brpop 會拋出異常來。

所以編寫客戶端消費者的時候要小心,注意捕獲異常,還要重試。

分布式鎖沖突處理

假如客戶端在處理請求時加分布式鎖沒加成功怎么辦。

一般有 3 種策略來處理加鎖失敗:

1、直接拋出異常,通知用戶稍后重試;

2、sleep 一會再重試;

3、將請求轉移至延時隊列,過一會再試;

直接拋出特定類型的異常

這種方式比較適合由用戶直接發起的請求,用戶看到錯誤對話框后,會先閱讀對話框的內 容,再點擊重試,這樣就可以起到人工延時的效果。如果考慮到用戶體驗,可以由前端的代碼 替代用戶自己來進行延時重試控制。它本質上是對當前請求的放棄,由用戶決定是否重新發起 新的請求。

sleep

sleep 會阻塞當前的消息處理線程,會導致隊列的后續消息處理出現延遲。如果碰撞的比 較頻繁或者隊列里消息比較多,sleep 可能并不合適。如果因為個別死鎖的 key 導致加鎖不成 功,線程會徹底堵死,導致后續消息永遠得不到及時處理。

延時隊列

這種方式比較適合異步消息處理,將當前沖突的請求扔到另一個隊列延后處理以避開沖突。

延時隊列的實現

我們可以使用 zset這個命令,用設置好的時間戳作為score進行排序,使用 zadd score1 value1 ....命令就可以一直往內存中生產消息。再利用 zrangebysocre 查詢符合條件的所有待處理的任務,通過循環執行隊列任務即可。也可以通過 zrangebyscore key min max withscores limit 0 1 查詢最早的一條任務,來進行消費

  1. private Jedis jedis; 
  2.  
  3. public void redisDelayQueueTest() { 
  4.     String key = "delay_queue"
  5.  
  6.     // 實際開發建議使用業務 ID 和隨機生成的唯一 ID 作為 value, 隨機生成的唯一 ID 可以保證消息的唯一性, 業務 ID 可以避免 value 攜帶的信息過多 
  7.     String orderId1 = UUID.randomUUID().toString(); 
  8.     jedis.zadd(queueKey, System.currentTimeMillis() + 5000, orderId1); 
  9.  
  10.     String orderId12 = UUID.randomUUID().toString(); 
  11.     jedis.zadd(queueKey, System.currentTimeMillis() + 5000, orderId2); 
  12.  
  13.     new Thread() { 
  14.         @Override 
  15.         public void run() { 
  16.             while (true) { 
  17.                 Set<String> resultList; 
  18.                 // 只獲取第一條數據, 只獲取不會移除數據 
  19.                 resultList = jedis.zrangebyscore(key, System.currentTimeMillis(), 0, 1); 
  20.                 if (resultList.size() == 0) { 
  21.                     try { 
  22.                         Thread.sleep(1000); 
  23.                     } catch (InterruptedException e) { 
  24.                         e.printStackTrace(); 
  25.                         break; 
  26.                     } 
  27.                 } else { 
  28.                     // 移除數據獲取到的數據 
  29.                     if (jedis.zrem(key, resultList.get(0)) > 0) { 
  30.                         String orderId = resultList.get(0); 
  31.                         log.info("orderId = {}", resultList.get(0)); 
  32.                         this.handleMsg(orderId); 
  33.                     } 
  34.                 } 
  35.             } 
  36.         } 
  37.     }.start(); 
  38.  
  39. public void handleMsg(T msg) { 
  40.     System.out.println(msg); 

上面的實現, 在多線程邏輯上也是沒有問題的, 假設有兩個線程 T1, T2和其他更多線程, 處理邏輯如下, 保證了多線程情況下只有一個線程處理了對應的消息:

1.T1, T2 和其他更多線程調用 zrangebyscore 獲取到了一條消息 A

2.T1 準備開始刪除消息 A, 由于是原子操作, T2 和其他更多線程等待 T1 執行 zrem 刪除消息 A 后再執行 zrem 刪除消息 A

3.T1 刪除了消息 A, 返回刪除成功標記 1, 并對消息 A 進行處理

4.T2 其他更多線程開始 zrem 刪除消息 A, 由于消息 A 已經被刪除, 所以所有的刪除均失敗, 放棄了對消息 A 的處理

同時,我們要注意一定要對 handle_msg 進行異常捕獲,避免因為個別任務處理問題導致循環異常退 出

進一步優化

上面的算法中同一個任務可能會被多個進程取到之后再使用 zrem 進行爭搶,那些沒搶到 的進程都是白取了一次任務,這是浪費。可以考慮使用 lua scripting 來優化一下這個邏輯,將 zrangebyscore 和 zrem 一同挪到服務器端進行原子化操作,這樣多個進程之間爭搶任務時就不 會出現這種浪費了

使用調用Lua腳本進一步優化

Lua 腳本, 如果有超時的消息, 就刪除, 并返回這條消息, 否則返回空字符串:

  1. String luaScript = "local resultArray = redis.call('zrangebyscore', KEYS[1], 0, ARGV[1], 'limit' , 0, 1)\n" + 
  2.         "if #resultArray > 0 then\n" + 
  3.         "    if redis.call('zrem', KEYS[1], resultArray[1]) > 0 then\n" + 
  4.         "        return resultArray[1]\n" + 
  5.         "    else\n" + 
  6.         "        return ''\n" + 
  7.         "    end\n" + 
  8.         "else\n" + 
  9.         "    return ''\n" + 
  10.         "end"
  11.  
  12. jedis.eval(luaScript, ScriptOutputType.VALUE, new String[]{key}, String.valueOf(System.currentTimeMillis())); 

Redis延時隊列優勢

Redis用來進行實現延時隊列是具有這些優勢的:

1.Redis zset支持高性能的 score 排序。

2.Redis是在內存上進行操作的,速度非常快。

3.Redis可以搭建集群,當消息很多時候,我們可以用集群來提高消息處理的速度,提高可用性。

4.Redis具有持久化機制,當出現故障的時候,可以通過AOF和RDB方式來對數據進行恢復,保證了數據的可靠性

Redis延時隊列劣勢

使用 Redis 實現的延時消息隊列也存在數據持久化, 消息可靠性的問題

沒有重試機制 - 處理消息出現異常沒有重試機制, 這些需要自己去實現, 包括重試次數的實現等

沒有 ACK 機制 - 例如在獲取消息并已經刪除了消息情況下, 正在處理消息的時候客戶端崩潰了, 這條正在處理的這些消息就會丟失, MQ 是需要明確的返回一個值給 MQ 才會認為這個消息是被正確的消費了

如果對消息可靠性要求較高, 推薦使用 MQ 來實現

Redission實現延時隊列

基于Redis的Redisson分布式延遲隊列結構的RDelayedQueue Java對象在實現了RQueue接口的基礎上提供了向隊列按要求延遲添加項目的功能。該功能可以用來實現消息傳送延遲按幾何增長或幾何衰減的發送策略

  1. RQueue<String> distinationQueue = ... 
  2. RDelayedQueue<String> delayedQueue = getDelayedQueue(distinationQueue); 
  3. // 10秒鐘以后將消息發送到指定隊列 
  4. delayedQueue.offer("msg1", 10, TimeUnit.SECONDS); 
  5. // 一分鐘以后將消息發送到指定隊列 
  6. delayedQueue.offer("msg2", 1, TimeUnit.MINUTES); 

在該對象不再需要的情況下,應該主動銷毀。僅在相關的Redisson對象也需要關閉的時候可以不用主動銷毀。

  1. RDelayedQueue<String> delayedQueue = ... 
  2. delayedQueue.destroy(); 

 

是不是很方便...............

本文轉載自微信公眾號「月伴飛魚」,可以通過以下二維碼關注。轉載本文請聯系月伴飛魚公眾號。

 

責任編輯:武曉燕 來源: 月伴飛魚
相關推薦

2020-10-26 07:02:11

ConcurrentH存儲

2023-04-26 01:17:16

惡意注冊Java驗證

2022-03-04 14:57:50

緩存數據庫代碼

2023-11-29 08:01:38

websocket協議

2024-11-15 09:29:12

2025-05-29 01:00:00

數據架構大數據數據湖

2020-02-06 14:57:11

明白SpringMvc異步處理

2024-05-10 11:35:22

Redis延時隊列數據庫

2023-02-27 08:10:16

2024-02-26 00:00:00

Redis持久化AOF

2023-04-03 07:23:06

Java線程通信

2020-06-08 11:10:53

Java回調機制代碼

2020-07-08 08:07:23

高并發系統消息隊列

2025-03-17 00:21:00

2022-04-25 09:03:16

JavaScript代碼

2021-05-08 07:14:38

MySQL數據庫安全性

2020-03-09 09:13:40

HTTPSTCP網絡協議

2024-05-16 12:24:53

2019-06-24 05:05:40

緩沖池查詢數據InnoDB

2024-06-21 08:32:24

點贊
收藏

51CTO技術棧公眾號

自拍偷拍欧美一区| 成全电影大全在线观看| 美国一区二区三区在线播放 | 国产精品无码2021在线观看| 免费看欧美美女黄的网站| 久久精品夜夜夜夜夜久久| 性生交大片免费看l| 亚洲同志男男gay1069网站| 国产精品视频在线看| 成人91视频| 日本黄区免费视频观看| 大奶在线精品| 欧美日韩一区高清| 人体内射精一区二区三区| 日本啊v在线| 国产一区不卡视频| 国产精品电影在线观看| 久久综合色综合| 色爱综合网欧美| 日韩电影免费观看中文字幕| 日本人69视频| 亚洲人成午夜免电影费观看| 亚洲精品视频观看| 亚洲精品一区二区三区四区五区 | 久久99久久99精品| yourporn在线观看视频| eeuss国产一区二区三区| 91精品国产自产在线老师啪| 国产精品100| 伊人成综合网| 在线观看日韩欧美| 国产人妻人伦精品1国产丝袜| 精品中文视频| 欧美日韩成人一区| 一区二区三区国| 国产午夜在线观看| 91麻豆蜜桃一区二区三区| 999国内精品视频在线| 在线视频播放大全| 日韩和欧美一区二区三区| 88国产精品欧美一区二区三区| 久久久精品国产sm调教| 亚洲午夜精品一区 二区 三区| 一本久久综合亚洲鲁鲁| 中文字幕成人动漫| 国产不卡一区| 国产亚洲精品一区二555| 亚洲乱码国产乱码精品精大量| 加勒比久久高清| 亚洲成人精品在线| 99久久久无码国产精品性波多| 亚洲不卡在线| 欧美本精品男人aⅴ天堂| 亚洲欧美日韩网站| 秋霞午夜一区二区三区视频| 欧美一级高清大全免费观看| 欧美国产在线一区| 精品视频在线观看网站| 日韩欧美一级二级| 91精品人妻一区二区三区四区| 日本精品视频| 亚洲第一免费网站| 精品中文字幕在线播放| 亚洲精品亚洲人成在线| 亚洲三级av在线| 午夜影院黄色片| 欧美r级电影| 欧美成人精品在线观看| 国产一级视频在线播放| 中文高清一区| 国产成人午夜视频网址| 在线观看亚洲国产| 国产一区二区三区国产| 粉嫩高清一区二区三区精品视频 | 在线播放亚洲激情| 天堂а√在线中文在线鲁大师| 亚洲精品午夜av福利久久蜜桃| 久久伊人色综合| 久久久久99精品| 亚洲女优在线| 91日韩在线播放| 日本xxxxxwwwww| 国产欧美日韩在线| 免费观看中文字幕| 美女91在线看| 欧美日韩亚洲高清一区二区| 九色91porny| 全国精品免费看| 久久精品99久久久香蕉| 日本一区二区不卡在线| 日韩成人免费在线| 亚洲一区二区三区在线视频| 天天操天天射天天舔| 国产婷婷色一区二区三区| 一区二区91美女张开腿让人桶| 亚洲七七久久综合桃花剧情介绍| 欧美日韩国产限制| 亚洲精品免费一区亚洲精品免费精品一区 | 91精品视频一区| 日韩一区免费视频| 亚洲欧洲精品成人久久奇米网| 国产精品久久..4399| jizz欧美| 亚洲激情免费观看| 卡通动漫亚洲综合| 日韩电影免费在线观看网站| 国产精品国产亚洲精品看不卡15| av在线资源站| 欧美性猛交xxxx富婆弯腰| 亚洲高清视频免费| 国产麻豆精品久久| 韩国欧美亚洲国产| 国产精品欧美激情在线| 2023国产精品自拍| 成人黄色大片网站| 国产乱码精品一区二区三区亚洲人 | 国产日韩欧美久久| 亚洲欧美成人vr| 欧美激情a在线| 国产精品久久久久久无人区| 国产亚洲制服色| 青青青国产在线观看| 欧洲一区在线| 久久亚洲春色中文字幕| 中文字幕 欧美激情| 久久婷婷国产综合国色天香 | 日韩精品久久久久久| 韩国成人av| 丁香花高清在线观看完整版| 欧美一区永久视频免费观看| 少妇高潮惨叫久久久久| 日韩成人精品在线| 欧美少妇一区| 惠美惠精品网| 亚洲欧美日韩网| 天天做天天爱夜夜爽| 99天天综合性| 成人黄色av片| 全国精品免费看| 国产69精品久久久久久| 色婷婷在线视频| 天天爽夜夜爽夜夜爽精品视频| 年下总裁被打光屁股sp| 欧美日韩视频| 成人自拍视频网站| 男女羞羞视频在线观看| 精品国产一区二区三区久久久蜜月| 我要看黄色一级片| 国内精品视频一区二区三区八戒| 亚洲欧洲精品一区二区三区波多野1战4| 成人啊v在线| 中文国产成人精品| 11024精品一区二区三区日韩| 中文字幕不卡在线观看| 岛国毛片在线播放| 91精品在线观看国产| 成人黄色免费网站在线观看| a篇片在线观看网站| 日韩欧美一区中文| 亚洲一区二区91| 99久久夜色精品国产网站| 亚洲熟妇av日韩熟妇在线| 欧美尿孔扩张虐视频| 国产成人在线一区| 老司机午夜在线视频| 91精品国产色综合久久| 国产一级片网址| 久久综合狠狠综合久久综合88| 日韩欧美一区三区| 黑人操亚洲人| 成人在线播放av| 蜜臀av在线| 亚洲男人天堂2019| 91久久精品国产91性色69| 亚洲老司机在线| 色哟哟无码精品一区二区三区| 国产精品婷婷| 在线精品亚洲一区二区| www.爱久久| 日韩美女免费视频| 黄色动漫在线| 日韩精品在线观看一区| 中文字字幕在线中文乱码| 一卡二卡三卡日韩欧美| 在线 丝袜 欧美 日韩 制服| 麻豆传媒一区二区三区| 免费高清一区二区三区| 免费电影一区二区三区| 91夜夜揉人人捏人人添红杏| 韩国精品一区| 视频在线观看一区二区| 少妇一区二区三区四区| 欧美视频一区二区三区四区| 亚洲色婷婷一区二区三区| 久久久综合激的五月天| 善良的小姨在线| 久久午夜视频| 国产成人一区二区三区别| 九一国产精品| 成人高清在线观看| 国产精品一区二区免费福利视频| 九九热精品在线| 国产在线视频网| 精品欧美乱码久久久久久1区2区| 精品乱码一区内射人妻无码| 亚洲午夜一区二区| 极品美妇后花庭翘臀娇吟小说| 波多野结衣亚洲一区| 57pao国产成永久免费视频| 亚洲一区二区三区高清不卡| 黄色网络在线观看| 不卡在线一区二区| 久久精品magnetxturnbtih| 日韩精品中文字幕一区二区| 国产精品中文字幕在线| 美女视频在线免费| 欧美二区乱c黑人| 国产在线激情| 中文字幕久热精品在线视频| 手机福利小视频在线播放| 欧美成人伊人久久综合网| 一卡二卡三卡在线观看| 欧美午夜宅男影院| 欧美亚洲精品天堂| 亚洲va欧美va人人爽| 波多野结衣爱爱视频| 中文字幕在线观看一区二区| 三年中国中文观看免费播放| 91浏览器在线视频| 疯狂揉花蒂控制高潮h| 丰满白嫩尤物一区二区| 欧洲美女亚洲激情| 久久99精品久久久| 国产乱女淫av麻豆国产| 美日韩一区二区| 最新天堂中文在线| 美女性感视频久久| www欧美激情| 欧美aaaaaa午夜精品| 欧美私人情侣网站| 久久经典综合| 日本www.色| 奇米888四色在线精品| www.欧美日本| 日本欧美一区二区三区乱码| 日韩一级片播放| 日韩高清中文字幕一区| 999精品网站| 毛片av中文字幕一区二区| 一道本视频在线观看| 蜜乳av一区二区| 欧美成人乱码一二三四区免费| 麻豆精品国产传媒mv男同| 欧美一级视频在线| 国产成人在线观看| 亚洲久久久久久| 久久久久国产精品免费免费搜索| 成人精品999| 国产精品麻豆网站| 182在线观看视频| 亚洲女子a中天字幕| av资源吧首页| 色香蕉久久蜜桃| 中文字幕+乱码+中文乱码www | 天堂在线一区二区三区| 国产专区欧美精品| 中文字幕在线国产| xfplay精品久久| 综合 欧美 亚洲日本| 亚洲精品日日夜夜| 日韩成人免费在线观看| 色av一区二区| 97免费观看视频| 亚洲精品在线三区| 牛牛澡牛牛爽一区二区| 日韩最新免费不卡| 黄色网在线免费观看| 欧美激情在线观看| 你懂得影院夜精品a| 91欧美视频网站| 美女精品一区最新中文字幕一区二区三区| 日本一区二区久久精品| 正在播放日韩欧美一页| 亚洲熟妇无码另类久久久| 日本中文字幕一区二区视频| 熟妇无码乱子成人精品| 久久免费国产精品| 一区二区视频免费看| 欧美天堂在线观看| 国产精品一区二区av白丝下载| 亚洲大胆人体av| 欧美天天影院| 97在线视频免费播放| 欧美高清影院| 麻豆一区区三区四区产品精品蜜桃| 精品国产一区二区三区香蕉沈先生| 日本丰满大乳奶| 日韩中文字幕91| 69xxx免费视频| 中文字幕亚洲区| 日本视频免费在线| 欧美一级片在线看| аⅴ资源新版在线天堂| 91精品国产777在线观看| 国产精品**亚洲精品| 欧美日本亚洲| 亚洲美女啪啪| 无码人妻丰满熟妇区毛片蜜桃精品 | 免费一级片视频| 欧美男生操女生| 免费黄色在线视频网站| 欧美国产高跟鞋裸体秀xxxhd| 欧美日韩五区| 蜜桃精品久久久久久久免费影院| 亚洲欧美综合久久久| 日本久久久久久久久久久久| youjizz国产精品| 欧美成人精品欧美一| 欧美精品一二三| av在线中文| 日韩av观看网址| 日韩欧美四区| 蜜桃传媒一区二区三区| 国产成人精品影视| 免费成人深夜夜行网站| 欧美性受xxxx黑人xyx| 欧美3p视频在线观看| 国产91成人在在线播放| 久久a爱视频| 六月婷婷在线视频| 粉嫩aⅴ一区二区三区四区| 放荡的美妇在线播放| 欧美日韩国产小视频在线观看| 高清日韩av电影| 国产精品吊钟奶在线| 精品久久美女| 九九九在线观看视频| 亚洲国产精品黑人久久久| 精品一区二三区| 一区二区三欧美| julia一区二区三区中文字幕| 欧美另类高清视频在线| 乱人伦精品视频在线观看| 国产精品1000部啪视频| 日韩欧美成人网| 每日更新在线观看av| 98精品国产自产在线观看 | 亚洲精品一区二三区不卡| 午夜影院一区| 欧美福利精品| 天堂va蜜桃一区二区三区| 欧美18—19性高清hd4k| 在线观看一区不卡| 日本中文字幕伦在线观看| 国产区精品视频| 一区二区三区午夜视频| 丰满少妇一区二区三区专区| 亚洲午夜久久久久久久久电影网 | 97人人爽人人爽人人爽| 久久精品久久久久| 天堂va欧美ⅴa亚洲va一国产| 国产午夜精品视频一区二区三区| 国产精品538一区二区在线| 久久久久亚洲av片无码下载蜜桃| 亚洲第一区在线观看| 依依综合在线| 一区不卡字幕| 成人精品gif动图一区| 黄瓜视频在线免费观看| 在线精品视频视频中文字幕| 57pao成人永久免费| 日本香蕉视频在线观看| 久久久久亚洲蜜桃| 91一区二区视频| 久久久噜噜噜久噜久久| 久久最新网址| 亚洲国产日韩在线一区| 精品久久久一区| 欧美成人三区| 国产三级精品在线不卡| 视频一区视频二区在线观看| 日韩精品123区| 日韩成人在线网站| 久久国产三级| 岛国大片在线播放| 欧美国产激情一区二区三区蜜月 | 国产suv精品一区二区6| 天堂在线免费观看视频| 久久好看免费视频| 亚洲欧洲免费| 日本中文字幕精品| 色婷婷亚洲婷婷| 色综合999| 日韩欧美亚洲v片| 国产凹凸在线观看一区二区| 波多野结衣一本一道| 久久久久久久久久久网站| 欧洲杯什么时候开赛| 一本色道久久hezyo无码| 欧美日韩国产影片|