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

單線程的Redis為什么能支持10w+的QPS?

開發 前端 Redis
我們經常聽到Redis是一個單線程程序。準確的說Redis是一個多線程程序,只不過請求處理的部分是用一個線程來實現的。

單線程為什么能支持10w+的QPS?

我們經常聽到Redis是一個單線程程序。準確的說Redis是一個多線程程序,只不過請求處理的部分是用一個線程來實現的。

阿里云對Redis QPS的測試結果如下所示

「Redis是如何用單線程來實現每秒10w+的QPS的呢?」

  • 使用IO多路復用
  • 非CPU密集型任務
  • 純內存操作
  • 高效的數據結構

「只用一個線程怎么來處理多個客戶端的連接呢?」

這就不得不提IO多路復用技術,即Java中的NIO。

當我們使用阻塞IO(Java中的BIO),調用read函數,傳入參數n,表示讀取n個字節后線程才會返回,不然就一直阻塞。write方法一般不會阻塞,除非寫緩沖區被寫滿,write才會被阻塞,直到緩沖區中有空間被釋放出來。

當我們使用IO多路復用技術時,當沒有數據可讀或者可寫,客戶端線程會直接返回,并不會阻塞。這樣Redis就可以用一個線程來監聽多個Socket,當一個Socket可讀或可寫的時候,Redis去讀取請求,操作內存中數據,然后返回。

「當采用單線程時,就無法使用多核CPU,但Redis中大部分命令都不是CPU密集型任務,所以CPU并不是Redis的瓶頸」。

高并發和大數據量的請寬下Redis的瓶頸主要體現在內存和網絡帶寬,所以你看Redis為了節省內存,在底層數據結構上占用的內存能少就少,并且一種類型的數據在不同的場景下會采用不同的數據結構。

「所以Redis采用單線程就已經能處理海量的請求,因此就沒必要使用多線程」。除此之外,「使用單線程還有如下好處」

  1. 沒有了線程切換的性能開銷
  2. 各種操作不用加鎖(如果采用多線程,則對共享資源的訪問需要加鎖,增加開銷)
  3. 方便調試,可維護性高

「最后Redis是一個內存數據庫,各種命令的讀寫操作都是基于內存完成的」。大家都知道操作內存和操作磁盤效率相差好幾個數量級。雖然Redis的效率很高,但還是有一些慢操作需要大家避免

Redis有哪些慢操作?

Redis的各種命令是在一個線程中依次執行的,如果一個命令在Redis中執行的時間過長,就會影響整體的性能,因為后面的請求要等到前面的請求被處理完才能被處理,這些耗時的操作有如下幾個部分

Redis可以通過日志記錄那些耗時長的命令,使用如下配置即可

  1. # 命令執行耗時超過 5 毫秒,記錄慢日志 
  2. CONFIG SET slowlog-log-slower-than 5000 
  3. # 只保留最近 500 條慢日志 
  4. CONFIG SET slowlog-max-len 500 

執行如下命令,就可以查詢到最近記錄的慢日志

  1. 127.0.0.1:6379> SLOWLOG get 5 
  2. 1) 1) (integer) 32693       # 慢日志ID 
  3.    2) (integer) 1593763337  # 執行時間戳 
  4.    3) (integer) 5299        # 執行耗時(微秒) 
  5.    4) 1) "LRANGE"           # 具體執行的命令和參數 
  6.       2) "user_list:2000" 
  7.       3) "0" 
  8.       4) "-1" 
  9. 2) 1) (integer) 32692 
  10.    2) (integer) 1593763337 
  11.    3) (integer) 5044 
  12.    4) 1) "GET" 
  13.       2) "user_info:1000" 
  14. ... 

使用復雜度過高的命令

之前的文章我們已經介紹了Redis的底層數據結構,它們的時間復雜度如下表所示

名稱 時間復雜度
dict(字典) O(1)
ziplist (壓縮列表) O(n)
zskiplist (跳表) O(logN)
quicklist(快速列表) O(n)
intset(整數集合) O(n)

「單元素操作」:對集合中的元素進行增刪改查操作和底層數據結構相關,如對字典進行增刪改查時間復雜度為O(1),對跳表進行增刪查時間復雜為O(logN)

