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

Redis靈魂拷問:19圖+11題帶你面試通關

存儲 存儲軟件 Redis
又到了金三銀四跳槽季,好多同學已經開始行動了。今天我來助力一把,送出這套redis面試題,助力大家通關。

 [[387146]]

本文轉載自微信公眾號「程序員jinjunzhu」,作者 jinjunzhu 。轉載本文請聯系程序員jinjunzhu公眾號。

又到了金三銀四跳槽季,好多同學已經開始行動了。今天我來助力一把,送出這套redis面試題,助力大家通關。

1 redis為什么響應快

1.1數據保存在內存中

redis數據保存在內存中,讀寫操作只要訪問內存,不需要磁盤IO。

1.2.底層數據結構

redis的數據以key:value的格式存儲在散列表中,時間復雜度o(1)。

redis為value定義了豐富的數據結構,包括態字符串、雙向鏈表、壓縮列表、hash、跳表和整數數組,可以根據value的特性選擇選擇最高效的數據結構。

1.3.單線程模型

redis的網絡IO和數據讀寫使用單線程模型,可以綁定CPU,這避免了線程上下文切換帶來的開銷。

「注意:redis6.0對網絡請求引入了多線程模型,讀寫操作還是用單線程。」

redis多線程網絡模型見下圖:

1.4.IO多路復用

redis采用epoll網絡模型,如下圖:

內核會一直監聽新的socket連接事件的和已建立socket連接的讀寫事件,把監聽到的事件放到事件隊列,redis使用單線程不停的處理這個事件隊列。這避免了阻塞等待連接和讀寫事件到來。

這些事件綁定了回調函數,會調用redis的處理函數進行處理。

2 redis底層數據結構

redis有5種數據類型,包括「字符串、列表、集合、有序集合和字典」。

redis底層的數據結構有6種,包括「動態字符串、雙向鏈表、壓縮列表(ziplist)、hash表、跳表(skip list)和整數數組」。

redis數據類型和底層數據結構有如下對應關系:

2.1.字符串類型

底層數據結構是動態字符串。

2.2.列表

如果同時滿足下面條件,就使用壓縮列表,否則使用雙向鏈表。

  • 列表中單個元素小于64字節
  • 列表中元素個數少于 512

「壓縮列表」在內存中是一塊兒連續的內存空間,結構如下:

「壓縮列表查找時間復雜度是o(n)」

2.3.集合

如果同時滿足下面條件,就使用有序整數數組,否則使用hash表。

  • 集合中元素都是整數類型
  • 集合中元素個數不超過512個

2.4.有序集合

如果同時滿足下面2個條件,就使用壓縮列表,否則使用跳表。

  • 集合中元素都小于64字節
  • 集合中元素個數小于128個

「注意:有序集合還有一個HASH表用于保存集合中元素的分數,做ZSCORE操作時,查詢的就是這個HASH表,所以效率很高。」

「跳表」的結構如下:

如果不加索引,查找10這個數字需要查詢10次,使用了二級索引,查找10這個數字需要5次,而使用一級索引,需要查詢3次。

跳表的每一層都是一個有序鏈表,最下面一層保存了全部數據。跳表插入、刪除、查詢的時間復雜度是o(logN)。跳表需要存儲額外的索引節點,會增加額外的空間開銷。

2.5.字典

如果同時滿足下面2個條件,就使用壓縮列表,否則使用hash表。

  • 字典中每個entry的key/value都小于64字節
  • 字典中元素個數小于512個

3 redis緩存淘汰策略

redis總共有8種淘汰策略,如下圖:

volatile-lfu和allkeys-lfu策略是4.0版本新增的。

  • 「lru」是按照數據的最近最少訪問原則來淘汰數據,可能存在的問題是如果大批量冷數據最近被訪問了一次,就會占用大量內存空間,如果緩存滿了,部分熱數據就會被淘汰掉。
  • 「lfu」是按照數據的最小訪問頻率訪問次數原則來淘汰數據,如果兩個數據的訪問次數相同,則把訪問時間較早的數據淘汰。

4 redis數據持久化

