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

更新商家信息后,緩存與DB數據不一致導致用戶看到舊數據,如何解決?

數據庫 其他數據庫
在當今高并發系統中,緩存(如Redis, Memcached)幾乎是必不可少的組件。它通過將熱點數據存放在內存中,極大地減輕了數據庫的壓力,提升了系統的響應速度。然而,引入緩存的同時,我們也引入了新的復雜性——如何保證緩存里的數據和數據庫里的數據是同步的?這就是經典的緩存一致性問題。

作為一名開發者,我們很可能都遇到過這樣的場景:電商平臺的運營同學火急火燎地跑過來,說某個商家的logo、名稱或活動信息明明已經更新了,但前端APP和頁面上還是顯示著舊數據,用戶投訴不斷。

你心里“咯噔”一下,立刻去數據庫查,發現數據確實已經更新為正確的了。那么問題出在哪?很可能,就是緩存與數據庫之間的數據不一致了。

在當今高并發系統中,緩存(如Redis, Memcached)幾乎是必不可少的組件。它通過將熱點數據存放在內存中,極大地減輕了數據庫的壓力,提升了系統的響應速度。然而,引入緩存的同時,我們也引入了新的復雜性——如何保證緩存里的數據和數據庫里的數據是同步的?這就是經典的緩存一致性問題。

本文將深入探討這個問題,并從簡單到復雜,介紹幾種行之有效的解決方案。

一、問題根源:我們為什么會需要緩存?

在深入問題之前,我們先達成一個共識:緩存是數據庫的一個副本,而不是替代品。 它的核心價值在于性能

想象一下,一個熱門商家主頁,每秒有數萬次請求。如果每次請求都直接去查詢數據庫:

1. 數據庫的CPU和IO壓力巨大。

2. 查詢速度相對較慢(毫秒級 vs 內存的微秒級),用戶體驗差。

因此,我們引入緩存。當第一個用戶請求商家信息時,系統會:

1. 檢查緩存中是否存在該數據(cacheKey = “shop:123”)。

2. 如果不存在(我們稱之為緩存未命中,Cache Miss),則去數據庫中查詢。

3. 將查詢到的數據寫入緩存,并設置一個過期時間(TTL)。

4. 返回數據給用戶。

后續的用戶請求,都會直接在緩存中找到數據(緩存命中,Cache Hit),快速返回。這被稱為 “Cache-Aside” 或 “Lazy Loading” 模式。

那么,不一致是如何產生的?

問題出在“更新”操作上。當我們更新商家信息時,如果只更新了數據庫,而沒有妥善處理緩存,就會出現不一致。

二、初探解決方案:常見的策略與陷阱

1. 先更新數據庫,再刪除緩存(Cache-Aside)

這是最常用、也最被推薦的策略之一。流程如下:

  • 寫請求:更新數據庫中的商家信息。
  • 寫請求:刪除緩存中對應的key(如 DEL shop:123)。
  • 讀請求:后續的讀請求發現緩存中不存在(Cache Miss),于是從數據庫讀取最新數據,并重新寫入緩存。

代碼示例(偽代碼):

public voidupdateShop(Shop shop) {
    // 1. 更新數據庫
    shopMapper.updateById(shop);
    // 2. 刪除緩存
    redisClient.del("shop:" + shop.getId());
}

public Shop getShopById(Long id) {
    // 1. 先查緩存
    StringcacheKey="shop:" + id;
    Shopshop= redisClient.get(cacheKey);
    if (shop != null) {
        return shop; // 緩存命中,直接返回
    }
    // 2. 緩存未命中,查數據庫
    shop = shopMapper.selectById(id);
    if (shop != null) {
        // 3. 將數據庫數據寫入緩存
        redisClient.setex(cacheKey, 300, shop); // 設置300秒過期
    }
    return shop;
}

這個策略的優點:

簡單有效:邏輯清晰,易于理解和實現。

容錯性較好:即使第二步刪除緩存失敗,也只是一個“臟數據”暫時存在的風險,可以通過設置緩存的過期時間(TTL)來最終兜底。

但它并非完美,存在一個經典的不一致場景:假設在并發極高的情況下:

  • 請求A(讀)查詢緩存,未命中,于是去查數據庫(此時讀到的是舊數據)。
  • 請求B(寫)更新了數據庫。
  • 請求B(寫)刪除了緩存。
  • 請求A(讀)將步驟1中讀到的舊數據寫入了緩存。