「范圍操作」:對集合進行遍歷操作,比如Hash類型的HGETALL,Set類型的SMEMBERS,List類型的LRANGE,ZSet類型的ZRANGE,時間復雜度為O(n),避免使用,用SCAN系列命令代替。(hash用hscan,set用sscan,zset用zscan)

「聚合操作」:這類操作的時間復雜度通常大于O(n),比如SORT、SUNION、ZUNIONSTORE

「統計操作」:當想獲取集合中的元素個數時,如LLEN或者SCARD,時間復雜度為O(1),因為它們的底層數據結構如quicklist,dict,intset保存了元素的個數

「邊界操作」:list底層是用quicklist實現的,quicklist保存了鏈表的頭尾節點,因此對鏈表的頭尾節點進行操作,時間復雜度為O(1),如LPOP、RPOP、LPUSH、RPUSH

「當想獲取Redis中的key時,避免使用keys *」 ,Redis中保存的鍵值對是保存在一個字典中的(和Java中的HashMap類似,也是通過數組+鏈表的方式實現的),key的類型都是string,value的類型可以是string,set,list等

例如當我們執行如下命令后,redis的字典結構如下

  1. set bookName redis; 
  2. rpush fruits banana apple; 

我們可以用keys命令來查詢Redis中特定的key,如下所示

  1. # 查詢所有的key 
  2. keys * 
  3. # 查詢以book為前綴的key 
  4. keys book* 

keys命令的復雜度是O(n),它會遍歷這個dict中的所有key,如果Redis中存的key非常多,所有讀寫Redis的指令都會被延遲等待,所以千萬不用在生產環境用這個命令(如果你已經準備離職的話,祝你玩的開心)。

「既然不讓你用keys,肯定有替代品,那就是scan」

scan和keys相比,有如下特點

  1. 復雜雖然也是O(n),但是是通過游標分布執行的,不會阻塞線程
  2. 同keys一樣,提供模式匹配功能
  3. 從完整遍歷開始到完整遍歷結束,一直存在于數據集內的所有元素都會被完整遍歷返回,但是同一個元素可能會被返回多次
  4. 如果一個元素是在迭代過程中被添加到數據集的,或者在迭代過程中從數據集中被刪除的,那么這個元素可能會被返回,也可能不會被返回
  5. 返回結果為空并不意味著遍歷結束,而要看返回的游標值是否為0

有興趣的小伙伴可以分析一下scan源碼的實現就能明白這些特性了

「用用zscan遍歷zset,hscan遍歷hash,sscan遍歷set的原理和scan命令類似,因為hash,set,zset的底層實現的數據結構中都有dict。」

操作bigkey

「如果一個key對應的value非常大,那么這個key就被稱為bigkey。寫入bigkey在分配內存時需要消耗更長的時間。同樣,刪除bigkey釋放內存也需要消耗更長的時間」

如果在慢日志中發現了SET/DEL這種復雜度不高的命令,此時你就應該排查一下是否是由于寫入bigkey導致的。

「如何定位bigkey?」

Redis提供了掃描bigkey的命令

  1. $ redis-cli -h 127.0.0.1 -p 6379 --bigkeys -i 0.01 
  2.  
  3. ... 
  4. -------- summary ------- 
  5.  
  6. Sampled 829675 keys in the keyspace! 
  7. Total key length in bytes is 10059825 (avg len 12.13) 
  8.  
  9. Biggest string found 'key:291880' has 10 bytes 
  10. Biggest   list found 'mylist:004' has 40 items 
  11. Biggest    set found 'myset:2386' has 38 members 
  12. Biggest   hash found 'myhash:3574' has 37 fields 
  13. Biggest   zset found 'myzset:2704' has 42 members 
  14.  
  15. 36313 strings with 363130 bytes (04.38% of keys, avg size 10.00) 
  16. 787393 lists with 896540 items (94.90% of keys, avg size 1.14) 
  17. 1994 sets with 40052 members (00.24% of keys, avg size 20.09) 
  18. 1990 hashs with 39632 fields (00.24% of keys, avg size 19.92) 
  19. 1985 zsets with 39750 members (00.24% of keys, avg size 20.03) 