redis持久化的方式有2種,一種是寫后日志(AOF),一種是內存快照(RDB)。

4.1.AOF日志

AOF日志記錄了每一條收到的命令,redis故障宕機恢復時,可以加載AOF日志中的命令進行重放來進行故障恢復。AOF有3種同步策略,如下圖:圖片

如果不是對丟失數據特別敏感的業務,推薦使用everysec,對主線程的阻塞少,故障后丟失數據只有1s。

4.2.RDB快照

RDB快照是一個內存快照,記錄了redis某一時刻的全部數據。

4.3.混合日志

從redis4.0開始,AOF文件也可以保存RDB快照,AOF重寫的時候redis會把AOF文件內容清空,先記錄一份RDB快照,這份數據以"REDIS"開頭。記錄RDB內容后,AOF文件會接著記錄AOF命令。故障恢復時,先加載AOF文件中RDB快照,然后回放AOF文件中后面的命令。

4.4.主從同步

redis主從同步時,主節點會先生成一份RDB快照發送給從節點,把快照之后的命令寫入主從同步緩存區(replication buffer),從節點把RDB文件加載完成后,主節點把緩存區命令發送給從節點。

4.5.AOF重寫

AOF日志是用記錄命令的方式追加的,這樣可能存在對同一個key的多條命令,這些命令是可以合并成1條的。比如對同一個key的多個set操作日志,可以合成一條。

4.6.阻塞點

AOF重寫和RDB快照執行的過程中,redis都會fork一個子進程來執行操作,子進程執行過程中是不是阻塞主線程的。

「但是要注意2點:」

fork子進程的過程中,redis主線程會拷貝一份內存頁表(記錄了虛擬內存和物理內存的映射關系)給子進程,這個過程是阻塞的,redis主線程內存越大,阻塞時間越長;

子進程和redis主線程共用一塊兒物理內存,如果新的請求到來,必須使用copy on write的方式,拷貝要修改的數據頁到新的內存空間進行修改。如下圖:

注意:如果開啟了內存大頁,每次拷貝都需要分配2MB的內存。

5 redis高可用

下圖是一個「一主二從三哨兵」的架構圖:

從圖我們可以看到哨兵之間、哨兵和主從節點之間、哨兵和客戶端之間都建立了連接。

如果主節點掛了,哨兵集群需要完成主從切換,如下圖:

下面我們依次來聊一下這4個步驟「5.1~5.4」。

5.1.判斷主節點下線

當一個哨兵監控到主節點下線時,就會給其他哨兵發送確認命令,其他命令會根據自己的判斷回復"Y"或"N"。

如果有n/2 + 1以上數量的哨兵都認為主節點下線了,才會判定主節點下線。這里的n是哨兵集群的數量。

n/2 + 1這個參數由quorum參數配置,比如有5個哨兵,這里一般配置成3。也可以配置成其他值。

5.2.選舉新主節點

主節點被判定下線后,哨兵集群會重新選擇新的主節點。

5.2.1 淘汰不穩定從節點

根據配置參數down-after-milliseconds * 10來淘汰。

「down-after-milliseconds」表示主從節點斷開時間,10表示次數,如果從節點跟主節點斷開時間超過down-after-milliseconds的次數達到了10次以上,從節點就被淘汰了。

5.2.2 slave-priority參數

「slave-priority」參數配置了從節點的優先級,選擇從節點時哨兵會優先選擇優先級高的從節點。

5.2.3 復制進度

redis有一個記錄主從增量復制的緩存區叫repl_backlog_buffer,這是一個環形結構的緩沖區,如下圖:

主節點有一個寫偏移量master_repl_offset,從節點也有一個偏移量slave_repl_offset。優先選擇slave_repl_offset最接近master_repl_offset的從節點作為新的主節點。

所以,上圖中偏移量為114的從節點優先被選為新的主節點。

5.2.4 ID編號

優先級和參數都一樣的情況下,ID編號小的從節點優先被選為新主節點。

5.3.選舉哨兵leader

