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

緩存穿透、緩存并發、熱點緩存之最佳招式

移動開發
我們在項目中使用緩存通常都是先檢查緩存中是否存在,如果存在直接返回緩存內容,如果不存在就直接查詢數據庫然后再緩存查詢結果返回。這個時候如果我們查詢的某一個數據在緩存中一直不存在,就會造成每一次請求都查詢DB,這樣緩存就失去了意義,在流量大時,可能DB就掛掉了。

一、前言

我們在用緩存的時候,不管是Redis或者Memcached,基本上會通用遇到以下三個問題:

  • 緩存穿透
  • 緩存并發
  • 緩存失效
  • 緩存穿透 
img
img

img

注:

上面三個圖會有什么問題呢?

我們在項目中使用緩存通常都是先檢查緩存中是否存在,如果存在直接返回緩存內容,如果不存在就直接查詢數據庫然后再緩存查詢結果返回。這個時候如果我們查詢的某一個數據在緩存中一直不存在,就會造成每一次請求都查詢DB,這樣緩存就失去了意義,在流量大時,可能DB就掛掉了。

那這種問題有什么好辦法解決呢?

要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。

有一個比較巧妙的作法是,可以將這個不存在的key預先設定一個值。

比如,”key” , “&&”。

在返回這個&&值的時候,我們的應用就可以認為這是不存在的key,那我們的應用就可以決定是否繼續等待繼續訪問,還是放棄掉這次操作。如果繼續等待訪問,過一個時間輪詢點后,再次請求這個key,如果取到的值不再是&&,則可以認為這時候key有值了,從而避免了透傳到數據庫,從而把大量的類似請求擋在了緩存之中。

緩存并發

有時候如果網站并發訪問高,一個緩存如果失效,可能出現多個進程同時查詢DB,同時設置緩存的情況,如果并發確實很大,這也可能造成DB壓力過大,還有緩存頻繁更新的問題。

我現在的想法是對緩存查詢加鎖,如果KEY不存在,就加鎖,然后查DB入緩存,然后解鎖;其他進程如果發現有鎖就等待,然后等解鎖后返回數據或者進入DB查詢。

這種情況和剛才說的預先設定值問題有些類似,只不過利用鎖的方式,會造成部分請求等待。

緩存失效

引起這個問題的主要原因還是高并發的時候,平時我們設定一個緩存的過期時間時,可能有一些會設置1分鐘啊,5分鐘這些,并發很高時可能會出在某一個時間同時生成了很多的緩存,并且過期時間都一樣,這個時候就可能引發一當過期時間到后,這些緩存同時失效,請求全部轉發到DB,DB可能會壓力過重。

那如何解決這些問題呢?

其中的一個簡單方案就時講緩存失效時間分散開,比如我們可以在原有的失效時間基礎上增加一個隨機值,比如1-5分鐘隨機,這樣每一個緩存的過期時間的重復率就會降低,就很難引發集體失效的事件。

我們討論的第二個問題時針對同一個緩存,第三個問題時針對很多緩存。

總結來看:

  • 緩存穿透:查詢一個必然不存在的數據。比如文章表,查詢一個不存在的id,每次都會訪問DB,如果有人惡意破壞,很可能直接對DB造成影響。
  • 緩存失效:如果緩存集中在一段時間內失效,DB的壓力凸顯。這個沒有完美解決辦法,但可以分析用戶行為,盡量讓失效時間點均勻分布。

當發生大量的緩存穿透,例如對某個失效的緩存的大并發訪問就造成了緩存雪崩。

問題匯總

問題1:

如何解決DB和緩存一致性問題?

答:當修改了數據庫后,有沒有及時修改緩存。這種問題,以前有過實踐,修改數據庫成功,而修改緩存失敗的情況,最主要就是緩存服務器掛了。而因為網絡問題引起的沒有及時更新,可以通過重試機制來解決。而緩存服務器掛了,請求首先自然也就無法到達,從而直接訪問到數據庫。那么我們在修改數據庫后,無法修改緩存,這時候可以將這條數據放到數據庫中,同時啟動一個異步任務定時去檢測緩存服務器是否連接成功,一旦連接成功則從數據庫中按順序取出修改數據,依次進行緩存最新值的修改。

問題2:

問下緩存穿透那塊!例如,一個用戶查詢文章,通過ID查詢,按照之前說的,是將緩存的KEY預先設置一個值,,如果通過ID插過來,發現是預先設定的一個值,比如說是“&&”,那之后的繼續等待訪問是什么意思,這個ID什么時候會真正被附上用戶所需要的值呢?

答:我剛說的主要是咱們常用的后面配置,前臺獲取的場景。前臺無法獲取相應的key,則等待,或者放棄。當在后臺配置界面上配置了相關key和value之后,那么以前的key &&也自然會被替換掉。你說的那種情況,自然也應該會有一個進程會在某一個時刻,在緩存中設置這個ID,再有新的請求到達的時候,就會獲取到最新的ID和value。

問題3:

其實用redis的話,那天看到一個不錯的例子,雙key,有一個當時生成的一個附屬key來標識數據修改到期時間,然后快到的時候去重新加載數據,如果覺得key多可以把結束時間放到主key中,附屬key起到鎖的功能。

答:這種方案,之前我們實踐過。這種方案會產生雙份數據,而且需要同時控制附屬key與key之間的關系,操作上有一定復雜度。

問題4:

多級緩存是什么概念呢?

答:多級緩存就像我今天之前給大家發的文章里面提到了,將ehcache與redis做二級緩存,就像我之前寫的文章提到過的。但同樣會存在一致性問題,如果我們需要強一致性的話,緩存與數據庫同步是會存在時間差的,所以我們在具體開發的過程中,一定要根據場景來具體分析,二級緩存更多的解決是,緩存穿透與程序的健壯性,當集中式緩存出現問題的時候,我們的應用能夠繼續運行。

說明:本文中提到的緩存可以理解為Redis。

二、緩存穿透與并發方案

上文中介紹了關于緩存穿透、并發的一些常用思路,但是沒有明確一些思路的使用場景,下面繼續深入探討。相信不少朋友之前看過很多類似的文章,但是歸根結底就是二個問題:

  • 如何解決穿透
  • 如何解決并發

當并發較高的時候,其實我是不建議使用緩存過期這個策略的,我更希望緩存一直存在,通過后臺系統來更新緩存系統中的數據達到數據的一致性目的,有的朋友可能會質疑,如果緩存系統掛了怎么辦,這樣數據庫更新了但是緩存沒有更新,沒有達到一致性的狀態。

解決問題的思路是:

如果緩存是因為網絡問題沒有更新成功數據,那么建議重試幾次,如果依然沒有更新成功則認為緩存系統出錯不可用,這時候客戶端會將數據的KEY插入到消息系統中,消息系統可以過濾相同的KEY,只需保證消息系統不存在相同的KEY,當緩存系統恢復可用的時候,依次從mq中取出KEY值然后從數據庫中讀取最新的數據更新緩存。

注意:更新緩存之前,緩存中依然有舊數據,所以不會造成緩存穿透。

下圖展示了整個思路的過程: 

img

看完上面的方案以后,又會有不少朋友提出疑問,如果我是第一次使用緩存或者緩存中暫時沒有我需要的數據,那又該如何處理呢?

解決問題的思路:

在這種場景下,客戶端從緩存中根據KEY讀取數據,如果讀到了數據則流程結束,如果沒有讀到數據(可能會有多個并發都沒有讀到數據),這時候使用緩存系統中的setNX方法設置一個值(這種方法類似加個鎖),沒有設置成功的請求則sleep一段時間,設置成功的請求讀取數據庫獲取值,如果獲取到則更新緩存,流程結束,之前sleep的請求這時候喚醒后直接再從緩存中讀取數據,此時流程結束。

在看完這個流程后,我想這里面會有一個漏洞,如果數據庫中沒有我們需要的數據該怎么處理,如果不處理則請求會造成死循環,不斷的在緩存和數據庫中查詢,這時候我們會沿用我之前文章中的如果沒有讀到數據則往緩存中插入一個NULL字符串的思路,這樣其他請求直接就可以根據“NULL”進行處理,直到后臺系統在數據庫成功插入數據后同步更新清理NULL數據和更新緩存。

流程圖如下所示: 

img

總結:

在實際工作中,我們往往將上面二個方案組合使用才能達到最佳效果,雖然第二種方案也會造成請求阻塞,但是只是在第一次使用或者緩存暫時沒有數據的情況下才會產生,在生產中經過檢驗在TPS沒有上萬的情況下是不會造成問題的。

三、熱點緩存解決方案

1、緩存使用背景:

我們拿用戶中心的一個案例來說明:

每個用戶都會首先獲取自己的用戶信息,然后再進行其他相關的操作,有可能會有如下一些場景情況:

  • 會有大量相同用戶重復訪問該項目。
  • 會有同一用戶頻繁訪問同一模塊。

2、思路解析

因為用戶本身是不固定的而且用戶數量也有幾百萬尤其上千萬,我們不可能把所有的用戶信息全部緩存起來,通過第一個場景情況可以看到一些規律,那就是有大量的相同用戶重復訪問,但是究竟是哪些用戶重復訪問我們也并不知道。

如果有一個用戶頻繁刷新讀取項目,那么對數據庫本身也會造成較大壓力,當然我們也會有相關的保護機制來確實惡意攻擊,可以從前端控制,也可以有采黑名單等機制,這里不在贅述。如果用緩存的話,我們又該如何控制同一用戶繁重讀取用戶信息呢。

請看下圖: 

img

我們會通過緩存系統做一個排序隊列,比如1000個用戶,系統會根據用戶的訪問時間更新用戶信息的時間,越是最近訪問的用戶排名越排前,系統會定期過濾掉排名最后的200個用戶,然后再從數據庫中隨機取出200個用戶加入隊列,這樣請求每次到達的時候,會先從隊列中獲取用戶信息,如果命中則根據userId,再從另一個緩存數據結構中讀取用戶信息,如果沒有命中則說明該用戶請求頻率不高。JAVA偽代碼如下所示:

  1. for (int i = 0; i < times; i++) { 
  2.      user = new ExternalUser(); 
  3.      user.setId(i+""); 
  4.      user.setUpdateTime(new Date(System.currentTimeMillis())); 
  5.      CacheUtil.zadd(sortKey, user.getUpdateTime().getTime(), user.getId()); 
  6.      CacheUtil.putAndThrowError(userKey+user.getId(), JSON.toJSONString(user)); 
  7.  } 
  8.   
  9.  Set<String> userSet = CacheUtil.zrange(sortKey, 0, -1); 
  10.  System.out.println("[sortedSet] - " + JSON.toJSONString(userSet) ); 
  11.  if(userSet == null || userSet.size() == 0) 
  12.      return
  13.   
  14.  Set<Tuple> userSetS = CacheUtil.zrangeWithScores(sortKey, 0, -1); 
  15.  StringBuffer sb = new StringBuffer(); 
  16.  for(Tuple t:userSetS){ 
  17.      sb.append("{member: ").append(t.getElement()).append(", score: ").append(t.getScore()).append("}, "); 
  18.  } 
  19.   
  20.  System.out.println("[sortedcollect] - " + sb.toString().substring(0, sb.length() - 2)); 
  21.   
  22.  Set<String> members = new HashSet<String>(); 
  23.  for(String uid:userSet){ 
  24.      String key = userKey + uid; 
  25.      members.add(uid); 
  26.      ExternalUser user2 = CacheUtil.getObject(key, ExternalUser.class); 
  27.      System.out.println("[user] - " + JSON.toJSONString(user2) ); 
  28.  } 
  29.  System.out.println("[user] - "  + System.currentTimeMillis()); 
  30.   
  31.  String[] keys = new String[members.size()]; 
  32.  members.toArray(keys); 
  33.   
  34.  Long rem = CacheUtil.zrem(sortKey, keys); 
  35.  System.out.println("[rem] - " + rem); 
  36.  userSet = CacheUtil.zrange(sortKey, 0, -1); 
  37.  System.out.println("[remove - sortedSet] - " + JSON.toJSONString(userSet)); 

 

 

責任編輯:未麗燕 來源: 程序猿DD
相關推薦

2019-10-12 14:19:05

Redis數據庫緩存

2023-03-10 13:33:00

緩存穿透緩存擊穿緩存雪崩

2019-11-05 14:24:31

緩存雪崩框架

2021-06-05 09:01:01

Redis緩存雪崩緩存穿透

2018-12-13 12:43:07

Redis緩存穿透

2022-03-08 00:07:51

緩存雪崩數據庫

2022-05-27 07:57:20

緩存穿透緩存雪崩緩存擊穿

2023-11-10 14:58:03

2025-06-30 01:55:00

2023-04-14 07:34:19

2024-03-12 10:44:42

2021-12-25 22:28:27

緩存穿透緩存擊穿緩存雪崩

2023-12-06 13:38:00