可以看到命令的輸入有如下3個部分

  1. 內存中key的數量,已經占用的總內存,每個key占用的平均內存
  2. 每種類型占用的最大內存,已經key的名字
  3. 每種數據類型的占比,以及平均大小

這個命令的原理就是redis在內部執行了scan命令,遍歷實例中所有的key,然后正對key的類型,分別執行strlen,llen,hlen,scard,zcard命令,來獲取string類型的長度,容器類型(list,hash,set,zset)的元素個數

使用這個命令需要注意如下兩個問題

  1. 對線上實例進行bigkey掃描時,為避免ops(operation per second 每秒操作次數)突增,可以通過-i增加一個休眠參數,上面的含義為,每隔100條scan指令就會休眠0.01s
  2. 對于容器類型(list,hash,set,zset),掃描出的是元素最多的key,但一個key的元素數量多,不一定代表占用的內存多

「如何解決bigkey帶來的性能問題?」

  1. 盡量避免寫入bigkey
  2. 如果使用的是redis4.0以上版本,可以用unlink命令代替del,此命令可以把釋放key內存的操作,放到后臺線程中去執行
  3. 如果使用的是redis6.0以上版本,可以開啟lazy-free機制(lazyfree-lazy-user-del yes),執行del命令的時候,也會放到后臺線程中去執行

大量key集中過期

我們可以給Redis中的key設置過期時間,那么當key過期了,它在什么時候會被刪除呢?

「如果讓我們寫Redis過期策略,我們會想到如下三種方案」

定時刪除,在設置鍵的過期時間的同時,創建一個定時器。當鍵的過期時間來臨時,立即執行對鍵的刪除操作

惰性刪除,每次獲取鍵的時候,判斷鍵是否過期,如果過期的話,就刪除該鍵,如果沒有過期,則返回該鍵

定期刪除,每隔一段時間,對鍵進行一次檢查,刪除里面的過期鍵 定時刪除策略對CPU不友好,當過期鍵比較多的時候,Redis線程用來刪除過期鍵,會影響正常請求的響應

定時刪除策略對CPU不友好,當過期鍵比較多的時候,Redis線程用來刪除過期鍵,會影響正常請求的響應

惰性刪除讀CPU是比較有好的,但是會浪費大量的內存。如果一個key設置過期時間放到內存中,但是沒有被訪問到,那么它會一直存在內存中

定期刪除策略則對CPU和內存都比較友好

redis過期key的刪除策略選擇了如下兩種

  1. 惰性刪除
  2. 定期刪除

「惰性刪除」客戶端在訪問key的時候,對key的過期時間進行校驗,如果過期了就立即刪除

「定期刪除」Redis會將設置了過期時間的key放在一個獨立的字典中,定時遍歷這個字典來刪除過期的key,遍歷策略如下

  1. 每秒進行10次過期掃描,每次從過期字典中隨機選出20個key
  2. 刪除20個key中已經過期的key
  3. 如果過期key的比例超過1/4,則進行步驟一
  4. 每次掃描時間的上限默認不超過25ms,避免線程卡死

「因為Redis中過期的key是由主線程刪除的,為了不阻塞用戶的請求,所以刪除過期key的時候是少量多次」。源碼可以參考expire.c中的activeExpireCycle方法

為了避免主線程一直在刪除key,我們可以采用如下兩種方案

  1. 給同時過期的key增加一個隨機數,打散過期時間,降低清除key的壓力
  2. 如果你使用的是redis4.0版本以上的redis,可以開啟lazy-free機制(lazyfree-lazy-expire yes),當刪除過期key時,把釋放內存的操作放到后臺線程中執行

內存達到上限,觸發淘汰策略

圖片Redis是一個內存數據庫,當Redis使用的內存超過物理內存的限制后,內存數據會和磁盤產生頻繁的交換,交換會導致Redis性能急劇下降。所以在生產環境中我們通過配置參數maxmemoey來限制使用的內存大小。

當實際使用的內存超過maxmemoey后,Redis提供了如下幾種可選策略。