第一個判斷主節點下線的哨兵節點收到其他節點的回復并確定主節點下線后,就會給其他哨兵發送命令申請成為哨兵leader。

「成為leader的條件如下:」

  • 收到贊成票必須大于等quorum值
  • 必須拿到半數以上的贊成票

如果集群配置了5個哨兵,quorum的值設置為3,其中一個哨兵節點掛了,很有可能會判斷到主節點下線,但是因為選舉不出哨兵leader而不能切換。如果集群有2個哨兵,其中一個掛了,那必定選不出哨兵leader。

下面的圖展示了哨兵一成功當選leader的過程:

5.4.主節點切換

選出新主節點和哨兵leader后,哨兵leader會執行主從切換的操作。完成后會做一些「事件通知」:

  • 通知其他哨兵新主節點地址
  • 通知所有從節點新的主節點地址,從節點收到后向新主節點請求主從同步
  • 通知客戶端連接新主節點

5.5.主從切換過程中請求處理

如果客戶端的讀請求會發送到從節點,可以正常處理。

在客戶端收到新主節點地址通知前寫請求會失敗。

客戶端可以采取一些應急措施應對主節點下線,比如緩存寫請求。

為了能夠及時獲取到新主節點信息,客戶端可以訂閱哨兵的主節點下線事件和新主節點變更事件。

6 redis為什么變慢了

redis變慢了的原因有很多,總結一下有11個,見下圖:

從圖中看出,redis變慢原因主要有兩類:「阻塞主線程和操作系統限制」。

6.1主線程阻塞

6.1.1.AOF重寫和RDB快照

前面已經講過了,redis在AOF重寫時,主線程會fork出一個bgrewriteaof子進程。

redis進行RDB快照時主線程會fork出一個bgsave子進程。

這兩個操作表面上看不阻塞主線程,但fork子進程的這個過程是在主線程完成的。fork子進程時redis需要拷貝內存頁表,如果redis實例很大,這個拷貝會耗費大量的CPU資源,阻塞主線程的時間也會變長。

6.1.2.內存大頁

redis默認支持內存大頁是2MB,使用內存大頁,一定程度上可以減少redis的內存分配次數,但是對數據持久化會有一定影響。

redis在AOF重寫和RDB快照過程中,如果主線程收到新的寫請求,就需要CopyOnWrite。使用了內存大頁,即使redis只修改其中一個大小是1kb的key,也需要拷貝一整頁的數據,即2MB。在寫入量較多時,大量拷貝就會導致redis性能下降。

6.1.3.命令復雜度高

執行復雜度高的命令是造成redis阻塞的常見原因。比如對一個set或者list數據類型執行SORT操作,復雜度是O(N+M*log(M))。

6.1.4.bigkey操作

如果一個key的value非常大,創建的時候分配內存會很耗時,刪除的時候釋放內存也很耗時。

redis4.0以后引入了layfree機制,可以使用子進程異步刪除,從而不影響主線程執行。用UNLINK命令替代DEL命令,就可以使用子進程異步刪除。

redis6.0增加了配置項lazyfree-lazy-user-del,配置成yes后,del命令也可以用子進程異步刪除。

如果lazyfree-lazy-user-del不設置為yes,那redis是否采用異步刪除,是要看刪除的時機的。對于String類型和底層采用整數數組和壓縮列表的數據類型,redis是不會采用異步刪除的。

6.1.5.從節點全量同步

從節點全量同步過程中,需要先清除內存中的數據,然后再加載RDB文件,這個過程中是阻塞的,如果有讀請求到來,只能等到加載RDB文件完成后才能處理請求,所以響應會很慢。

另外,如果redis實例很大,也會造成RDB文件太大,從庫加載時間長。所以盡量保持redis實例不要太大,比如單個實例限制4G,如果超出就采用切片集群。

6.1.6.AOF同步寫盤

appendfsync策略有3種:always、everysec、no,如果采用always,每個命令都會同步寫盤,這個過程是阻塞的,等寫盤成功后才能處理下一條命令。

除非是嚴格不能丟數據的場景,否則盡量不要選擇always策略,推薦盡量選擇everysec策略,如果對丟失數據不敏感,可以采用no。