這樣一來,緩存里就是舊數據,數據庫里是新數據,不一致發生了。雖然這個條件比較苛刻(讀請求必須在寫請求更新數據庫之后、刪除緩存之前完成數據庫查詢,并且其寫緩存操作還要在最晚發生),但在理論上是存在的。

2. 先刪除緩存,再更新數據庫

這個策略的目的是解決上述的并發問題,但同樣會引入新問題。

  • 寫請求:刪除緩存。
  • 寫請求:更新數據庫。

在并發情況下:

  • 請求A(寫)刪除了緩存。
  • 請求B(讀)發現緩存不存在,去數據庫查詢此時還是舊數據,并將舊數據寫入緩存。
  • 請求A(寫)才更新數據庫。

結果:緩存是舊數據,數據庫是新數據,不一致再次發生。這個概率比第一種策略的場景要高。

三、進階方案:如何應對高并發苛刻場景

對于大多數業務,第一種“先更新數據庫,再刪除緩存”的策略,配合合理的重試機制和TTL,已經足夠。但如果你的業務對一致性要求極高,無法忍受哪怕一瞬間的舊數據,可以考慮以下方案。

方案一:延遲雙刪

這是在“先更新數據庫,再刪除緩存”基礎上做的增強。既然在并發下有可能在刪除緩存后,又被一個舊的讀請求塞入臟數據,那我們再刪一次不就行了?

流程:

1. 寫請求:刪除緩存。

2. 寫請求:更新數據庫。

3. 寫請求:休眠一個短暫的時間(如500毫秒到1秒),再次刪除緩存。

這第二次刪除,目的就是清除掉在“更新數據庫”這個時間窗口內,可能被其他讀請求寫入的臟數據。

代碼示例:

public void updateShopWithDoubleDelete(Shop shop) {
    String cacheKey = "shop:" + shop.getId();
    // 1. 先刪除緩存
    redisClient.del(cacheKey);
    // 2. 更新數據庫
    shopMapper.updateById(shop);
    // 3. 休眠一段時間,確保讀請求已經完成了“讀數據庫 -> 寫緩存”的操作
    Thread.sleep(500);
    // 4. 再次刪除緩存
    redisClient.del(cacheKey);
}

如何確定休眠時間?這個時間需要根據你項目的讀請求平均耗時來估算。目的是確保所有在第一步刪除緩存后、第二步更新數據庫前發起的讀請求,都已經完成了它們的“寫緩存”操作。

缺點:

? 降低了寫操作的吞吐量,因為強行休眠了。

? 時間難以精確設定,設短了可能刪不干凈,設長了影響性能。

方案二:異步串行化與緩存隊列

這是更復雜但也更嚴謹的一種方案,核心思想是讓對同一個數據的讀寫請求串行化

我們可以使用一個內存隊列(或分布式消息隊列)來實現。

1. 系統為每一個商家ID(例如 shop:123)維護一個隊列。

2. 所有對這個商家的寫請求(更新、刪除)和讀請求(在緩存未命中時),都封裝成任務,按順序放入對應的隊列。

3. 一個后臺的工作線程,從隊列中順序取出任務并執行。

? 如果是寫任務:執行 更新DB -> 刪除緩存

? 如果是讀任務:執行 查DB -> 寫緩存

這樣做,就保證了對于同一個商家的操作是嚴格有序的,不可能出現一個寫操作還在更新數據庫,一個讀操作就去讀了舊數據并寫入緩存的情況。

缺點:

? 系統復雜度急劇上升,需要維護隊列和 worker。

? 因為串行化,性能會受一定影響。如果某個商家是超級熱點,其隊列可能會積壓。

這個方案通常只在極端場景下使用,比如“秒殺商品”的庫存更新。

四、終極武器:監聽數據庫Binlog,異步淘汰緩存

上面所有的方案,都要求應用層在代碼里顯式地處理緩存刪除邏輯。如果項目很龐大,團隊很多,很難保證每一個寫數據庫的地方都正確地配上了刪緩存的操作。有沒有一種更解耦、更通用的方式?

