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

不同業務場景該如何選擇緩存的讀寫策略?

數據庫
本篇文章主要帶你了解了緩存使用的幾種策略,以及每種策略適用的使用場景是怎樣的。

你可能覺得緩存的讀寫很簡單,只需要優先讀緩存,緩存不命中就從數據庫查詢,查詢到了就回種緩存。實際上,針對不同的業務場景,緩存的讀寫策略也是不同的。

而我們在選擇策略時也需要考慮諸多的因素,比如說,緩存中是否有可能被寫入臟數據,策略的讀寫性能如何,是否存在緩存命中率下降的情況等等。

接下來,我就以標準的“緩存 + 數據庫”的場景為例,帶你剖析經典的緩存讀寫策略以及它們適用的場景。這樣一來,你就可以在日常的工作中根據不同的場景選擇不同的讀寫策略。

Cache Aside(旁路緩存)策略

我們來考慮一種最簡單的業務場景,比方說在你的電商系統中有一個用戶表,表中只有 ID 和年齡兩個字段,緩存中我們以 ID 為 Key 存儲用戶的年齡信息。那么當我們要把 ID 為 1 的用戶的年齡從 19 變更為 20,要如何做呢?

你可能會產生這樣的思路:先更新數據庫中 ID 為 1 的記錄,再更新緩存中 Key 為 1 的數據。

這個思路會造成緩存和數據庫中的數據不一致。比如,A 請求將數據庫中 ID 為 1 的用戶年齡從 19 變更為 20,與此同時,請求 B 也開始更新 ID 為 1 的用戶數據,它把數據庫中記錄的年齡變更為 21,然后變更緩存中的用戶年齡為 21。緊接著,A 請求開始更新緩存數據,它會把緩存中的年齡變更為 20。此時,數據庫中用戶年齡是 21,而緩存中的用戶年齡卻是 20。

為什么產生這個問題呢?因為變更數據庫和變更緩存是兩個獨立的操作,而我們并沒有對操作做任何的并發控制。那么當兩個線程并發更新它們的時候,就會因為寫入順序的不同造成數據的不一致。

另外,直接更新緩存還存在另外一個問題就是丟失更新。還是以我們的電商系統為例,假如電商系統中的賬戶表有三個字段:ID、戶名和金額,這個時候緩存中存儲的就不只是金額信息,而是完整的賬戶信息了。當更新緩存中賬戶金額時,你需要從緩存中查詢完整的賬戶數據,把金額變更后再寫入到緩存中。

這個過程中也會有并發的問題,比如說原有金額是 20,A 請求從緩存中讀到數據,并且把金額加 1,變更成 21,在未寫入緩存之前又有請求 B 也讀到緩存的數據后把金額也加 1,也變更成 21,兩個請求同時把金額寫回緩存,這時緩存里面的金額是 21,但是我們實際上預期是金額數加 2,這也是一個比較大的問題。

那我們要如何解決這個問題呢?其實,我們可以在更新數據時不更新緩存,而是刪除緩存中的數據,在讀取數據時,發現緩存中沒了數據之后,再從數據庫中讀取數據,更新到緩存中。

這個策略就是我們使用緩存最常見的策略,Cache Aside 策略(也叫旁路緩存策略),這個策略數據以數據庫中的數據為準,緩存中的數據是按需加載的。它可以分為讀策略和寫策略,其中讀策略的步驟是:

  • 從緩存中讀取數據;
  • 如果緩存命中,則直接返回數據;
  • 如果緩存不命中,則從數據庫中查詢數據;
  • 查詢到數據后,將數據寫入到緩存中,并且返回給用戶。

寫策略的步驟是:

  • 更新數據庫中的記錄;
  • 刪除緩存記錄。

你也許會問了,在寫策略中,能否先刪除緩存,后更新數據庫呢?答案是不行的,因為這樣也有可能出現緩存數據不一致的問題,我以用戶表的場景為例解釋一下。

假設某個用戶的年齡是 20,請求 A 要更新用戶年齡為 21,所以它會刪除緩存中的內容。這時,另一個請求 B 要讀取這個用戶的年齡,它查詢緩存發現未命中后,會從數據庫中讀取到年齡為 20,并且寫入到緩存中,然后請求 A 繼續更改數據庫,將用戶的年齡更新為 21,這就造成了緩存和數據庫的不一致。

