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

如何保證MySQL和Redis的數據一致性?十張圖帶你搞定!

新聞 數據庫運維 Redis
本文的主要思路是首先帶大家認識了解MySQL和Redis的數據一致性情況,然后進行反推不一致的情況,從而進行探究單線程中的不一致的情況。

本文的主要思路是首先帶大家認識了解MySQL和Redis的數據一致性情況,然后進行反推不一致的情況,從而進行探究單線程中的不一致的情況。同時探究多線程中的不一致的情況,擬定數據一致性策略。

一、什么是數據的一致性

“數據一致”一般指的是: 緩存中有數據,緩存的數據值=數據庫中的值。 但根據緩存中是有數據為依據,則“一致”可以包含兩種情況:

  • 緩存中有數據,緩存的數據值=數據庫中的值

  • 緩存中本沒有數據,數據庫中的值=最新值(有請求查詢數據庫時,會將數據寫入緩存,則變為上面的“一致”狀態)

“數據不一致”:緩存的數據值≠數據庫中的值;緩存或者數據庫中存在舊值,導致其他線程讀到舊數據。

二、數據不一致性情況及應對策略

根據是否接收寫請求,可以把緩存分成讀寫緩存和只讀緩存。

只讀緩存:只在緩存進行數據查找,即使用“更新數據庫+刪除緩存”策略。

讀寫緩存:需要在緩存中對數據進行增刪改查,即使用“更新數據庫+更新緩存”策略。

(一)針對只讀緩存(更新數據庫+刪除緩存)

只讀緩存:新增數據時,直接寫入數據庫;更新(修改/刪除)數據時,先刪除緩存。后續訪問這些增刪改的數據時,會發生緩存缺失,進而查詢數據庫,更新緩存。

  • 新增數據時  ,寫入數據庫;訪問數據時,緩存缺失,查數據庫,更新緩存(始終是處于“數據一致”的狀態,不會發生數據不一致性問題)

  • 更新(修改/刪除)數據時 ,會有個時序問題:更新數據庫與刪除緩存的順序(這個過程會發生數據不一致性問題)

在更新數據的過程中,可能會有如下問題:

  • 無并發請求下,其中一個操作失敗的情況。

  • 并發請求下,其他線程可能會讀到舊值

因此,要想達到數據一致性,需要保證兩點:

  • 無并發請求下,保證A和B步驟都能成功執行。

  • 并發請求下,在A和B步驟的間隔中,避免或消除其他線程的影響。

接下來,我們針對有/無并發場景,進行分析并使用不同的策略。

  • 無并發情況

無并發請求下,在更新數據庫和刪除緩存值的過程中,因為操作被拆分成兩步,那么就很有可能存在“步驟1成功,步驟2失敗” 的情況發生(由于單線程中步驟1和步驟2是串行執行的,不太可能會發生 “步驟2成功,步驟1失敗” 的情況)。

(1) 先刪除緩存,再更新數據庫

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

解決策略:

a. 消息隊列+異步重試

無論使用哪一種執行時序,可以在執行步驟1時,將步驟2的請求寫入消息隊列,當步驟2失敗時,就可以使用重試策略,對失敗操作進行“補償”。

具體步驟如下:

  • 把要刪除的緩存值或者是要更新的數據庫值暫存到消息隊列中(例如使用Kafka消息隊列)

  • 當刪除緩存值或者是更新數據庫值成功時,把這些值從消息隊列中去除,以免重復操作。

  • 當刪除緩存值或者是更新數據庫值失敗時,執行失敗策略,重試服務從消息隊列中重新讀取這些值,然后再次進行刪除或更新。

  • 刪除或者更新失敗時,需要再次進行重試,重試超過的一定次數。向業務層發送報錯信息。

b. 訂閱Binlog變更日志

  • 創建更新緩存服務,接收數據變更的MQ消息,然后消費消息,更新/刪除Redis中的緩存數據。

  • 使用Binlog實時更新/刪除Redis緩存。利用Canal,即將負責更新緩存的服務偽裝成一個MySQL的從節點,從MySQL接收Binlog,解析Binlog之后,得到實時的數據變更信息,然后根據變更信息去更新/刪除Redis緩存。

  • MQ+Canal策略,將Canal Server接收到的Binlog數據直接投遞到MQ進行解耦,使用MQ異步消費Binlog日志,以此進行數據同步。