有!我們可以把自己偽裝成一個數據庫的“從庫”,去監聽數據庫的二進制日志(Binlog,如MySQL)或變更流(Change Stream,如MongoDB)。當數據庫有任何數據變更時,我們都能近乎實時地接收到這個事件,然后根據變更的內容去刪除緩存。

技術選型:

Canal:阿里巴巴開源的MySQL Binlog增量訂閱&消費組件。

Debezium:一個開源項目,為CDC(Change Data Capture)而生,支持多種數據庫。

MaxWell:另一個輕量級的MySQL Binlog解析工具。

架構流程:

1. 你的業務應用正常更新數據庫,完全不用關心緩存

2. Canal等服務連接到MySQL,模擬從庫,接收Binlog。

3. Canal解析Binlog,獲取到哪個表、哪行數據、發生了何種變更(增/刪/改)。

4. Canal的客戶端(你寫的程序)接收到這些變更事件。

5. 客戶端根據變更的行數據,生成對應的緩存Key,然后調用Redis進行刪除。

// 這是一個Canal客戶端的示例邏輯
@EventListener
publicvoidonDataChange(DataChangeEvent event) {
    if (event.getTableName().equals("t_shop")) {
        LongshopId= event.getData().getLong("id");
        StringcacheKey="shop:" + shopId;
        redisClient.del(cacheKey);
        log.info("通過Binlog清除緩存: {}", cacheKey);
    }
}

優點:

徹底解耦:應用層代碼變得非常干凈,只需關注業務和DB。

通用性強:無論通過什么途徑(后臺管理、API、數據庫直接操作)更新的數據,都能觸發緩存刪除。

性能優秀:異步處理,對主業務鏈路幾乎沒有性能影響。

缺點:

架構復雜:引入了新的中間件,增加了運維成本。

時效性:雖然近乎實時,但依然有極短的延遲。

五、總結與選型建議

沒有放之四海而皆準的銀彈,選擇哪種方案取決于你的業務場景和技術要求。

方案

優點

缺點

適用場景

先更新DB,再刪除緩存

簡單、可靠、容錯性好

存在極低概率的不一致

絕大多數業務場景的首選

,配合TTL和重試機制

延遲雙刪

能解決經典策略的并發問題

休眠時間難定,犧牲寫性能

對一致性要求較高,且能接受一定延遲的寫操作

異步串行化

強一致性,理論上最嚴謹

系統復雜,性能有瓶頸

極端場景,如金融賬戶余額、秒殺庫存

監聽Binlog

徹底解耦,通用性強

架構復雜,運維成本高

大型項目,多團隊協作,有專門的基礎架構團隊

給你的實踐建議:

1. 從簡單的開始:首先嘗試 “先更新數據庫,再刪除緩存” 。在99%的場景下,它已經足夠好。

2. 務必設置緩存過期時間(TTL):這是最后的兜底策略。即使所有刪除方案都失敗了,數據最終也會因過期而消失,然后被正確的數據填充。這被稱為 “最終一致性”

3. 增加刪除失敗的重試機制:如果刪除緩存這一步失敗了,可以將刪除操作放入一個重試隊列(或用消息隊列),不斷重試直到成功。這能極大提高方案的健壯性。

4. 評估成本:不要為了0.01%的不一致概率,去投入100%的復雜架構。技術決策永遠是權衡的藝術。

希望這篇文章能幫助你徹底理解并解決緩存一致性問題,讓你的用戶永遠看到最新的商家信息。

責任編輯:武曉燕 來源: 程序員秋天
相關推薦

2021-04-18 15:01:56

緩存系統數據

2018-07-15 08:18:44

緩存數據庫數據

2021-01-19 10:39:03

Redis緩存數據

2021-05-27 18:06:30

MySQL編碼數據

2011-02-22 14:02:48

vsftpd

2024-05-11 07:37:43

數據Redis策略

2024-10-10 09:30:45

2021-12-26 14:32:11

緩存數據庫數據

2025-04-08 09:00:00

數據庫緩存架構

2021-01-13 05:23:27

緩存數據庫高并發

2017-06-20 09:42:52

網絡安全法數據隱私法網絡安全

2024-11-18 08:00:00

數據倉庫通用語義層商業智能

2019-08-07 10:25:41

數據庫緩存技術

2010-06-02 10:53:28

MySQL版本

2022-12-13 08:15:42

緩存數據競爭

2020-07-20 14:06:38