那么像 Cache Aside 策略這樣先更新數據庫,后刪除緩存就沒有問題了嗎?其實在理論上還是有缺陷的。

假如某個用戶數據在緩存中不存在,請求 A 讀取數據時從數據庫中查詢到年齡為 20,在未寫入緩存中時另一個請求 B 更新數據。它更新數據庫中的年齡為 21,并且清空緩存。這時請求 A 把從數據庫中讀到的年齡為 20 的數據寫入到緩存中,造成緩存和數據庫數據不一致。

不過這種問題出現的幾率并不高,原因是緩存的寫入通常遠遠快于數據庫的寫入,所以在實際中很難出現請求 B 已經更新了數據庫并且清空了緩存,請求 A 才更新完緩存的情況。而一旦請求 A 早于請求 B 清空緩存之前更新了緩存,那么接下來的請求就會因為緩存為空而從數據庫中重新加載數據,所以不會出現這種不一致的情況。

Cache Aside 策略是我們日常開發中最經常使用的緩存策略,不過我們在使用時也要學會依情況而變。比如說當新注冊一個用戶,按照這個更新策略,你要寫數據庫,然后清理緩存(當然緩存中沒有數據給你清理)。可當我注冊用戶后立即讀取用戶信息,并且數據庫主從分離時,會出現因為主從延遲所以讀不到用戶信息的情況。

而解決這個問題的辦法恰恰是在插入新數據到數據庫之后寫入緩存,這樣后續的讀請求就會從緩存中讀到數據了。并且因為是新注冊的用戶,所以不會出現并發更新用戶信息的情況。

Cache Aside 存在的最大的問題是當寫入比較頻繁時,緩存中的數據會被頻繁地清理,這樣會對緩存的命中率有一些影響。如果你的業務對緩存命中率有嚴格的要求,那么可以考慮兩種解決方案:

  • 一種做法是在更新數據時也更新緩存,只是在更新緩存前先加一個分布式鎖,因為這樣在同一時間只允許一個線程更新緩存,就不會產生并發問題了。當然這么做對于寫入的性能會有一些影響;
  • 另一種做法同樣也是在更新數據時更新緩存,只是給緩存加一個較短的過期時間,這樣即使出現緩存不一致的情況,緩存的數據也會很快過期,對業務的影響也是可以接受。

當然了,除了這個策略,在計算機領域還有其他幾種經典的緩存策略,它們也有各自適用的使用場景。

Read/Write Through(讀穿 / 寫穿)策略

這個策略的核心原則是用戶只與緩存打交道,由緩存和數據庫通信,寫入或者讀取數據。這就好比你在匯報工作的時候只對你的直接上級匯報,再由你的直接上級匯報給他的上級,你是不能越級匯報的。

Write Through 的策略是這樣的:先查詢要寫入的數據在緩存中是否已經存在,如果已經存在,則更新緩存中的數據,并且由緩存組件同步更新到數據庫中,如果緩存中數據不存在,我們把這種情況叫做“Write Miss(寫失效)”。

一般來說,我們可以選擇兩種“Write Miss”方式:

  • 一個是“Write Allocate(按寫分配)”,做法是寫入緩存相應位置,再由緩存組件同步更新到數據庫中;
  • 另一個是“No-write allocate(不按寫分配)”,做法是不寫入緩存中,而是直接更新到數據庫中。

在 Write Through 策略中,我們一般選擇“No-write allocate”方式,原因是無論采用哪種“Write Miss”方式,我們都需要同步將數據更新到數據庫中,而“No-write allocate”方式相比“Write Allocate”還減少了一次緩存的寫入,能夠提升寫入的性能。

Read Through 策略就簡單一些,它的步驟是這樣的:先查詢緩存中數據是否存在,如果存在則直接返回,如果不存在,則由緩存組件負責從數據庫中同步加載數據。

下面是 Read Through/Write Through 策略的示意圖:

Read Through/Write Through 策略的特點是由緩存節點而非用戶來和數據庫打交道,在我們開發過程中相比 Cache Aside 策略要少見一些,原因是我們經常使用的分布式緩存組件,無論是 Memcached 還是 Redis 都不提供寫入數據庫,或者自動加載數據庫中的數據的功能。而我們在使用本地緩存的時候可以考慮使用這種策略,比如說在上一節中提到的本地緩存 Guava Cache 中的 Loading Cache 就有 Read Through 策略的影子。