6.1.7.內存達到maxmemory

內存達到maxmemory,需要使用淘汰策略來淘汰部分key。即使采用lazyfree異步刪除,選擇key的過程也是阻塞的。

可以選擇較快的淘汰策略,比如用隨機淘汰來替換LRU和LFU算法淘汰。也可以擴大切片數量來減輕淘汰key的時間消耗。

6.2操作系統限制

6.2.1.使用了swap

使用swap的原因是操作系統不能給redis分配足夠大的內存,如果操作其他開啟了swap,內存數據就需要不停地跟swap換入和換出,對性能影響非常大。

操作系統沒有能力分配內存的原因也可能是其他進程使用了大量的內存。

6.2.2.網絡問題

如果網卡負載很大,對redis性能影響會很大。這一方面有可能redis的訪問量確實很高,另一方面也可能是有其他流量大的程序占用了帶寬。

這個最好從運維層面進行監控。

6.2.3.線程上下文切換

redis雖然是單線程的,但是在多核cpu的情況下,也可能會發生上下文切換。如果主線程從一個物理核切換到了另一個物理核,那就不能使用CPU高效的一級緩存和二級緩存了。如下圖所示:

為防止這種情況,可以把redis綁定到一個CPU物理核。

6.2.4.磁盤性能低

對于AOF同步寫盤的使用場景,如果磁盤性能低,也會影響redis的響應。可以優先采用性能更好的SSD硬盤。

7 設計排行榜功能

redis的zset類型保存了分數值,可以方便的實現排行榜的功能。

比如要統計10篇文章的排行榜,可以先建立一個存放10篇文章的zset,每當有讀者閱讀一篇文章時,就用ZINCRBY命令給這篇文章的分數加1,最后可以用range命令統計排行榜前幾位的文章。

8 redis實現分布式鎖

8.1.redis單節點的分布式鎖

如下圖,一個服務部署了2個客戶端,獲取分布式鎖時一個成功,另一個就失敗了。

redis一般使用setnx實現分布式鎖,命令如下:

  1. SETNX KEY_NAME VALUE 

設置成功返回 1,設置失敗返回 0。

使用單節點分布式鎖存在一些問題。

8.1.1.客戶端1獲取鎖后發生了故障

結果鎖就不能釋放了,其他客戶端永遠獲取不到鎖。解決方法是用下面命令對key設置過期時間:

  1. SET key value [EX seconds] [PX milliseconds] NX 

8.1.2 客戶端2誤刪除了鎖

解決方法是對key設置value時加入一個客戶端表示,比如在客戶端1設置key時在value前拼接一個字符串application1,刪除的時候做一下判斷。

8.2.redis紅鎖

redis單節點會有可靠性問題,節點故障后鎖操作就會失敗。redis為了應對單點故障的問題,設計了多節點的分布式鎖,也叫紅鎖。主要思想是客戶端跟多個redis實例請求加鎖,只有超過半數的實例加鎖成功,才認為成功獲取了分布式鎖。

如下圖,客戶端分別跟3個實例請求加鎖,有2個實例加鎖成功,所以獲取分布式鎖成功:

9 緩存雪崩、擊穿、穿透

9.1.緩存雪崩

redis做緩存時,如果同一時間大量緩存數據失效,客戶端請求會大量發送到數據庫,導致數據庫壓力激增。如下圖:

「應對方法主要有3個:」

  • 給key設置過期時間時加一個小的隨機數
  • 限流
  • 服務降級

9.2.緩存擊穿

某個熱點key,突然過期了,大量請求發送到了數據庫。解決方案是給熱點key不設置過期時間。

9.3.緩存穿透

某個熱點key,查詢緩存和查詢數據庫都沒有,就發生了緩存穿透。如下圖:

「應對方法主要有2個:」

  • 緩存熱點的空值和缺省值
  • 查詢數據庫之前先查詢布隆過濾器

10 數據傾斜

什么是數據傾斜?看下面這個面試題:

如果redis有一個熱點key,qps能達到100w,該如何存儲?