數據庫主從同步服務

2018-07-08 07:38:28

數據庫緩存數據

2022-03-18 10:53:49

數據系統架構

2013-12-13 14:46:55

OSPFMTU鄰接關系

2022-03-16 15:54:52

MySQL數據format
點贊
收藏

51CTO技術棧公眾號

xxxx.国产| 在线观看国产中文字幕| 人人妻人人澡人人爽久久av| 一区二区三区高清视频在线观看| 精品一区二区三区电影| 北条麻妃在线一区| 男人在线资源站| 国产98色在线|日韩| 8x海外华人永久免费日韩内陆视频| 国产三级国产精品| 欧美成人三级| 亚洲午夜免费电影| 清纯唯美一区二区三区| 国产免费的av| 在线视频精品| 日韩在线视频观看| 精品少妇人妻av一区二区三区| 久久男人天堂| 中文字幕在线观看一区二区| 国产日韩欧美一区二区三区四区| 亚洲国产无线乱码在线观看| 国产精品videossex久久发布| 亚洲欧美在线第一页| 992tv人人草| 天天免费亚洲黑人免费| 亚洲精品视频在线观看网站| 热re99久久精品国产99热| av中文字幕免费| 三级久久三级久久| 久久男人av资源网站| 亚洲波多野结衣| 国产成人高清| 亚洲精品一区二区三区影院| 九九精品久久久| 小早川怜子影音先锋在线观看| 亚洲视频一区二区免费在线观看| 欧美午夜视频在线| 女人18毛片水真多18精品| 老司机精品视频在线| 日本不卡高字幕在线2019| 麻豆成人在线视频| 99久久夜色精品国产亚洲1000部| 亚洲美女喷白浆| 人妖粗暴刺激videos呻吟| 亚洲色图图片| 欧美日韩国产一级片| 大香煮伊手机一区| 忘忧草在线影院两性视频| 亚洲综合色视频| 亚洲最新免费视频| 国产私人尤物无码不卡| www激情久久| 国产亚洲欧美另类一区二区三区| 午夜精品无码一区二区三区| 九九国产精品视频| 国产精品无av码在线观看| 亚洲天堂男人av| 老司机一区二区三区| 欧美亚洲一区在线| 97久久久久久久| 一区二区三区福利| 91成人在线观看国产| 好吊妞视频一区二区三区| 国内精品福利| 韩国欧美亚洲国产| 国产午夜福利精品| 一本久道久久综合狠狠爱| 97精品久久久| 日韩欧美一区二区一幕| 亚洲精品字幕| 欧美亚洲第一区| 国产一级一级国产| 奇米色777欧美一区二区| 国产精品电影网站| 一级黄色片免费| 国产一区二区三区蝌蚪| www.成人av| 无码精品一区二区三区在线 | 亚洲欧洲成人自拍| 一级二级三级欧美| 91极品在线| 午夜影视日本亚洲欧洲精品| 日韩黄色片视频| 国产一区二区三区朝在线观看| 欧美视频一区二区三区| 17c国产在线| 2020国产精品极品色在线观看| 亚洲国产日韩欧美在线图片| 好吊日免费视频| 成人在线免费观看视频| 精品国产一区二区三区在线观看 | 综合av在线| 久久久噜噜噜久噜久久| 日本中文字幕第一页| 青青草成人在线观看| 91精品视频大全| 天天综合在线视频| 国产精品情趣视频| 日韩极品视频在线观看| 丝袜美腿诱惑一区二区三区| 91精品在线麻豆| 妖精视频一区二区| 欧美亚洲在线日韩| 欧美激情一区二区久久久| 亚洲熟女综合色一区二区三区| 久久超级碰视频| 国产亚洲欧美一区二区| 日本不卡不卡| 色综合天天综合| 日本少妇xxx| 精品国产乱码| 91精品国产91久久久久久| 真实新婚偷拍xxxxx| 成人午夜私人影院| 亚洲最大色综合成人av| 玖玖在线播放| 日韩女优电影在线观看| 国产精品久久免费观看| 亚洲三级视频| 97久久天天综合色天天综合色hd | 久久综合五月婷婷| 波霸ol色综合久久| 亚洲精品国产欧美在线观看| 成人99免费视频| 欧美精品久久96人妻无码| 精品国产免费人成网站| 欧美xxxxxxxxx| 免费在线观看黄色小视频| 亚洲专区欧美专区| 亚洲精品欧美日韩| 国产中文字幕在线观看| 国产婷婷一区二区| 黄页免费在线观看视频| 亚洲国产伊人| 亚洲视频视频在线| 日韩黄色在线视频| 国产毛片一区二区| 日韩av影视| 日本不卡免费高清视频在线| 91精品国产麻豆| 亚洲v国产v欧美v久久久久久| 欧美二区视频| 国产欧美日韩丝袜精品一区| 国产一级免费在线观看| 亚洲18女电影在线观看| 亚洲高清在线不卡| 成人精品视频| 欧洲中文字幕国产精品| 亚洲精品久久久久久动漫器材一区 | 九九精品在线播放| 正在播放亚洲精品| 久久久久99精品国产片| 欧美色图另类小说| 果冻天美麻豆一区二区国产| 久久影院在线观看| 一区二区视频网站| 久久精品人人做| 国产中文字幕在线免费观看| 亚洲精品无吗| 欧美性受xxx| 熟妇人妻一区二区三区四区 | 九九热这里有精品视频| 黄一区二区三区| 在线免费观看一区二区三区| 日韩av首页| 国产一区二区日韩| 日本中文字幕在线观看视频| 91在线国产观看| 999一区二区三区| 136福利精品导航| 91爱视频在线| 男女av在线| 欧美一a一片一级一片| 国产精品20p| 99综合精品| 国产在线精品一区二区中文 | 国内黄色精品| 国产色婷婷国产综合在线理论片a| 国产二区在线播放| 欧美视频一区二区三区| 日韩三级久久久| 国产一区不卡视频| 日韩精品在线观看av| 欧美毛片免费观看| 欧美在线视频一区| 国产中文字幕在线看| 欧美色图片你懂的| 日韩激情综合网| 国产99久久久精品| 国产免费成人在线| 国产欧美日韩在线观看视频| 国产精品pans私拍| 天堂аⅴ在线地址8| 91麻豆精品国产91久久久资源速度| 在线观看天堂av| 成人一级片网址| 高清在线观看免费| 精品国产乱码久久久久久蜜坠欲下 | 国产黄大片在线观看| 亚洲精品视频播放| 最好看的日本字幕mv视频大全 | 色婷婷综合久色| 亚洲女同二女同志奶水| 国产高清一区日本| 色综合久久久久无码专区| 伊人久久大香线蕉综合网蜜芽 | 韩国三级成人在线| 久久理论片午夜琪琪电影网| 美丽的姑娘在线观看免费动漫| 日韩一区二区三| 国产精品xxxx喷水欧美| 国产欧美一区二区在线| 午夜性福利视频| 国产精品久久777777毛茸茸| 免费av在线一区二区| 日本在线一区二区三区| 91av成人在线| 国产乱色在线观看| 精品偷拍一区二区三区在线看| 中文字幕在线观看你懂的| 亚洲成人在线观看视频| 老司机精品免费视频| 99国内精品久久| 毛片毛片毛片毛| 免费欧美在线| 国产 日韩 欧美在线| 欧美日韩中文一区二区| 粉嫩av一区二区三区免费观看| 成人看片网页| 久久免费视频在线| 成人网视频在线观看| 日韩精品视频在线免费观看| 999精品国产| 色老汉一区二区三区| 欧美久久久久久久久久久久| 国产亚洲精品超碰| 性久久久久久久久久| 粉嫩高潮美女一区二区三区| 国产又大又黄又粗又爽| 亚洲一区亚洲| 99国产精品白浆在线观看免费| 午夜精品一区二区三区国产| 久久www免费人成精品| 一区二区免费| 成人精品一区二区三区电影黑人| 欧洲一级精品| 欧美综合在线观看| 免费电影视频在线看| 久久九九热免费视频| 国产福利小视频在线| 亚洲男人天堂古典| 可以免费看污视频的网站在线| 亚洲国产成人一区| 亚洲爱情岛论坛永久| 91精品国产色综合久久ai换脸 | 国产呦小j女精品视频| 99在线精品视频| 亚洲成人精品在线播放| 九色porny丨国产精品| 欧美男女交配视频| 麻豆九一精品爱看视频在线观看免费| 成人小视频在线看| 欧美亚洲一区| 日本一道本久久| 亚洲人成人一区二区三区| 成人在线播放网址| 亚洲精品美女| 18岁网站在线观看| 亚洲一区国产| 激情网站五月天| 麻豆国产欧美一区二区三区| 欧美日韩在线成人| 日韩制服丝袜先锋影音| 黄在线观看网站| 丝袜脚交一区二区| 久久99999| 毛片av一区二区| 手机av在线免费| 国产精品亚洲第一| 日韩高清一二三区| 成人午夜激情视频| av网站免费在线看| 亚洲国产精品精华液2区45| 人成免费在线视频| |精品福利一区二区三区| 精品少妇一区二区三区密爱| 尤物视频一区二区| 国产成人无码精品亚洲| 欧美性少妇18aaaa视频| 无码人妻av一区二区三区波多野| 欧美无人高清视频在线观看| 一起草av在线| 日韩精品一区二区三区在线 | 色噜噜狠狠成人中文综合| 真实新婚偷拍xxxxx| 91精品免费在线观看| 亚洲精华国产精华精华液网站| 亚洲福利视频二区| 婷婷免费在线视频| 欧美高清在线播放| 亚洲欧美小说色综合小说一区| 国产99久久久欧美黑人| 国产成人免费9x9x人网站视频 | 久久99亚洲热视| 久久男人天堂| 国产美女高潮久久白浆| 丝袜久久网站| 夜夜爽99久久国产综合精品女不卡 | 中文字幕一区二区三区人妻电影| 中文字幕中文在线不卡住| 五月婷婷一区二区| 色婷婷综合久色| 国产成人三级一区二区在线观看一 | 在线播放精品一区二区三区| freemovies性欧美| 久久全国免费视频| 欧美国产日韩电影| 国产91亚洲精品一区二区三区| 少妇精品久久久一区二区| 亚洲一卡二卡区| 一区二区日韩免费看| 在线视频观看一区二区| 波波电影院一区二区三区| 中文字幕在线观看免费高清| 欧美日韩国产综合新一区| 亚洲综合精品视频| 日韩电影中文字幕在线观看| 日本a在线播放| 81精品国产乱码久久久久久| 97久久精品| 一区二区三区国产福利| 亚欧美中日韩视频| 少妇性l交大片7724com| 一区二区中文视频| 人妻 日韩精品 中文字幕| 日韩无一区二区| 日本在线视频网| 国产精品自产拍在线观看| 日本欧美韩国国产| 男人的天堂avav| 国产在线看一区| 黑人巨大精品欧美| 欧美日韩人人澡狠狠躁视频| 国产精品无码天天爽视频| 在线视频中文亚洲| 男人皇宫亚洲男人2020| 久久精品国产第一区二区三区最新章节| 91精品啪在线观看国产18| www.天天射.com| 91丨porny丨国产| 欧美激情亚洲综合| 精品日韩av一区二区| av官网在线播放| 91精品免费久久久久久久久| 久久亚洲黄色| 欧美亚洲一二三区| 99久久国产综合色|国产精品| 色在线观看视频| 日韩一级二级三级精品视频| 人人澡人人添人人爽一区二区| 91在线视频免费| 91国语精品自产拍| 伊人国产精品视频| 一区二区三区久久| 国产福利第一页| 欧美尺度大的性做爰视频| 免费看日产一区二区三区| 人妻av无码专区| 99综合电影在线视频| 日本一区二区欧美| 亚洲精品mp4| 国产福利91精品一区二区| 亚洲不卡1区| 亚洲永久在线| 一区二区三区伦理片| 91.成人天堂一区| av激情在线| 国产亚洲自拍偷拍| 在线播放亚洲| 中文字幕人妻一区二区三区在线视频 | 日本精品二区| 麻豆成人综合网| www欧美com| 亚洲精品在线电影| 97人人做人人爽香蕉精品| 亚洲一区二区在线免费观看| 精品一区二区三区av| 国产福利在线导航| 亚洲精品一区在线观看| 中文字幕资源网在线观看免费| 免费成人看片网址| 老司机精品视频网站| xxxx日本少妇| 亚洲国产成人久久综合| 欧美va视频| 日本福利视频网站| 91色乱码一区二区三区| 在线视频 91| 欧美激情在线播放| 欧美亚洲激情|