我們看到 Write Through 策略中寫數據庫是同步的,這對于性能來說會有比較大的影響,因為相比于寫緩存,同步寫數據庫的延遲就要高很多了。那么我們可否異步地更新數據庫?這就是我們接下來要提到的“Write Back”策略。

Write Back(寫回)策略

這個策略的核心思想是在寫入數據時只寫入緩存,并且把緩存塊兒標記為“臟”的。而臟塊兒只有被再次使用時才會將其中的數據寫入到后端存儲中。

需要注意的是,在“Write Miss”的情況下,我們采用的是“Write Allocate”的方式,也就是在寫入后端存儲的同時要寫入緩存,這樣我們在之后的寫請求中都只需要更新緩存即可,而無需更新后端存儲了,我將 Write back 策略的示意圖放在了下面:

如果使用 Write Back 策略的話,讀的策略也有一些變化了。我們在讀取緩存時如果發現緩存命中則直接返回緩存數據。如果緩存不命中則尋找一個可用的緩存塊兒,如果這個緩存塊兒是“臟”的,就把緩存塊兒中之前的數據寫入到后端存儲中,并且從后端存儲加載數據到緩存塊兒,如果不是臟的,則由緩存組件將后端存儲中的數據加載到緩存中,最后我們將緩存設置為不是臟的,返回數據就好了。

發現了嗎?其實這種策略不能被應用到我們常用的數據庫和緩存的場景中,它是計算機體系結構中的設計,比如我們在向磁盤中寫數據時采用的就是這種策略。無論是操作系統層面的 Page Cache,還是日志的異步刷盤,亦或是消息隊列中消息的異步寫入磁盤,大多采用了這種策略。因為這個策略在性能上的優勢毋庸置疑,它避免了直接寫磁盤造成的隨機寫問題,畢竟寫內存和寫磁盤的隨機 I/O 的延遲相差了幾個數量級呢。

但因為緩存一般使用內存,而內存是非持久化的,所以一旦緩存機器掉電,就會造成原本緩存中的臟塊兒數據丟失。所以你會發現系統在掉電之后,之前寫入的文件會有部分丟失,就是因為 Page Cache 還沒有來得及刷盤造成的。

當然,你依然可以在一些場景下使用這個策略,在使用時,我想給你的落地建議是:你在向低速設備寫入數據的時候,可以在內存里先暫存一段時間的數據,甚至做一些統計匯總,然后定時地刷新到低速設備上。比如說,你在統計你的接口響應時間的時候,需要將每次請求的響應時間打印到日志中,然后監控系統收集日志后再做統計。但是如果每次請求都打印日志無疑會增加磁盤 I/O,那么不如把一段時間的響應時間暫存起來,經過簡單的統計平均耗時,每個耗時區間的請求數量等等,然后定時地,批量地打印到日志中。

總結

本篇文章主要帶你了解了緩存使用的幾種策略,以及每種策略適用的使用場景是怎樣的。我想讓你掌握的重點是:

  • Cache Aside 是我們在使用分布式緩存時最常用的策略,你可以在實際工作中直接拿來使用。
  • Read/Write Through 和 Write Back 策略需要緩存組件的支持,所以比較適合你在實現本地緩存組件的時候使用;
  • Write Back 策略是計算機體系結構中的策略,不過寫入策略中的只寫緩存,異步寫入后端存儲的策略倒是有很多的應用場景。
責任編輯:趙寧寧 來源: 冰河技術
相關推薦

2021-09-13 10:31:02

Java原子

2024-09-05 16:01:55

2015-07-22 17:30:14

應用交付 太一星晨

2017-06-01 14:28:07

2021-07-20 15:42:05

編程語言PythonJava

2020-01-03 09:57:33

Microsoft SSQL數據庫

2023-02-07 13:27:00

運營策略分析

2025-06-30 07:40:00

系統通知架構推送

2022-10-20 09:26:24

MySQLOracleSqlServer

2015-07-09 10:22:27

CloudStackOpenStack云計算

2023-05-05 10:45:39

聯合索引數據

2018-10-09 09:37:59

物聯網聯網設備IOT

2021-10-18 11:27:07

運營分析體系

2012-10-10 08:44:18

NativeWebHybrid