不管用MQ/Canal或者MQ+Canal的策略來異步更新緩存,對整個更新服務的數據可靠性和實時性要求都比較高,如果產生數據丟失或者更新延時情況,會造成MySQL和Redis中的數據不一致。因此,使用這種策略時,需要考慮出現不同步問題時的降級或補償方案。

  • 高并發情況

使用以上策略后,可以保證在單線程/無并發場景下的數據一致性。但是,在高并發場景下,由于數據庫層面的讀寫并發,會引發的數據庫與緩存數據不一致的問題(本質是后發生的讀請求先返回了)

(1) 先刪除緩存,再更新數據庫

假設線程A刪除緩存值后,由于網絡延遲等原因導致未及更新數據庫,而此時,線程B開始讀取數據時會發現緩存缺失,進而去查詢數據庫。而當線程B從數據庫讀取完數據、更新了緩存后,線程A才開始更新數據庫,此時,會導致緩存中的數據是舊值,而數據庫中的是最新值,產生“數據不一致”。其本質就是,本應后發生的“B線程-讀請求”先于“A線程-寫請求”執行并返回了。

或者

解決策略:

設置緩存過期時間+延時雙刪

通過設置緩存過期時間,若發生上述淘汰緩存失敗的情況,則在緩存過期后,讀請求仍然可以從DB中讀取最新數據并更新緩存,可減小數據不一致的影響范圍。雖然在一定時間范圍內數據有差異,但可以保證數據的最終一致性。

此外,還可以通過延時雙刪進行保障:在線程A更新完數據庫值以后,讓它先sleep一小段時間,確保線程B能夠先從數據庫讀取數據,再把缺失的數據寫入緩存,然后,線程A再進行刪除。后續其它線程讀取數據時,發現緩存缺失,會從數據庫中讀取最新值。

  1. redis.delKey(X) 
  2. db.update(X) 
  3. Thread.sleep(N) 
  4. redis.delKey(X) 

sleep時間:在業務程序運行的時候,統計下線程讀數據和寫緩存的操作時間,以此為基礎來進行估算。

注意:如果難以接受sleep這種寫法,可以使用延時隊列進行替代。

先刪除緩存值再更新數據庫,有可能導致請求因緩存缺失而訪問數據庫,給數據庫帶來壓力,也就是緩存穿透的問題。針對緩存穿透問題,可以用緩存空結果、布隆過濾器進行解決。

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

如果線程A更新了數據庫中的值,但還沒來得及刪除緩存值,線程B就開始讀取數據了,那么此時,線程B查詢緩存時,發現緩存命中,就會直接從緩存中讀取舊值。其本質也是,本應后發生的“B線程-讀請求”先于“A線程-刪除緩存”執行并返回了。

或者,在“先更新數據庫,再刪除緩存”方案下,“讀寫分離+主從庫延遲”也會導致不一致:

解決方案:

a. 延遲消息

憑借經驗發送「延遲消息」到隊列中,延遲刪除緩存,同時也要控制主從庫延遲,盡可能降低不一致發生的概率。

b. 訂閱binlog,異步刪除

通過數據庫的binlog來異步淘汰key,利用工具(canal)將binlog日志采集發送到MQ中,然后通過ACK機制確認處理刪除緩存。

c. 刪除消息寫入數據庫

通過比對數據庫中的數據,進行刪除確認 先更新數據庫再刪除緩存,有可能導致請求因緩存缺失而訪問數據庫,給數據庫帶來壓力,也就是緩存穿透的問題。針對緩存穿透問題,可以用緩存空結果、布隆過濾器進行解決。

d. 加鎖

更新數據時,加寫鎖;查詢數據時,加讀鎖。

建議:

優先使用“先更新數據庫再刪除緩存”的執行時序,原因主要有兩個:

  • 先刪除緩存值再更新數據庫,有可能導致請求因緩存缺失而訪問數據庫,給數據庫帶來壓力。

  • 業務應用中讀取數據庫和寫緩存的時間有時不好估算,進而導致延遲雙刪中的sleep時間不好設置。