如果這個熱點key被放到一個redis實例上,這個實例面臨的訪問壓力會非常大。如下圖,redis3這個實例保存了foo這個熱點key,訪問壓力會很大:

「解決方法主要有兩個:」

1.使用客戶端本地緩存來緩存key,這樣改造會有兩個問題:

  • 客戶端緩存的熱點key可能消耗大量內存

客戶端需要保證本地緩存和redis緩存的一致性

2.給熱點key加一個隨機前綴,讓它保存到不同的redis實例上,這樣也會存在兩個問題:

  • 客戶端在訪問的時候需要給這個key加前綴
  • 客戶端在刪除的時候需要根據所有前綴來刪除不同實例上保存的這個key

11 bitmap使用

有一道經典的面試題,10億整數怎么在內存中去重排序?

我們先算一下10億整數占的內存,java一個整數類型占四字節,占用內存大小約

  1. 10億 * 4 / 1024 / 1024 = 3.7G 

占得內存太大了,如果內存不夠,怎么辦呢?

11.1.bitmap介紹

bitmap類型使用的數據結構是String,底層存儲格式是二進制的bit數組。假如我們有1、4、6、9四個數,保存在bit數組中如下圖:

在這個bit數組中用10個bit的空間保存了四個整數,占用空間非常小。

再回到面試題,我們使用bit數組長度是10億整數中 「(最大值 - 最小值 + 1)」。

如果有負數,需要進行一個轉化,所有數字加最小負數的絕對值。比如{-2, 0, 1, 3},我們轉換成{0, 2, 3, 5},因為數組下標必須從0開始

11.2.使用場景

11.2.1.員工打卡記錄

在一個有100個員工的公司,要統計一個月內員工全勤的人數,可以每天創建一個bitmap,簽到的員工bit位置為1。

要統計當天簽到的員工只要用BITCOUNT命令就可以。

要統計當月全勤的員工,只要對當月每天的bitmap做交集運算就可以,命令如下:

  1. BITOP AND srckey1 srckey2 srckey3 ... srckey30 

srckeyN表示第N天的打卡記錄bitmap

11.2.2.統計網站日活躍用戶

比如網站有10萬個用戶,這樣我們創建一個長度為10萬的bitmap,每個用戶id占一個位,如果用戶登錄,就把bit位置為1,日終的時候用BITCOUNT命令統計出當天登錄過的用戶總數。

 

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

2020-06-02 07:44:04

AQS JavaNode

2020-05-22 08:13:45

敏捷開發OKR

2022-12-12 08:46:11

2025-06-17 08:35:00

2022-08-26 01:10:32

TCPSYNLinux

2022-03-16 18:27:39

開發低代碼軟件開發

2021-05-26 05:22:48

SQL 數據庫SELECT

2023-06-16 14:10:00

TCPUDP網絡通信

2020-05-29 11:48:01

安全運維信息安全網絡安全

2019-11-19 10:32:55

Java語言程序員

2019-08-12 11:14:00

JVM垃圾對象

2025-05-19 17:18:57

AI模型o3

2025-04-07 00:00:00

云原生架構Kubernetes

2019-09-27 14:48:59

MySQL面試數據庫

2022-05-30 18:37:03

數據個人信息人工智能

2019-08-01 10:20:10

2021-06-02 09:47:48

RSA2021

2021-02-24 10:01:05

機器學習人工智能計算機

2025-10-29 16:29:27

OpenAIGPT-2模型

2021-02-23 08:58:13

Go語言變量
點贊
收藏

51CTO技術棧公眾號