noeviction:寫請求返回錯誤

volatile-lru:使用lru算法刪除設置了過期時間的鍵值對 volatile-lfu:使用lfu算法刪除設置了過期時間的鍵值對 volatile-random:在設置了過期時間的鍵值對中隨機進行刪除 volatile-ttl:根據過期時間的先后進行刪除,越早過期的越先被刪除

allkeys-lru:在所有鍵值對中,使用lru算法進行刪除 allkeys-lfu:在所有鍵值對中,使用lfu算法進行刪除 allkeys-random:所有鍵值對中隨機刪除

「Redis的淘汰策略也是在主線程中執行的。但內存超過Redis上限后,每次寫入都需要淘汰一些key,導致請求時間變長」

可以通過如下幾個方式進行改善

  1. 增加內存或者將數據放到多個實例中
  2. 淘汰策略改為隨機淘汰,一般來說隨機淘汰比lru快很多
  3. 避免存儲bigkey,降低釋放內存的耗時

寫AOF日志的方式為always

Redis的持久化機制有RDB快照和AOF日志,每次寫命令之后后,Redis提供了如下三種刷盤機制

always:同步寫回,寫命令執行完就同步到磁盤 everysec:每秒寫回,每個寫命令執行完,只是先把日志寫到aof文件的內存緩沖區,每隔1秒將緩沖區的內容寫入磁盤 no:操作系統控制寫回,每個寫命令執行完,只是先把日志寫到aof文件的內存緩沖區,由操作系統決定何時將緩沖區內容寫回到磁盤

當aof的刷盤機制為always,redis每處理一次寫命令,都會把寫命令刷到磁盤中才返回,整個過程是在Redis主線程中進行的,勢必會拖慢redis的性能

當aof的刷盤機制為everysec,redis寫完內存后就返回,刷盤操作是放到后臺線程中去執行的,后臺線程每隔1秒把內存中的數據刷到磁盤中

當aof的刷盤機制為no,宕機后可能會造成部分數據丟失,一般不采用。

「一般情況下,aof刷盤機制配置為everysec即可」

fork耗時過長

在持久化一節中,我們已經提到「Redis生成rdb文件和aof日志重寫,都是通過主線程fork子進程的方式,讓子進程來執行的,主線程的內存越大,阻塞時間越長。」

可以通過如下方式優化

控制Redis實例的內存大小,盡量控制到10g以內,因為內存越大,阻塞時間越長

配置合理的持久化策略,如在slave節點生成rdb快照

本文轉載自微信公眾號「Java識堂」,作者李立敏。轉載本文請聯系Java識堂公眾號。

 

責任編輯:武曉燕 來源: Java識堂
相關推薦

2020-06-11 09:35:39

Redis單線程Java

2023-10-15 12:23:10

單線程Redis

2020-10-30 16:20:38

Redis單線程高并發

2023-03-21 08:02:36

Redis6.0IO多線程

2025-01-17 08:23:33

2019-05-07 09:44:45

Redis高并發模型

2019-06-17 14:20:51

Redis數據庫Java

2023-08-17 14:12:17

2019-02-18 08:10:53

2019-05-06 11:12:18

Redis高并發單線程

2020-10-16 16:00:50

Redis單線程數據庫

2025-04-24 08:15:00

Redis單線程線程

2020-11-17 10:20:53

Redis多線程單線程

2025-06-17 00:22:00

2021-12-28 09:50:18

Redis單線程高并發

2025-09-18 08:16:28

JavaScrip單線程Linux

2022-01-04 11:11:32

Redis單線程Reactor

2019-04-02 11:20:48

Redis高并發單線程

2009-07-10 09:05:20

SwingWorker

2022-05-10 08:31:44

RedisQPS單線程
點贊
收藏

51CTO技術棧公眾號