(二)針對讀寫緩存(更新數據庫+更新緩存)

讀寫緩存 :增刪改在緩存中進行,并采取相應的回寫策略,同步數據到數據庫中。

同步直寫 :使用事務,保證緩存和數據更新的原子性,并進行失敗重試(如果Redis本身出現故障,會降低服務的性能和可用性)

異步回寫 :寫緩存時不同步寫數據庫,等到數據從緩存中淘汰時,再寫回數據庫(沒寫回數據庫前,緩存發生故障,會造成數據丟失)

該策略在秒殺場中有見到過,業務層直接對緩存中的秒殺商品庫存信息進行操作,一段時間后再回寫數據庫。

一致性 :同步直寫>異步回寫,因此,對于讀寫緩存,要保持數據強一致性的主要思路是:利用同步直寫,同步直寫也存在兩個操作的時序問題:更新數據庫和更新緩存。

  • 無并發情況

  • 高并發情況

有四種場景會造成數據不一致:

針對場景1和2的解決方案是:保存請求對緩存的讀取記錄,延時消息比較,發現不一致后,做業務補償 針對場景3和4的解決方案是:對于寫請求,需要配合分布式鎖使用。寫請求進來時,針對同一個資源的修改操作,先加分布式鎖,保證同一時間只有一個線程去更新數據庫和緩存;沒有拿到鎖的線程把操作放入到隊列中,延時處理。用這種方式保證多個線程操作同一資源的順序性,以此保證一致性。

其中,分布式鎖的實現可以使用以下策略:

(三)強一致性策略

上述策略只能保證數據的最終一致性。要想做到強一致,最常見的方案是2PC、3PC、Paxos、Raft這類一致性協議,但它們的性能往往比較差,而且這些方案也比較復雜,還要考慮各種容錯問題。如果業務層要求必須讀取數據的強一致性,可以采取以下策略:

  • 暫存并發 讀請求

在更新數據庫時,先在Redis緩存客戶端暫存并發讀請求,等數據庫更新完、緩存值刪除后,再讀取數據,從而保證數據一致性。

  • 串行化

讀寫請求入隊列,工作線程從隊列中取任務來依次執行

  • 修改服務Service連接池,id取模選取服務連接,能夠保證同一個數據的讀寫都落在同一個后端服務上。

  • 修改數據庫DB連接池,id取模選取DB連接,能夠保證同一個數據的讀寫在數據庫層面是串行的。

  • 使用Redis分布式讀寫鎖