18video性欧美19sex高清| 国产视频一区二区三区四区五区| 超碰97久久国产精品牛牛| 一区二区高清在线| 国产精品久久久久久久小唯西川 | www国产成人免费观看视频 深夜成人网| 久久综合88中文色鬼| 日本天堂在线播放| 欧美日韩免费观看视频| 亚洲男同1069视频| 久久精品一区二区三区不卡免费视频 | 亚洲天堂五月天| 66国产精品| 亚洲国产日韩一区| 天堂视频免费看| 爱啪视频在线观看视频免费| 中文字幕av在线一区二区三区| 亚洲专区中文字幕| 久久人人爽人人爽人人片av免费| 女人色偷偷aa久久天堂| 亚洲美女www午夜| 午夜免费视频网站| 欧美成人精品一区二区男人小说| 亚洲三级小视频| 久久艹中文字幕| 国产男男gay体育生白袜| 亚洲一区图片| 色综合视频一区中文字幕| 一级片手机在线观看| 午夜免费欧美电影| 欧美精品久久一区二区三区| 久久综合色视频| www.久久ai| 欧美激情一区二区三区全黄| 精品国产福利| 精品二区在线观看| 久久超碰97中文字幕| 欧美在线视频导航| 国产在线视频99| 68国产成人综合久久精品| 亚洲欧洲国产精品| 黄色录像a级片| 欧美一区一区| 91精品国产综合久久精品| 五月婷婷狠狠操| 毛片电影在线| 亚洲第一综合色| 美女在线免费视频| 日韩毛片久久久| 乱插在线www| 久久视频一区二区| 国产高清精品一区| 国产夫妻性生活视频| 免费看日韩精品| 国产高清视频一区三区| 美日韩一二三区| 精品成人国产| 欧美激情亚洲自拍| 激情四射综合网| 婷婷亚洲五月| 精品国偷自产在线视频| 一二三四在线观看视频| 日韩在线视频精品| 日韩三级高清在线| 亚洲午夜精品在线观看| 日韩有吗在线观看| 精品少妇一区二区三区| 香蕉久久久久久av成人| 99精品中文字幕在线不卡| 欧美成人aa大片| 东京热av一区| 日韩成人一级| 亚洲欧美国产一区二区三区| 精品无人区无码乱码毛片国产| 蜜桃一区二区| 中文字幕少妇一区二区三区| 国产午夜精品福利视频| 99久久99久久精品国产片桃花| www.久久久久久.com| 成人做爰视频网站| 午夜精品视频一区二区三区在线看| 在线亚洲国产精品网| 99热在线观看精品| 国内精品久久久久久久97牛牛| 午夜精品一区二区三区在线播放| 成年免费在线观看| 日韩av一级片| 亚洲最大成人免费视频| 韩国av免费在线观看| 91色视频在线| 一本色道久久99精品综合| 在线观看中文| 精品人伦一区二区三区蜜桃免费| 久久精品一区二| 亚洲成人精品综合在线| 精品国产一区二区三区四区四| 菠萝菠萝蜜网站| 色综合色综合| 国外成人在线视频| 亚洲资源在线播放| 成人少妇影院yyyy| 日日骚一区二区网站| 色婷婷在线播放| 色综合中文字幕国产| 性生生活大片免费看视频| 激情小说亚洲色图| 日韩中文视频免费在线观看| 成人免费看片98| 日韩高清在线一区| 国产精品久久九九| 91网页在线观看| 午夜久久久久久电影| 国产又黄又猛又粗又爽的视频| 日韩一二三区在线观看| 中文在线不卡视频| 精品在线播放视频| 国模无码大尺度一区二区三区| 久久久久网址| 丝袜综合欧美| 精品视频一区三区九区| 中国一级特黄录像播放| 久久久国产精品| 日本韩国在线不卡| 免费激情视频网站| 亚洲人亚洲人成电影网站色| 91av在线免费播放| 九九热播视频在线精品6| 久久久精品在线| 国产主播第一页| 99精品欧美一区| 国产精品三级一区二区| 免费视频观看成人| 亚洲人成亚洲人成在线观看| 国产一级特黄视频| 国产精品一级片在线观看| 神马影院我不卡午夜| 鲁鲁在线中文| 亚洲成人精品视频在线观看| 欧美特黄一级片| 久久精品系列| 美乳视频一区二区| av中文字幕在线看| 精品乱人伦小说| 麻豆chinese极品少妇| 精品中文字幕一区二区| 亚洲精品成人自拍| 欧美va在线观看| 国产一区二区三区欧美| 黄色在线免费观看| 26uuu国产在线精品一区二区| www.在线观看av| gogo人体一区| 久久久久久久久久亚洲| 亚洲精品无amm毛片| 亚洲美女免费视频| 亚洲第一天堂久久| 欧美一区激情| 99久久久精品免费观看国产 | 免费又黄又爽又色的视频| 国产一区二区三区免费在线观看| 一区二区三区四区五区精品| jizz亚洲女人高潮大叫| 中文字幕亚洲一区| 91精品国产乱码久久久久| 国产精品久久久久久久岛一牛影视| 超碰在线公开97| 久久中文字幕二区| 亚洲影影院av| jizz一区二区三区| 日韩国产精品视频| 午夜久久久久久久久久影院| 欧美国产日韩在线观看| 中文字幕一区久久| 欧美激情五月| 久久精品国产一区二区三区日韩| 黄色在线观看www| 亚洲人高潮女人毛茸茸| 中国黄色一级视频| 亚洲欧美日韩久久精品| 亚洲成年人av| 丝袜脚交一区二区| 在线观看免费黄色片| aaa国产精品视频| 91超碰中文字幕久久精品| 九色网友自拍视频手机在线| 欧美日韩精品一区视频| 欧美成人aaa片一区国产精品| 成人午夜短视频| 国产真实乱子伦| 欧美gvvideo网站| 99国产高清| 亚洲天堂一区二区| 久久福利网址导航| 青青久在线视频免费观看| 欧美另类一区二区三区| 日韩成人免费在线视频| 国产欧美一区二区精品久导航| 亚洲综合20p| 99亚洲一区二区| 一级做a爰片久久| 欧美黑白配在线| 国产欧美日韩精品丝袜高跟鞋| 丰满大乳少妇在线观看网站| 国产亚洲视频中文字幕视频| 亚洲成人一二三区| 欧美性色aⅴ视频一区日韩精品| 欧美日韩精品亚洲精品| 国产亚洲午夜高清国产拍精品| 日本亚洲一区二区三区| 老司机精品久久| 欧美这里只有精品| 久久中文字幕av一区二区不卡| 精品无人乱码一区二区三区的优势| 国语自产精品视频在线看抢先版结局| 欧美大片欧美激情性色a∨久久| 玖玖综合伊人| 亚洲国产精品小视频| 国产一区二区在线视频观看| 欧美性猛交xxxx偷拍洗澡| 欧美三级日本三级| 中文文精品字幕一区二区| av无码一区二区三区| 国产一区二区剧情av在线| 男人女人黄一级| 国产欧美日本| 日韩成人手机在线| 国产精品久久久久久久| 日本高清久久一区二区三区| 国产精品玖玖玖在线资源| 成人久久一区二区| 国产成人精品一区二区三区视频| 欧美一区视频在线| 久草在线中文最新视频| 欧美福利视频网站| 婷婷在线播放| 草民午夜欧美限制a级福利片| youjizz在线播放| 亚洲日本成人女熟在线观看| 少妇精品视频一区二区| 日韩欧美电影一区| 国产视频www| 欧美精品久久一区| 国产又粗又长又黄| 欧美三级在线视频| 欧美日韩 一区二区三区| 色婷婷av一区二区三区软件| 天天干天天干天天操| 欧美日韩中国免费专区在线看| www.av视频| 亚洲毛片av在线| 免费无遮挡无码永久在线观看视频| 亚洲色图另类专区| 欧美日韩在线观看成人| 一区二区三区在线视频免费观看| 日韩精品一区二区亚洲av性色| 国产精品福利在线播放| 日韩一区二区三区四区视频| 国产精品丝袜一区| 欧美另类videoxo高潮| 亚洲啪啪综合av一区二区三区| 看免费黄色录像| 亚洲午夜免费福利视频| 中文字幕一区二区三区手机版| 亚洲国产精品视频| 午夜婷婷在线观看| 欧美亚洲国产一区二区三区va| 伊人网站在线观看| 欧美一区国产二区| 亚洲男人天堂久久| 日韩国产一区三区| 国产一级片在线播放| 中文字幕视频一区二区在线有码| 黄色一级片在线观看| 欧美成人一区在线| 国产精品vvv| 日韩av电影院| 91精品一区| 国产欧美亚洲日本| 国产欧美日韩精品一区二区三区| 亚洲精品视频一二三| 最新国产精品| 色欲色香天天天综合网www| 久久国产精品久久w女人spa| 邪恶网站在线观看| 国产精品12区| 国产传媒第一页| 中文字幕一区二区三区乱码在线| 特级片在线观看| 日本高清免费不卡视频| 国产美女精品视频国产| 亚洲精品乱码久久久久久按摩观| 成人动漫在线免费观看| 久操成人在线视频| 日本免费久久| 97久草视频| 欧洲杯什么时候开赛| 国产亚洲精品久久久久久久| 午夜在线一区二区| 久久黄色片网站| 成人激情小说网站| 懂色av粉嫩av浪潮av| 亚洲妇女屁股眼交7| 亚洲视频久久久| 亚洲国产成人91精品| 日本中文在线观看| 91av视频在线播放| vam成人资源在线观看| 欧美激情论坛| 欧美日韩亚洲三区| 午夜国产一区二区三区| 成人97人人超碰人人99| 天天做夜夜爱爱爱| 日本韩国欧美一区二区三区| 丰满少妇在线观看bd| 日韩在线www| 欧美日韩大片| 国产精品一区二区欧美黑人喷潮水| av中文一区| 18禁免费无码无遮挡不卡网站| 狠狠色丁香婷婷综合| 久久久视频6r| 欧美日韩人人澡狠狠躁视频| 国内精品国产成人国产三级| 视频一区视频二区国产精品| 午夜影院在线播放| 99久久伊人精品影院| 98精品视频| 北条麻妃在线一区| aaa欧美色吧激情视频| 久久国产在线观看| 91精品国产欧美一区二区成人| 国产色a在线| 国产69久久精品成人| 99香蕉久久| 91传媒免费视频| 精品在线观看免费| 战狼4完整免费观看在线播放版| 色偷偷久久一区二区三区| 无码精品在线观看| 久久久久久久一区二区| gogo久久日韩裸体艺术| 精品久久久无码人妻字幂| 国产乱色国产精品免费视频| 亚洲一级理论片| 欧美日韩国产高清一区| 四虎久久免费| 成人女保姆的销魂服务| 欧美激情电影| 一女二男3p波多野结衣| 国产精品久久99| 国产又粗又黄又爽的视频| 最新的欧美黄色| 香蕉久久久久久| 自拍视频一区二区三区| 久久国产三级精品| 国产性生活大片| 欧美电影精品一区二区| www.8ⅹ8ⅹ羞羞漫画在线看| 国产无套精品一区二区| 亚洲国产高清一区| 无码人妻精品一区二区三区温州| 欧美丝袜一区二区| 国产在线网站| 国产一区私人高清影院| 欧美在线精品一区| 四虎成人免费视频| 黑人巨大精品欧美一区二区三区| 天堂成人在线| 奇米一区二区三区四区久久| 精品国产99| jizz18女人| 一区二区三区美女| 天天操天天干天天| 国产精品免费一区豆花| 日韩欧美字幕| 人妻精品久久久久中文字幕69| 亚洲国产成人tv| 四虎在线视频| 国产精品一香蕉国产线看观看| 亚洲乱码在线| 成熟妇人a片免费看网站| 精品免费在线视频| 欧美尤物美女在线| 国产成人精品一区二区三区福利| 中文亚洲免费| 亚洲一级理论片| 日韩欧美亚洲一区二区| 在线观看福利电影| 一本久久a久久精品vr综合| 成人精品一区二区三区四区| 亚洲国产成人精品女人久久| 精品国产视频在线| 久久夜色精品国产噜噜av小说| 天天碰免费视频| 亚洲精品免费在线观看| 亚洲毛片欧洲毛片国产一品色| 国产高清视频一区三区| 国产一区清纯| 青青草自拍偷拍| 欧美精品一区视频|