2015-06-30 09:44:41

公有云游戲游戲云

2016-12-29 11:01:54

ReactVue

2022-02-09 11:51:43

滲透測試漏洞攻擊

2021-06-29 09:00:00

機器人ITRPA

2015-09-15 09:50:02

CIO ITaaSIT即服務

2025-03-11 09:00:00

Spring依賴注入Java
點贊
收藏

51CTO技術棧公眾號

色婷婷国产精品免| 国产精品永久免费| 影音先锋资源av| 福利成人导航| 337p粉嫩大胆噜噜噜噜噜91av| 久久偷看各类女兵18女厕嘘嘘| 网站一区二区三区| 巨大荫蒂视频欧美大片| 久久精品官网| 久久激情视频久久| 一级黄色大片免费看| 午夜在线观看视频| 粉嫩av一区二区三区在线播放| 欧美日韩第一视频| 在线观看国产网站| av成人免费| 国产精品久久久久久久第一福利| 国产日本欧美在线观看| 中文字幕av播放| 巨人精品**| 欧美日韩在线三区| www.avtt| 一区二区三区视频网站| 韩国视频一区二区| 98精品在线视频| 在线观看免费黄色网址| 久久久久久爱| 欧美性xxxx在线播放| 手机看片福利永久国产日韩| 一级爱爱免费视频| 日韩午夜av| 日韩一区二区精品视频| 成年人性生活视频| 99久久综合国产精品二区| 亚洲精品欧美在线| 日韩电影免费观看在| 国产三级第一页| 视频一区视频二区中文| 色香阁99久久精品久久久| 无码人妻一区二区三区免费n鬼沢 久久久无码人妻精品无码 | 在线播放蜜桃麻豆| 2020国产精品自拍| 黄色av网址在线观看| 中文字幕一区二区人妻痴汉电车| 国产最新精品| 欧美精品一区二区三区久久久 | 日本激情综合网| 欧美女同一区| 久久综合五月天婷婷伊人| 成人精品一区二区三区电影免费 | 亚洲人成电影网站色…| 亚洲高清视频免费| 国产精品.xx视频.xxtv| 大荫蒂欧美视频另类xxxx| 在线观看日韩羞羞视频| 少妇一区二区三区四区| 国内精品写真在线观看| 国产不卡在线观看| 91国产丝袜播放在线| 亚欧美无遮挡hd高清在线视频| 国产丝袜高跟一区| 国产伦精品一区三区精东| 亚洲色图图片| 8v天堂国产在线一区二区| 午夜免费精品视频| 久久99久久99精品免观看软件| jizz国产精品| 亚洲不卡在线观看| 男人日女人的bb| 成年人视频网站在线| 99精品热视频| 国产亚洲一区在线播放| av免费观看在线| 国产精品99久久久久久宅男| 国产成人在线一区二区| 日韩免费视频一区二区视频在线观看| 亚洲精品韩国| 2019av中文字幕| 亚洲午夜18毛片在线看| 亚洲第一黄色| 26uuu久久噜噜噜噜| 在线看成人av| 国产精品人人爽人人做我的可爱| 97在线视频免费播放| 国产乡下妇女做爰视频| 亚洲午夜极品| 91精品国产高清自在线| 日韩美女视频网站| 嫩草成人www欧美| 国产精品久久综合av爱欲tv| 四虎成人永久免费视频| 樱桃成人精品视频在线播放| 欧美床上激情在线观看| 免费毛片一区二区三区| 制服诱惑一区二区| 欧美在线一区二区三区四| 日韩精品1区2区| 欧美一区二区性| 欧美放荡的少妇| 亚洲一级片在线看| 小毛片在线观看| 久久久久久久久久久久久久久久久久久久 | 水蜜桃久久夜色精品一区| 亚洲欧洲在线播放| 成人午夜免费影院| 欧美在线播放| 午夜精品一区二区三区在线 | 欧美激情一二三区| 操bbb操bbb| 人人草在线视频| 欧美日韩亚洲综合一区二区三区| 十八禁视频网站在线观看| 国产精品传媒麻豆hd| 日韩欧美中文字幕公布| 偷偷色噜狠狠狠狠的777米奇| 欧美精品momsxxx| 久久好看免费视频| 久久国产黄色片| 国产成人免费视| 国产精品夜夜夜爽张柏芝| 96av在线| 日韩视频免费直播| 国产日韩精品中文字无码| 亚洲高清av| 亚洲一区免费网站| 伊人在线视频| 欧美亚洲一区三区| 黄色录像a级片| 精品成人国产| 亚洲影院色在线观看免费| 麻豆app在线观看| 欧美日韩国产中文精品字幕自在自线| 亚洲综合123| 91影院成人| 国产精品揄拍500视频| 色视频在线观看免费| 一区二区三区不卡视频在线观看| 亚洲色图久久久| 激情五月色综合国产精品| 97精品国产91久久久久久| 国产高清不卡视频| 亚洲三级电影网站| 狠狠操狠狠干视频| 四虎国产精品免费观看| 国产成人拍精品视频午夜网站 | 六九午夜精品视频| 国产一区二区黑人欧美xxxx| 国产成年人免费视频| 国产一区不卡视频| 在线观看国产一区| 欧洲亚洲精品久久久久| 在线视频欧美性高潮| 午夜精品免费观看| 久久久不卡网国产精品二区| 无码人妻精品一区二区蜜桃网站| 日韩美香港a一级毛片| 永久555www成人免费| 99超碰在线观看| 久久精品视频在线看| 日本熟妇人妻xxxxx| 免费成人av| 国产精品国产三级国产专播精品人| 手机福利在线| 欧洲人成人精品| 久久精品国产亚洲AV成人婷婷| 免费观看日韩av| 中文字幕一区二区三区乱码| 91成人在线| 久久精品小视频| www.av在线.com| 亚洲国产成人porn| 91av在线免费| 免费久久精品视频| 国内自拍偷拍视频| 国产欧美自拍| 久久激情五月丁香伊人| 一区二区三区免费在线视频| 久久久久久久国产精品影院| 色妞色视频一区二区三区四区| 国产精品露脸视频| 日韩理论片中文av| 国产精品手机在线观看| 国产精品久久久久久久免费软件| 久久综合久久综合这里只有精品| 国产精品白丝一区二区三区| 欧美性xxxx极品hd满灌| 国产偷人妻精品一区| 亚洲综合日本| 神马影院一区二区三区| 日韩毛片网站| 97热精品视频官网| 91免费在线| 日韩欧美三级在线| 久久国产视频精品| 国产欧美一二三区| 香蕉视频999| 在线欧美视频| 一区二区在线中文字幕电影视频| 日韩精品一区二区三区中文| 九九久久精品一区| 国产在线小视频| 精品久久久久久最新网址| 日韩视频在线观看一区| 国产精品国产三级国产aⅴ无密码| 青青草精品在线| 日日夜夜免费精品| 国产 欧美 日韩 一区| 亚洲男人都懂第一日本| 成人写真福利网| 我爱我色成人网| 久久久免费精品| 黄色网在线免费观看| 日韩成人在线播放| a网站在线观看| 欧美三级乱人伦电影| 久久精品国产亚洲AV无码麻豆| 久久久精品tv| 黄色录像a级片| 国产精品123区| 日韩精品视频一二三| 99热免费精品| 人妻少妇精品久久| 一区二区三区在线电影| 欧美少妇一区| 欧美在线导航| 岛国视频一区免费观看| 国产亚洲欧美日韩精品一区二区三区 | 精品人妻一区二区三区视频| 蜜桃av一区二区三区| 日韩欧美视频网站| 亚洲视频一二| 欧美视频在线第一页| 久久激情电影| 日产中文字幕在线精品一区 | 欧美日韩在线观看一区二区三区| 国产在线视频欧美一区| 国产精品露脸av在线| 亚洲深夜视频| 性视频1819p久久| 成人国产电影在线观看| 欧美大奶子在线| 尤物yw193can在线观看| 久久精品最新地址| 亚洲免费视频一区二区三区| 日韩精品视频免费| 亚洲AV第二区国产精品| 精品福利av导航| 亚洲乱码在线观看| 日韩欧美高清dvd碟片| 国产一区二区在线播放视频| 色综合中文字幕| 最近免费中文字幕大全免费版视频| 午夜精品久久久| 日韩免费视频一区二区视频在线观看| 精品成人在线视频| 欧美三日本三级少妇99| 激情av一区二区| 加勒比在线一区| 欧美午夜电影在线播放| 丰满人妻一区二区三区四区| 色综合天天综合网天天狠天天| 日本一级片免费看| 日本高清视频一区二区| 波多野结衣一区二区三区在线| 91成人网在线| 国产孕妇孕交大片孕| 91.com视频| 女人18毛片一区二区三区| 亚洲第一男人av| 毛片免费在线| 精品国产一区二区三区在线观看| 国产在线更新| 孩xxxx性bbbb欧美| 性欧美videohd高精| 国产www精品| 亚洲色图图片| 精品欧美国产| 久久福利影院| 日b视频免费观看| 久久精品30| 在线免费看v片| 91视频com| 91九色丨porny丨极品女神| 亚洲综合久久av| 无码人妻av一区二区三区波多野| 欧美日韩在线电影| 高h震动喷水双性1v1| 日韩精品视频免费在线观看| 韩国三级在线观看久| 日日骚久久av| 精品捆绑调教一区二区三区| 91精品国产高清自在线 | aaa级精品久久久国产片| 久久草在线视频| 亚洲一区二区在| 日韩午夜在线| 天天看片天天操| 99精品桃花视频在线观看| 特级西西www444人体聚色| 一区视频在线播放| 国产三级av片| 91精品一区二区三区在线观看| 手机在线精品视频| 久久韩国免费视频| 欧美人体一区二区三区| 亚洲一区二区三区xxx视频| 网友自拍区视频精品| 色香蕉在线观看| 丝袜亚洲另类欧美综合| 丰满少妇一区二区三区专区 | 欧美一区二区精品| 精品av中文字幕在线毛片| 久久av资源网站| 91精品国产经典在线观看| 国产精品视频在线免费观看 | 最近中文字幕在线观看视频| 欧美一区二区三区在线电影| 手机看片1024日韩| 九九九热精品免费视频观看网站| 成人国产网站| 欧美日韩中文国产一区发布| 综合天堂av久久久久久久| 日本成人在线免费视频| 国产福利91精品| 成人高潮免费视频| 欧美日韩综合不卡| 国产一区二区三区福利| 91av在线视频观看| 男人的天堂久久| 黄页免费在线观看视频| 国产精品影视天天线| 天堂av免费在线| 欧美色图片你懂的| 成人77777| 国产精品一区久久久| 精品国产123区| 少妇性l交大片| 国产女人aaa级久久久级| 欧美一区二区激情视频| 亚洲成av人片在线观看香蕉| 免费av网站在线观看| 国产日韩亚洲欧美| 91蜜臀精品国产自偷在线| 中文字幕av专区| 国产精品进线69影院| 自拍偷拍色综合| 色诱女教师一区二区三区| 欧美日韩尤物久久| 色播亚洲婷婷| 久久99最新地址| 麻豆精品一区二区三区视频| 欧美伊人精品成人久久综合97| 触手亚洲一区二区三区| 国产精品白嫩初高中害羞小美女| 色棕色天天综合网| 在线免费观看视频黄| 中文字幕中文在线不卡住| 国产又黄又大又爽| 欧美夫妻性视频| 日韩a级大片| 欧美两根一起进3p做受视频| 99视频一区二区三区| 日韩手机在线观看| 国产视频久久久| 成人全视频免费观看在线看| 91手机在线播放| 国产精品亚洲综合色区韩国| 日韩少妇一区二区| 婷婷成人激情在线网| 国产www视频| 午夜精品理论片| 蜜桃a∨噜噜一区二区三区| 91淫黄看大片| 国产精品久久久久久久久动漫 | 亚洲高清免费一级二级三级| 一级爱爱免费视频| 久久91精品国产| 婷婷综合成人| 蜜臀av免费观看| 国产精品初高中害羞小美女文| 最新在线中文字幕| 久久精品精品电影网| aaa国产精品| 人妻有码中文字幕| 日韩毛片视频在线看| 国产夫妻自拍av| 日韩av手机在线| 久久免费av| av2014天堂网| 在线免费一区三区| 在线播放蜜桃麻豆| 久久精品国产综合精品| 蜜桃av噜噜一区二区三区小说| 99成人在线观看| 欧美一级免费大片| 成人视屏在线观看| 欧美大片免费播放| 国产日韩欧美在线一区| 夜夜嗨aⅴ一区二区三区| 国内精品美女av在线播放|