將淘汰緩存與更新庫表放入同一把寫鎖中,與其它讀請求互斥,防止其間產生舊數據。讀寫互斥、寫寫互斥、讀讀共享,可滿足讀多寫少的場景數據一致,也保證了并發性。并根據邏輯平均運行時間、響應超時時間來確定過期時間。

  1. public void write() { 
  2.     Lock writeLock = redis.getWriteLock(lockKey); 
  3.     writeLock.lock(); 
  4.     try { 
  5.         redis.delete(key); 
  6.         db.update(record); 
  7.     } finally { 
  8.         writeLock.unlock(); 
  9.     } 
  10.  
  11.  
  12. public void read() { 
  13.     if (caching) { 
  14.         return
  15.     } 
  16.     // no cache 
  17.     Lock readLock = redis.getReadLock(lockKey); 
  18.     readLock.lock(); 
  19.     try { 
  20.         record = db.get(); 
  21.     } finally { 
  22.         readLock.unlock(); 
  23.     } 
  24.     redis.set(key, record); 

(四)小結

針對讀寫緩存時:同步直寫,更新數據庫+更新緩存

針對只讀緩存時:更新數據庫+刪除緩存

較為通用的一致性策略擬定:

在并發場景下,使用“更新數據庫+更新緩存”需要用分布式鎖保證緩存和數據一致性,且可能存在“緩存資源浪費”和“機器性能浪費”的情況;一般推薦使用“更新數據庫+刪除緩存”的方案。如果根據需要,熱點數據較多,可以使用“更新數據庫+更新緩存”策略。

在“更新數據庫+刪除緩存”的方案中,推薦使用推薦用“先更新數據庫,再刪除緩存”策略,因為先刪除緩存可能會導致大量請求落到數據庫,而且延遲雙刪的時間很難評估。

在“先更新數據庫,再刪除緩存”策略中,可以使用“消息隊列+重試機制”的方案保證緩存的刪除。并通過“訂閱binlog”進行緩存比對,加上一層保障。

此外,需要通過初始化緩存預熱、多數據源觸發、延遲消息比對等策略進行輔助和補償。【多種數據更新觸發源:定時任務掃描,業務系統MQ、binlog變更MQ,相互之間作為互補來保證數據不會漏更新】

三、數據不一致性需注意其他問題

(一) k-v大小的合理設置

Redis key大小設計: 由于網絡的一次傳輸MTU最大為1500字節,所以為了保證高效的性能,建議單個k-v大小不超過1KB,一次網絡傳輸就能完成,避免多次網絡交互; k-v是越小性能越好

Redis熱key: 當業務遇到單個讀熱key,通過增加副本來提高讀能力或是用hashtag把key存多份在多個分片中。

當業務遇到單個寫熱key,需業務拆分這個key的功能,屬于設計不合理-當業務遇到熱分片,即多個熱key在同一個分片上導致單分片cpu高,可通過hashtag方式打散。

(二)避免其他問題導致緩存服務器崩潰,進而簡直導致數據一致性策略失效緩存穿透、緩存擊穿、緩存雪崩、機器故障等問題

(三)方案選定的思路

  • 確定緩存類型(讀寫/只讀)

  • 確定一致性級別

  • 確定同步/異步方式

  • 選定緩存流程

  • 補充細節

參考資料:

1. Redis與MySQL雙寫一致性如何保證

2. 干貨|攜程最終一致和強一致性緩存實踐

3.大廠都是怎么做 MySQL to  Redis同步的

4. 緩存與數據庫一致性策略

5. 緩存與數據庫一 致性保證

6.如何解決緩存和數據庫的數據不一致問題

7. Redis經典問題,緩存(穿透,雪崩,擊穿,數據不一致,數據并發競爭,HotKey,BigKey),分布式鎖(watch樂觀鎖,setnx,Redisson)

8. Redisson分 布式鎖場景和使用

 

 

責任編輯:張燕妮 來源: 云加社區
相關推薦

2023-05-26 07:34:50

RedisMySQL緩存

2021-12-14 07:15:57

MySQLRedis數據

2025-03-27 08:20:54

2024-08-20 16:13:52

2022-02-17 21:04:27

數據庫MysqlRedis

2024-12-26 15:01:29

2022-09-15 10:37:46

MySQLRedis數據一致性

2023-09-07 08:11:24

Redis管道機制

2024-01-22 08:52:00

AQS雙異步數據一致性

2024-07-04 12:36:50

2023-09-24 14:35:43

Redis數據庫

2021-11-12 08:38:26

一致性哈希算法數據結構

2023-09-15 14:24:54

ByteHouseClickHouse開源

2025-04-27 08:52:21

Redis數據庫緩存

2018-08-14 10:39:04

數據錯誤DIX

2023-06-29 08:00:59

redis數據MySQL

2022-08-23 07:46:45

數據一致性數據庫

2019-08-30 12:46:10

并發扣款查詢SQL

2022-12-05 08:24:32

mongodb數據庫數據

2022-10-19 12:22:53

并發扣款一致性
點贊
收藏

51CTO技術棧公眾號

欧美精品videosex极品1| 国产99re66在线视频| 精品三级在线| 国产精品最新自拍| 日韩视频免费观看高清完整版在线观看| 久久视频在线观看中文字幕| 青娱乐国产在线视频| 国产资源在线播放| 99在线|亚洲一区二区| 欧美一级一区二区| 亚洲免费视频播放| 伊人免费在线观看高清版| 九九视频精品全部免费播放| 午夜欧美大尺度福利影院在线看| 亚洲一区美女视频在线观看免费| 夫妇露脸对白88av| 精品欧美日韩精品| 国产日韩欧美高清在线| 国产91久久婷婷一区二区| 日本黄色网址大全| 国产精品专区免费| 国产日韩综合av| 成人在线观看91| 色播视频在线播放| 综合国产视频| 在线观看欧美黄色| 亚洲精品国产精品国自产| 中文字幕久久网| 亚洲美女网站| 欧美黑人xxxⅹ高潮交| 一二三区视频在线观看| 爱情岛亚洲播放路线| 国产精品国产a| 91午夜在线播放| 免费人成年激情视频在线观看| 激情五月综合| 91精品国产综合久久久久久漫画 | 女仆av观看一区| 天天综合网 天天综合色| 精品伦精品一区二区三区视频| 奇米影视第四色777| 欧美88av| 亚洲毛片在线观看| 国产九九热视频| 成人免费看片| 99天天综合性| 国产精品jvid在线观看蜜臀| av最新在线观看| 2020最新国产精品| 日韩欧美福利视频| 伊人久久青草| 蜜臀av午夜精品| 日韩国产精品大片| 美女av一区二区三区 | 欧美成人午夜影院| 久久国产一级片| 欧美日韩网站| 亚洲欧美一区二区精品久久久| 人妻激情偷乱频一区二区三区| 最新日韩精品| 色婷婷久久久综合中文字幕 | 亚洲中国色老太| 97成人在线观看| 亚洲伦伦在线| www.欧美免费| 51调教丨国产调教视频| 全球中文成人在线| 精品国产91久久久| 高清在线观看免费| sm国产在线调教视频| 综合精品久久久| 免费影院在线观看一区| 国产毛片久久久久| 视频一区二区国产| 久久噜噜噜精品国产亚洲综合 | 国产精品一区二区三区在线免费观看| 亚洲第一黄色| 久久精品视频在线| 偷拍夫妻性生活| 成人涩涩网站| 日韩一区二区三区免费看 | 成人午夜免费在线| 国产成人在线视频免费观看| 亚洲精品乱码久久久久久日本蜜臀| 欧美精品在线一区| 欧美性受xxxx狂喷水| 91麻豆国产福利在线观看| 国产传媒欧美日韩| 狠狠狠综合7777久夜色撩人| 国产精品卡一卡二卡三| 欧美亚洲爱爱另类综合| 幼a在线观看| 中文乱码免费一区二区| 欧美日韩成人一区二区三区 | 中文字幕不卡在线播放| 日韩精品久久一区二区| 秋霞午夜理伦电影在线观看| 国产亚洲一区二区三区在线观看| 中文精品一区二区三区| 国产不卡人人| 午夜在线成人av| 亚洲xxxx2d动漫1| 另类图片综合电影| 91精品欧美久久久久久动漫| 亚洲中文字幕一区| 欧美日韩精品一区二区三区在线观看| 中文字幕免费国产精品| 人妻精品久久久久中文| 国产中文精品久高清在线不| 欧美大胆在线视频| 中文精品久久久久人妻不卡| 日韩精品1区2区3区| 成人免费视频网站入口| 91激情在线| 国产精品久久久久久久久免费桃花 | 偷拍一区二区三区| 中日韩av在线播放| 视频欧美精品| 亚洲香蕉伊综合在人在线视看| 69精品无码成人久久久久久| 精品动漫3d一区二区三区免费版 | 夜夜爽妓女8888视频免费观看| 国产视频一区免费看| 亚洲综合自拍一区| 日本在线观看| 在线观看国产精品网站| 中文在线一区二区三区| 激情自拍一区| 91情侣在线视频| 熟妇人妻一区二区三区四区| 99re视频精品| 日本免费高清一区| 久久bbxx| 欧美日韩国产精品| 色婷婷综合久久久久中文字幕| 日韩电影免费观| 欧美人狂配大交3d怪物一区| 中文字幕久久久久久久| 香蕉视频一区| 日韩有码视频在线| 中文字幕在线观看高清| 国产欧美一区二区精品仙草咪| 亚洲人久久久| 1024在线看片你懂得| 色噜噜狠狠一区二区三区果冻| 在线观看免费黄网站| 九九热线有精品视频99| 奇门遁甲1982国语版免费观看高清 | 国产精品专区一| 午夜精品在线播放| 91网站最新网址| 97成人在线免费视频| 日本另类视频| 国产一区二区三区视频免费| 成人av网站在线播放| 国产激情91久久精品导航 | 青青草97国产精品麻豆| 免费97视频在线精品国自产拍| 亚洲一卡二卡在线| av不卡免费在线观看| 乱人伦xxxx国语对白| 久久99精品国产自在现线| 在线不卡国产精品| 日本少妇做爰全过程毛片| 蜜桃视频一区二区| 精品视频免费观看| 在线观看的黄色| 日韩一区二区不卡| 久久免费视频精品| 日韩av网站在线观看| 成人免费视频视频在| 华人av在线| 亚洲天堂免费在线| 中文字幕av影视| 亚洲欧美日韩综合aⅴ视频| 任你操这里只有精品| 日韩一级淫片| 久久夜色精品国产| 97人妻精品视频一区| 成人免费在线视频观看| 任你躁av一区二区三区| 91成人影院| 国产精品久久久久久影视| 亚洲av成人无码网天堂| 一区二区三区欧美| 看看黄色一级片| 欧美自拍偷拍| 亚洲精品欧美日韩专区| 国内激情视频在线观看| 色系列之999| 波多野结衣mp4| 亚洲天堂免费在线观看视频| 色哟哟无码精品一区二区三区| 日韩电影免费在线看| 亚洲色婷婷久久精品av蜜桃| 欧美人妖在线| 91麻豆国产语对白在线观看| 成av人片在线观看www| 日韩中文字幕视频| 香蕉视频国产在线| 69堂精品视频| 男人天堂2024| 99re热这里只有精品免费视频| 亚洲一区二区三区四区五区xx| 伊人春色精品| 97人人模人人爽视频一区二区| 国产超碰精品| 国内外成人免费激情在线视频| av资源种子在线观看| 欧美在线你懂得| 久久精品免费av| 丁香婷婷综合五月| 国产69精品久久久久999小说| 青草国产精品| 欧美日韩免费高清| 国产精品高潮呻吟久久久久| 性亚洲最疯狂xxxx高清| 亚洲国产www| 午夜国产精品一区| 91麻豆精品成人一区二区| 国产在线观看免费一区| www.69av| 思热99re视热频这里只精品| 亚洲最大成人网色| 久久亚洲国产精品尤物| 日韩免费中文字幕| 波多野结衣亚洲一二三| 韩国日本不卡在线| 狂野欧美性猛交xxxxx视频| 欧美精品一区二区三区蜜臀| 精品人妻一区二区三区免费看| 亚洲综合色噜噜狠狠| 免费在线黄色网| 成人免费av资源| 91人妻一区二区三区| 夜久久久久久| 青青在线免费观看| 免费电影一区二区三区| 久久久久九九九| 秋霞影院一区二区三区| 好吊色欧美一区二区三区 | 免费在线欧美视频| 亚洲视频在线a| 日本成人在线电影网| 在线免费观看av的网站| 青青草国产精品亚洲专区无| 成人亚洲精品777777大片| 日本麻豆一区二区三区视频| 乌克兰美女av| 韩国欧美国产一区| 欧美激情 国产精品| 亚洲精品美女| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美电影《轻佻寡妇》| 国产综合精品一区二区三区| 国产一区二区色噜噜| 国产精品久久久久久中文字| 久久精品国产精品亚洲毛片| 成人av番号网| 成人黄色免费短视频| 国产成+人+综合+亚洲欧洲 | 国产熟女一区二区| 国产精品传媒视频| 精品爆乳一区二区三区无码av| 亚洲一区二区三区视频在线 | 亚洲AV无码国产精品午夜字幕| 欧美成人女星排行榜| 国产精品成人久久久| 欧美精品久久一区| 国产尤物在线视频| 亚洲精品老司机| 国产性一乱一性一伧一色| 欧美日韩国产一区中文午夜| aaa在线视频| 91麻豆精品91久久久久久清纯| 亚洲黄色a级片| 日韩精品视频免费| 精品久久久无码中文字幕| 亚洲成人黄色网| 国产乱子伦精品无码码专区| 欧美成人性战久久| 亚洲欧美日韩成人在线| 影音先锋日韩有码| 日韩精品分区| 久久精品久久久久| 国产乱码在线| 国产精品久久久久久久久久新婚 | 日日摸夜夜添夜夜添亚洲女人| 欧美成人福利在线观看| 懂色av一区二区三区免费看| 亚洲男人天堂2021| 精品亚洲欧美一区| 国产亚洲色婷婷久久99精品91| 国产精品素人一区二区| 国产在线观看你懂的| 欧美三级乱人伦电影| 在线免费一级片| 亚洲第一天堂av| 91精品大全| 欧美亚洲国产视频| 欧美xx视频| aa成人免费视频| caoporn成人| 亚洲图片小说在线| 日韩一级在线| 国产黑丝在线视频| 日本一区二区综合亚洲| 久久狠狠高潮亚洲精品| 91麻豆精品91久久久久久清纯 | 亚洲中文字幕久久精品无码喷水 | 3d精品h动漫啪啪一区二区| 禁断一区二区三区在线| 鲁一鲁一鲁一鲁一色| 国产精一品亚洲二区在线视频| 日本一本在线视频| 国产免费成人在线视频| 日韩欧美成人一区二区三区| 一本色道久久综合亚洲精品按摩| 国产ts人妖调教重口男| 日韩精品一区在线| 无码精品一区二区三区在线 | 欧美综合激情| 99热免费精品| 日本人添下边视频免费| 亚洲精品videosex极品| 国产一区二区三区四区视频| 一区二区欧美激情| 中文在线аv在线| 国内精品久久国产| 亚洲视频综合| 无码人妻少妇伦在线电影| 国内精品视频一区二区三区八戒| 女人黄色一级片| 欧美在线三级电影| 1024国产在线| 国产又爽又黄的激情精品视频| 国产免费区一区二区三视频免费| 国产成人亚洲欧美| 亚洲天堂黄色| 99久久久无码国产精品性波多 | 99riav久久精品riav| 日韩熟女精品一区二区三区| 亚洲精品456在线播放狼人| 国产青青草在线| 欧美精品在线观看| 亚洲国产天堂| 伊人av成人| 国产中文字幕精品| 久久成人国产精品入口| 精品少妇一区二区三区免费观看| 欧美aaa免费| 国产综合18久久久久久| 亚洲尤物精选| 色欲无码人妻久久精品| 亚洲精品国产a| 亚洲国产精品欧美久久 | 中文字幕在线中文字幕日亚韩一区| 人人超碰91尤物精品国产| 亚洲精品国产精品乱码在线观看| 亚洲一区免费视频| 日韩一级片免费看| 国产成人精品a视频一区www| 日韩一级毛片| 50路60路老熟妇啪啪| 欧美韩国日本一区| 国产精品亚洲欧美在线播放| 欧美大胆在线视频| 欧美福利在线播放网址导航| 999精品视频在线| 亚洲人被黑人高潮完整版| 丰满人妻av一区二区三区| 色综合亚洲精品激情狠狠| 91精品国产色综合久久不卡粉嫩| 欧美高清视频一区二区三区在线观看| 噜噜爱69成人精品| 99精品一区二区三区无码吞精 | 欧美国产在线电影| 亚洲亚洲免费| 一本一道久久a久久综合蜜桃| 亚洲午夜av在线| 成人免费在线观看| 亚洲xxx大片| 久久久久久夜| 欧美日韩人妻精品一区二区三区| 欧美视频在线一区| 男人av在线| 欧美整片在线观看| 99久久精品网站| 色播五月激情五月| 亚洲午夜久久久久久久久电影网 | 麻豆成人在线看| 羞羞色国产精品网站| 色网站在线视频| 欧美日韩免费在线| h网站久久久| 青青草原亚洲| 成人一区二区三区| 亚洲熟女乱色一区二区三区久久久| 国语自产精品视频在线看一大j8| 日本一区二区高清不卡|