Redis緩存穿透緩存擊穿

2020-10-13 07:44:40

緩存雪崩 穿透

2020-03-16 14:57:24

Redis面試雪崩

2022-07-11 07:36:36

緩存緩存雪崩緩存擊穿

2020-03-05 09:09:18

緩存原因方案

2020-12-28 12:37:36

緩存擊穿穿透

2023-05-15 10:03:00

Redis緩存穿透

2025-09-01 08:28:41

點贊
收藏

51CTO技術棧公眾號

999视频精品| av午夜在线观看| 精品亚洲porn| 欧美巨大黑人极品精男| 国产一卡二卡三卡四卡| 亚洲天堂资源| 亚洲欧美日韩一区二区三区在线观看| 不卡视频一区二区| 999视频在线| 欧美精品日本| 中文精品99久久国产香蕉| 黑人无套内谢中国美女| 欧美片第1页| 亚洲黄色小说网站| 亚洲第一在线综合在线| 免费观看国产视频| 激情综合网激情| 日本一区二区不卡| 青青草手机在线观看| 西瓜成人精品人成网站| 日韩一区二区三区免费观看| 男人操女人免费软件| 免费网站免费进入在线| 91美女片黄在线观看| 91沈先生作品| 凹凸精品一区二区三区| 亚洲国产高清一区| 欧美成aaa人片免费看| 日韩人妻无码精品综合区| 超碰在线亚洲| 91精品国产综合久久香蕉的特点| 青青在线视频观看| 国产va在线视频| 国产精品天天看| 欧美一区二区综合| 五月激情六月婷婷| 成人精品一区二区三区四区| 国产日韩精品在线| 国产情侣免费视频| 久久字幕精品一区| 欧洲亚洲免费视频| 日本熟妇色xxxxx日本免费看| 91精品国产调教在线观看| 中文字幕欧美日韩| av直播在线观看| 精品福利一区| 亚洲国产日韩欧美综合久久| xxxx视频在线观看| 亚洲不卡视频| 日韩欧美久久久| 亚洲丝袜在线观看| 视频精品国内| 日韩一区二区三区免费看 | sis001欧美| 欧美视频在线免费看| 日韩av高清在线看片| 黑人精品视频| 午夜精品免费在线观看| 国产免费黄色小视频| а√天堂资源官网在线资源| 亚洲午夜日本在线观看| 秋霞无码一区二区| 色综合桃花网| 在线国产亚洲欧美| 国模私拍视频在线观看| 综合欧美精品| 欧美大片在线观看一区二区| 欧美一级大片免费看| 一区二区三区亚洲变态调教大结局| 日韩精品一区二区在线观看| 黑森林av导航| 天天操综合520| 亚洲天堂av图片| 天堂av网手机版| 五月天综合网站| 欧美华人在线视频| 国产又大又粗又爽| 久久精品国产亚洲aⅴ| 91在线看www| 天天综合网在线观看| 国产99久久久国产精品潘金| 精品伦理一区二区三区| 美女毛片在线看| 日韩美女视频一区| 日韩视频免费播放| 黄色精品视频| 欧美成人三级电影在线| 在线免费观看日韩av| 99久久99久久精品国产片桃花| 欧美成人亚洲成人| 日本a级c片免费看三区| 日韩—二三区免费观看av| 亚洲a成v人在线观看| 五月婷婷丁香花| 国产日韩av一区| 日本wwwcom| 韩日精品一区| 亚洲第一色中文字幕| 九九热免费在线| 亚洲一本视频| 国产精品影院在线观看| 日本黄色三级视频| 中文字幕亚洲一区二区av在线| 精品人妻人人做人人爽| 国产精品高清乱码在线观看| 日韩欧美亚洲另类制服综合在线| 一区二区三区少妇| 欧美黄色一区| 国产久一一精品| 日韩美女一级视频| 亚洲精品五月天| 一区二区xxx| 日韩极品在线| 韩国视频一区二区| 成人av免费网站| 欧美精品123| 国产三区视频在线观看| 亚洲成av人片在www色猫咪| 香港日本韩国三级网站| 日韩一区免费| 中文日韩电影网站| 久久久久久久久久久久久av| 黑人巨大精品欧美黑白配亚洲| 久久99精品久久久久子伦| 久久77777| 欧美三区在线视频| 亚洲永久无码7777kkk| 亚洲天堂一区二区三区四区| 国产成人一区二区三区小说| 免费av一级片| 一区二区国产视频| 欧美午夜精品理论片| 国产在视频线精品视频www666| 久久久久国产一区二区三区| 91久久久久国产一区二区| 久久久久久久免费视频了| 成人免费毛片在线观看| 天堂va在线高清一区| 上原亚衣av一区二区三区| 久久99国产综合精品免费| 成+人+亚洲+综合天堂| 91精品一区二区三区四区| 久久夜夜久久| 自拍偷拍亚洲欧美| 国产一级精品毛片| 久久久精品国产免大香伊| 成人在线免费在线观看| 免费观看成人www动漫视频| 久久久久久国产免费| 午夜美女福利视频| 亚洲综合视频在线| 久久国产免费视频| 欧美网站在线| 国产精品日韩一区二区| 国产嫩草在线视频| 亚洲电影天堂av| 奇米影视第四色777| 成人高清视频在线观看| 91九色丨porny丨国产jk| 中文字幕区一区二区三| 久久久久久久av| 欧美一级免费片| 亚洲va欧美va人人爽| 六十路息与子猛烈交尾| 亚洲综合不卡| 欧美性大战久久久久| 全球最大av网站久久| 伊人男人综合视频网| 中文字幕一区二区人妻痴汉电车| 亚洲国产精品传媒在线观看| 国产免费又粗又猛又爽| 香蕉精品视频在线观看| 97碰碰视频| 大香伊人中文字幕精品| 精品视频一区在线视频| 免费黄色网址在线| 中文字幕欧美三区| 人妻精品久久久久中文字幕69| 国色天香一区二区| 蜜桃日韩视频| 欧美jizz18| 欧美国产日韩一区二区三区| 无码国产精品一区二区免费16| 日韩欧美999| 亚洲一级二级片| 粉嫩av一区二区三区| 国产xxxxx在线观看| 日韩1区在线| 99久久综合狠狠综合久久止 | 久久久欧美精品sm网站| 亚洲国产日韩欧美在线观看| 欧美激情一区| 久久精品ww人人做人人爽| 国产福利91精品一区二区| 欧美大码xxxx| 极品白浆推特女神在线观看| 91精品国产免费| 久久精品视频7| 亚洲另类春色国产| 色一情一交一乱一区二区三区| 国产麻豆91精品| 日韩黄色片视频| 欧美在线日韩| 视频一区二区三区在线观看| 一区二区三区自拍视频| 国产精品爽爽爽| 手机在线观看av网站| 久久精品国产亚洲7777| 日本一区高清| 精品国产伦一区二区三区观看方式| 91麻豆精品在线| 天天综合日日夜夜精品| 欧美激情图片小说| 欧美激情一区在线| 国产精品探花一区二区在线观看| 国产在线精品一区二区三区不卡| 久久久精品在线视频| 国产综合色产| 最新精品视频| 丰满熟妇人妻中文字幕| 一本久道中文字幕精品亚洲嫩| 国产成人在线综合| 久久大逼视频| 国产精品12345| 欧美在线黄色| 男女h黄动漫啪啪无遮挡软件| 91伊人久久| 欧美一区二区三区免费观看| 日韩三级免费| 久久国产精品久久久久久| 在线观看免费黄视频| 亚洲女人初尝黑人巨大| 天天操天天操天天| 精品成人a区在线观看| 国产一区二区在线播放视频| 色综合天天做天天爱| 男人的天堂一区二区| 亚洲一卡二卡三卡四卡| 欧美黄色一级网站| 一区二区三区四区高清精品免费观看| 久久久久人妻一区精品色| 国产日韩在线不卡| 亚洲国产av一区| 久久免费精品国产久精品久久久久| 国产极品一区二区| 丰满放荡岳乱妇91ww| 一本色道久久hezyo无码| 国产成人激情av| 色悠悠在线视频| 91视频国产资源| 四虎永久免费在线观看| 久久久久国产免费免费| 一级片手机在线观看| 国产网站一区二区| 在线观看免费小视频| 国产精品美女久久久久aⅴ | 中文字幕一区二区三区四区不卡| 亚洲午夜精品久久久久久高潮| 国产亚洲综合在线| 无码h肉动漫在线观看| 国产欧美一区二区精品性色| 日韩欧美黄色网址| 亚洲私人影院在线观看| 欧美成人综合色| 午夜欧美一区二区三区在线播放| 国产成人无码精品亚洲| 色综合色狠狠综合色| 成人毛片一区二区三区| 欧美日韩国产乱码电影| 亚洲AV无码精品国产| 亚洲高清不卡av| 久久久资源网| 久久久精品999| a在线视频v视频| 国产精品精品久久久久久| 久久爱.com| 国产精成人品localhost| 露出调教综合另类| 亚洲v国产v在线观看| 欧美国产日本| 精品视频一区二区在线| 免费的国产精品| 97精品人人妻人人| 中文字幕乱码久久午夜不卡| 欧美三级在线免费观看| 欧美午夜宅男影院在线观看| 亚洲一区 中文字幕| 精品国产91洋老外米糕| 成人av一区| 欧美精品videosex牲欧美| 精品欧美日韩精品| 99久久久久国产精品免费| 国产videos久久| 丁香色欲久久久久久综合网| 久久精品国语| 少妇极品熟妇人妻无码| 中文字幕的久久| 国产做受高潮漫动| 在线观看91精品国产麻豆| 天天干,夜夜操| 久久精品在线播放| 黑人巨大精品欧美一区二区桃花岛| 91欧美日韩一区| 欧美美女在线| 国产欧美日韩网站| 久久超碰97中文字幕| 三上悠亚ssⅰn939无码播放 | 日本一二三区视频| 欧美日韩国产电影| 国产在线资源| 91精品国产九九九久久久亚洲| 成人动漫视频在线观看| 日韩久久在线| 一本久道综合久久精品| 下面一进一出好爽视频| 国产精品久久久久9999吃药| 国产成人综合欧美精品久久| 日韩一区二区三区四区五区六区| 91se在线| 国产成人高清激情视频在线观看| 国产精品玖玖玖在线资源| 自拍偷拍视频在线| 日本午夜一区二区| 少妇毛片一区二区三区| 亚洲v日本v欧美v久久精品| www.国产麻豆| 久久视频在线播放| 欧美高清免费| 亚洲国产精品久久久久婷婷老年 | 色偷偷中文字幕| 国产精品电影一区二区| а中文在线天堂| 亚洲人成网站777色婷婷| 国产伦理精品| 国产精品久久国产精品| 国产一区久久| 国产精品日日摸夜夜爽| 夜夜揉揉日日人人青青一国产精品| 91麻豆成人精品国产免费网站| 中文字幕久热精品在线视频 | 91久久偷偷做嫩草影院| 亚洲精品国产成人影院| 五月天婷婷在线观看视频| 国产精品对白交换视频| 国产剧情精品在线| 美女扒开尿口让男人操亚洲视频网站| 91精品国产色综合久久不卡粉嫩| 一区二区三区四区五区精品 | 狠狠躁夜夜躁人人爽超碰91| 日韩一级中文字幕| 91爱爱小视频k| 九九久久电影| 丰满少妇在线观看| 国产精品理伦片| 91久久精品国产91性色69| 久久国产精品亚洲| 风间由美性色一区二区三区四区| 我的公把我弄高潮了视频| 97精品国产露脸对白| 免费又黄又爽又猛大片午夜| 永久555www成人免费| 999精品嫩草久久久久久99| 佐佐木明希av| 99免费精品在线| 波多野结衣高清在线| 色多多国产成人永久免费网站| 大胆国模一区二区三区| 无码日本精品xxxxxxxxx| 9l国产精品久久久久麻豆| 黄色一级视频免费看| 色综久久综合桃花网| 凹凸成人在线| 麻豆传传媒久久久爱| 亚洲欧洲日韩av| 欧美综合视频在线| 国产精品成人一区二区| 91成人国产| 朝桐光av一区二区三区| 欧美午夜在线一二页| av电影高清在线观看| 精品国产电影| 久久av中文字幕片| 久热这里只有精品在线| 亚洲人a成www在线影院| 国产一区二区av在线| 久草热视频在线观看| 国产精品全国免费观看高清| 亚洲国产精品久久人人爱潘金莲 | av无码久久久久久不卡网站| 久久无码av三级| 精品黑人一区二区三区在线观看| 国内外成人免费激情在线视频网站| 神马影视一区二区| 色欲无码人妻久久精品| 欧美午夜片在线免费观看| 亚洲小说区图片| 四虎永久国产精品| 不卡一二三区首页| 国产欧美日韩成人| 国产精品扒开腿做爽爽爽的视频|