国产suv精品一区二区| 精品久久久久久久久久久久久久久| 欧美在线播放一区| 91中文字幕在线视频| 综合视频在线| 日韩高清av一区二区三区| 黄色高清无遮挡| 精品黄色免费中文电影在线播放| 国产一区二区不卡| 91tv亚洲精品香蕉国产一区7ujn| 国产精久久一区二区三区| 祥仔av免费一区二区三区四区| 一区二区不卡在线播放 | 国产中文欧美日韩在线| 亚洲成a人v欧美综合天堂下载| 欧美人与物videos另类| 国产精品久久久久久免费播放 | 欧美精品在线播放| 亚洲精品乱码久久久久久不卡| 国产精品久久久久av电视剧| 亚洲色欲色欲www在线观看| 国产伦精品一区二区三区照片91| 中文在线字幕免费观| 欧美日韩影院| 日韩中文娱乐网| 免费成人深夜夜行p站| 91麻豆精品国产综合久久久| 欧美日韩久久久久| 97在线免费视频观看| 国产福利在线观看| www.性欧美| 亚洲综合自拍一区| ,一级淫片a看免费| 日韩经典一区二区| 97免费中文视频在线观看| 国产激情无码一区二区三区| 免费看成人吃奶视频在线| 日韩欧美一级在线播放| 亚洲欧美视频二区| 欧美性suv| 欧美日韩另类视频| 我的公把我弄高潮了视频| 精品欧美色视频网站在线观看| 久久久精品日韩欧美| 精品中文字幕人| 精品国产无码AV| 激情综合色播五月| 国产精品青青在线观看爽香蕉| 99热只有这里有精品| 亚洲国产高清一区二区三区| 九九精品视频在线观看| 在线看的片片片免费| 91精品综合久久久久久久久久久| 一区二区欧美久久| 微拍福利一区二区| 精品国产aⅴ| 亚洲图片在线综合| 精品国产av无码| 天堂资源在线亚洲| 亚洲精品一区二三区不卡| 亚洲人人夜夜澡人人爽| 群体交乱之放荡娇妻一区二区| 精品久久久网站| 风韵丰满熟妇啪啪区老熟熟女| 欧美不卡在线观看| 欧美成人bangbros| 你懂的在线观看网站| 果冻天美麻豆一区二区国产| 欧美精品一区二区三区高清aⅴ| 中文字幕久久久久久久| 91蝌蚪精品视频| 亚洲成人久久网| 久久精品女同亚洲女同13| 欧美色图婷婷| 亚洲欧美国产精品| 超薄肉色丝袜一二三| 日韩毛片视频| 美女少妇精品视频| 国产一二三四在线| 夜夜精品视频| 国产精品v片在线观看不卡| 在线视频欧美亚洲| 国产美女一区二区三区| 国产精品日韩欧美一区二区三区| 色哟哟国产精品色哟哟| 久久综合丝袜日本网| 日韩欧美在线观看强乱免费| 麻豆电影在线播放| 亚洲综合色区另类av| 成人性免费视频| 性欧美超级视频| 在线不卡中文字幕播放| 久久久国产精品久久久| 美女av一区| 中文字幕日韩av电影| 久久免费看少妇高潮v片特黄| 国产精品mm| 日本中文字幕久久看| 一级特黄aaa大片| 成人黄色在线视频| 日韩福利视频| 欧美aaaaaaa| 91久久国产最好的精华液| 色网站在线视频| 亚州精品视频| 欧美麻豆久久久久久中文| 欧美黑人一区二区| 国产精品一区在线观看你懂的| 久久精品日产第一区二区三区精品版 | 国产亚洲欧美一区二区| 嫩草研究院在线| 亚洲乱码中文字幕综合| 日韩一级片播放| 日韩精品一级| 国产亚洲精品久久久| 国产亚洲自拍av| 久久国内精品视频| 久久免费一区| 日本大片在线播放| 欧美日韩日本视频| 亚洲精品女人久久久| 综合一区av| 国产精品视频久久久久| 天天干天天爱天天操| 亚洲视频在线观看三级| 亚洲国产精品毛片av不卡在线| 91成人精品在线| 日韩中文字幕在线视频| 无码日韩精品一区二区| 成人精品鲁一区一区二区| 欧美 日韩 国产 在线观看| 日本不卡一二三| 亚洲精品www久久久| 久久久久99精品成人片试看| 男人的天堂亚洲一区| 久久99精品久久久久子伦 | 成人网18免费网站| 欧美一区二区三区精品电影| 亚洲精品久久久久久无码色欲四季| 国产精品久久久久久久浪潮网站| 99福利在线观看| 精品视频在线你懂得| 久久影视电视剧免费网站清宫辞电视 | 欧美亚洲高清一区| mm131丰满少妇人体欣赏图| 日韩一级精品| 精品国产aⅴ麻豆| 青青青草视频在线| 日韩三级电影网址| 欧美性猛交xxxxx少妇| 韩国欧美一区二区| 中文字幕一区综合| 在线视频成人| 久久国内精品一国内精品| 国产精品久久久国产盗摄| 国产精品麻豆久久久| 男女无套免费视频网站动漫| 精品色999| 国产精品久久久久久久久粉嫩av| 青青操视频在线| 色又黄又爽网站www久久| 久久精品成人av| 日韩有码一区二区三区| 亚欧洲精品在线视频免费观看| 日韩毛片在线| 中文字幕欧美精品在线| 国产尤物在线观看| 亚洲三级在线免费观看| 欧美丝袜在线观看| 午夜精品视频| 黄色91av| 亚洲国产尤物| 另类专区欧美制服同性| 亚洲第一第二区| 午夜a成v人精品| 日本黄色网址大全| 另类小说视频一区二区| 91传媒免费视频| 另类尿喷潮videofree| 91成人性视频| 一广人看www在线观看免费视频| 91精品在线观看入口| 精品处破女学生| 久久久久久99久久久精品网站| 久久婷婷综合色| 欧美色123| 日韩三级电影网站| 日韩在线网址| 国产成人精品一区二区| 大片免费在线看视频| 亚洲国产小视频| www.av88| 亚洲综合偷拍欧美一区色| 李宗瑞91在线正在播放| 国产一区二区精品久久99| 免费看又黄又无码的网站| 日韩一区二区中文| 国产欧美日韩伦理| 成人国产一区二区三区精品麻豆| 欧美另类交人妖| 麻豆导航在线观看| 日韩欧美在线观看一区二区三区| 国产九色在线播放九色| 亚洲图片激情小说| 精品人妻一区二区三区日产| 免费在线欧美视频| www.日本在线播放| 国产精品久久久久9999赢消| 精品无码久久久久国产| 成人在线日韩| 国产91久久婷婷一区二区| 亚洲小说区图片| 中文字幕亚洲精品| 天堂在线一二区| 欧美tk—视频vk| 中文字幕久久久久| 欧美性猛交xxxx富婆| 午夜少妇久久久久久久久| 亚洲国产成人在线| 丰满大乳奶做爰ⅹxx视频| 国产一区啦啦啦在线观看| 久久久国产欧美| 久久国产66| 精品欧美一区免费观看α√| 911久久香蕉国产线看观看| 色中色综合成人| 久久av超碰| 久久久久国产精品视频| 国产一区调教| 国产日韩欧美综合精品| 在线观看视频一区二区三区| 91亚洲永久免费精品| 日日夜夜亚洲精品| 国产精品日韩久久久久| 亚洲电影有码| 国产精品热视频| 国产精品99精品一区二区三区∴| 日本久久亚洲电影| 日本久久免费| 国产精品对白刺激| yiren22亚洲综合| 国产精品影院在线观看| 成人国产精品入口免费视频| 国产精品免费观看在线| 日本一区免费网站| 国产精品久久久亚洲| 亚洲精品555| 国产日韩av在线播放| 久久三级毛片| 成人精品一区二区三区电影免费| 久久xxx视频| 国产视频福利一区| av一级久久| 97se亚洲综合在线| 91精品导航| 成人欧美一区二区三区视频 | 午夜精品免费看| 蜜臀va亚洲va欧美va天堂| 天天操天天爱天天爽| 毛片av一区二区三区| 国产精品入口免费软件| 久久久久久夜| 五月天婷婷亚洲| 美女性感视频久久| 亚欧激情乱码久久久久久久久| 久久激情五月激情| 亚洲女人在线观看| 国产精品66部| 天堂久久久久久| 久久久综合九色合综国产精品| 亚洲av综合一区二区| 国产精品电影一区二区| 潘金莲一级黄色片| 亚洲精品视频在线看| 五月天婷婷丁香| 婷婷综合另类小说色区| 99久久精品国产亚洲| 欧美日韩成人一区二区| 国产精品久久久久久在线| 91精品国产乱码| 五月婷婷在线播放| 亚洲色图色老头| 在线激情免费视频| 久久99精品久久久久久琪琪| 岛国片av在线| 欧美洲成人男女午夜视频| 日韩毛片网站| 国产精品二区三区| 国产精品密蕾丝视频下载| 警花观音坐莲激情销魂小说| 在线欧美福利| 青青在线视频免费| 福利一区二区在线| 在线免费观看麻豆| 亚洲人成影院在线观看| 看片网址国产福利av中文字幕| 色欧美日韩亚洲| 国产精品久久久久久免费播放| 日韩高清有码在线| 免费黄网站在线观看| 日韩资源在线观看| 最新中文字幕在线播放| 国产日韩欧美日韩大片| 五月亚洲婷婷| 一区二区不卡在线视频 午夜欧美不卡'| 欧美aaaa视频| 免费国产黄色网址| 国产精选一区二区三区| 欧美xxxxx精品| 中文无字幕一区二区三区| 国产成人精品a视频一区| 欧美午夜电影网| 免费看黄网站在线观看| 日韩最新在线视频| 悠悠资源网亚洲青| 91精品国产综合久久香蕉922| 亚洲aa在线| av动漫在线免费观看| 免费在线亚洲| 欧美日韩一区二区三区四区五区六区| 国产色产综合色产在线视频| 免费麻豆国产一区二区三区四区| 一本高清dvd不卡在线观看| 国产ts人妖调教重口男| 久久精品电影网| 全亚洲第一av番号网站| 国产乱码精品一区二区三区不卡| 国产二区精品| 黄色av免费在线播放| 成人福利视频网站| 精品小视频在线观看| 欧美日韩中文字幕一区二区| 亚洲美女综合网| 欧美激情在线有限公司| а天堂中文最新一区二区三区| 亚洲国产一区二区精品视频| 国产精品综合色区在线观看| 日本特黄在线观看| 亚洲精品老司机| 国产又黄又粗又猛又爽| 亚洲国产成人av在线| 91av久久| 91久久爱成人| 欧美激情 亚洲a∨综合| 亚洲综合婷婷久久| 国产日韩精品一区二区三区在线| 亚洲大片免费观看| 日韩av在线网页| 黄色成人在线网| 精品无码久久久久国产| 亚洲视频综合| 182在线视频| 亚洲福中文字幕伊人影院| 国产suv一区二区| 欧美激情日韩图片| 亚洲精品a区| 超碰97在线看| 国产a久久麻豆| 免费一级片在线观看| 精品国产三级a在线观看| 亚洲奶水xxxx哺乳期| 亚洲r级在线观看| 亚洲国产激情| 少妇一级淫免费观看 | 国产又粗又猛又爽又| 亚洲男女自偷自拍图片另类| 全球最大av网站久久| 亚洲精品一区二区三区四区五区 | av动漫精品一区二区| 日韩激情视频一区二区| 成人毛片老司机大片| 一级片免费网址| 在线精品视频视频中文字幕| 国产一区影院| 国产精品视频二| aa级大片欧美| 在线观看日本视频| 久久精品国产一区| 亚洲一二三区视频| 久久久免费视频网站| 国产三级精品视频| 91 中文字幕| 欧美极品美女电影一区| 国内精品国产成人国产三级粉色| 亚洲男人天堂色| 中文字幕中文在线不卡住| 国产一区二区在线播放视频| 97精品在线观看| 国产一区二区三区站长工具| 青青草原播放器| 精品国产成人在线| 国产高清在线看| 国产成人精品日本亚洲11| 99亚洲一区二区| 亚洲精品卡一卡二| 亚洲国产日韩精品在线| 精品视频在线一区二区在线| 精品一二三四五区| 国产无人区一区二区三区| 亚洲精品视频91|