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

Redis的快照為什么不會阻塞其他請求?

運維 數(shù)據(jù)庫運維 Redis
RDB 就是 Redis 的數(shù)據(jù)快照,我們在這篇文章想要分析 Redis 為什么在對數(shù)據(jù)進(jìn)行快照持久化時會需要使用子進(jìn)程,而不是將內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)直接導(dǎo)出到磁盤上進(jìn)行存儲。

[[314642]]

為什么這么設(shè)計(Why's THE Design)是一系列關(guān)于計算機領(lǐng)域中程序設(shè)計決策的文章,我們在這個系列的每一篇文章中都會提出一個具體的問題并從不同的角度討論這種設(shè)計的優(yōu)缺點、對具體實現(xiàn)造成的影響。如果你有想要了解的問題,可以在文章下面留言。

雖然我們經(jīng)常將 Redis 看做一個純內(nèi)存的鍵值存儲系統(tǒng),但是我們也會用到它的持久化功能,RDB 和 AOF 就是 Redis 為我們提供的兩種持久化工具,其中 RDB 就是 Redis 的數(shù)據(jù)快照,我們在這篇文章想要分析 Redis 為什么在對數(shù)據(jù)進(jìn)行快照持久化時會需要使用子進(jìn)程,而不是將內(nèi)存中的數(shù)據(jù)結(jié)構(gòu)直接導(dǎo)出到磁盤上進(jìn)行存儲。

概述

在具體分析今天的問題之前,我們首先需要了解 Redis 的持久化存儲機制 RDB 究竟是什么,RDB 會每隔一段時間中對 Redis 服務(wù)中當(dāng)下的數(shù)據(jù)集進(jìn)行快照,除了 Redis 的配置文件可以對快照的間隔進(jìn)行設(shè)置之外,Redis 客戶端還同時提供兩個命令來生成 RDB 存儲文件,也就是 SAVE 和 BGSAVE,通過命令的名字我們就能猜出這兩個命令的區(qū)別。

其中 SAVE 命令在執(zhí)行時會直接阻塞當(dāng)前的線程,由于 Redis 是 單線程 的,所以 SAVE 命令會直接阻塞來自客戶端的所有其他請求,這在很多時候?qū)τ谛枰峁┹^強可用性保證的 Redis 服務(wù)都是無法接受的。

我們往往需要 BGSAVE 命令在后臺生成 Redis 全部數(shù)據(jù)對應(yīng)的 RDB 文件,當(dāng)我們使用 BGSAVE 命令時,Redis 會立刻 fork 出一個子進(jìn)程,子進(jìn)程會執(zhí)行『將內(nèi)存中的數(shù)據(jù)以 RDB 格式保存到磁盤中』這一過程,而 Redis 服務(wù)在 BGSAVE 工作期間仍然可以處理來自客戶端的請求。

rdbSaveBackground 就是用來處理在后臺將數(shù)據(jù)保存到磁盤上的函數(shù): 

  1. int rdbSaveBackground(char *filename, rdbSaveInfo *rsi) {  
  2.     pid_t childpid;  
  3.     if (hasActiveChildProcess()) return C_ERR;  
  4.     ...  
  5.     if ((childpid = redisFork()) == 0) {  
  6.         int retval;  
  7.         /* Child */  
  8.         redisSetProcTitle("redis-rdb-bgsave");  
  9.         retval = rdbSave(filename,rsi);  
  10.         if (retval == C_OK) {  
  11.             sendChildCOWInfo(CHILD_INFO_TYPE_RDB, "RDB");  
  12.         }  
  13.         exitFromChild((retval == C_OK) ? 0 : 1);  
  14.     } else {  
  15.         /* Parent */  
  16.         ...  
  17.     }  
  18.     ...  

Redis 服務(wù)器會在觸發(fā) BGSAVE 時調(diào)用 redisFork 函數(shù)來創(chuàng)建子進(jìn)程并調(diào)用 rdbSave 在子進(jìn)程中對數(shù)據(jù)進(jìn)行持久化,我們在這里雖然省略了函數(shù)中的一些內(nèi)容,但是整體的結(jié)構(gòu)還是非常清晰的,感興趣的讀者可以在點擊上面的鏈接了解整個函數(shù)的實現(xiàn)。

使用 fork 的目的最終一定是為了不阻塞主進(jìn)程來提升 Redis 服務(wù)的可用性,但是到了這里我們其實能夠發(fā)現(xiàn)兩個問題:

  1.  為什么 fork 之后的子進(jìn)程能夠獲取父進(jìn)程內(nèi)存中的數(shù)據(jù)?
  2.  fork 函數(shù)是否會帶來額外的性能開銷,這些開銷我們怎么樣才可以避免?

既然 Redis 選擇使用了 fork 的方式來解決快照持久化的問題,那就說明這兩個問題已經(jīng)有了答案,首先 fork 之后的子進(jìn)程是可以獲取父進(jìn)程內(nèi)存中的數(shù)據(jù)的,而 fork 帶來的額外性能開銷相比阻塞主線程也一定是可以接受的,只有同時具備這兩點,Redis 最終才會選擇這樣的方案。

設(shè)計

為了分析上一節(jié)提出的兩個問題,我們在這里需要了解以下的這些內(nèi)容,這些內(nèi)容是 Redis 服務(wù)器使用 fork 函數(shù)的前提條件,也是最終促使它選擇這種實現(xiàn)方式的關(guān)鍵:

  1.  通過 fork 生成的父子進(jìn)程會共享包括內(nèi)存空間在內(nèi)的資源;
  2.  fork 函數(shù)并不會帶來明顯的性能開銷,尤其是對內(nèi)存進(jìn)行大量的拷貝,它能通過寫時拷貝將拷貝內(nèi)存這一工作推遲到真正需要的時候;

子進(jìn)程

在計算機編程領(lǐng)域,尤其是 Unix 和類 Unix 系統(tǒng)中,fork 都是一個進(jìn)程用于創(chuàng)建自己拷貝的操作,它往往都是被操作系統(tǒng)內(nèi)核實現(xiàn)的系統(tǒng)調(diào)用,也是操作系統(tǒng)在 *nix 系統(tǒng)中創(chuàng)建新進(jìn)程的主要方法。

當(dāng)程序調(diào)用了 fork 方法之后,我們就可以通過 fork 的返回值確定父子進(jìn)程,以此來執(zhí)行不同的操作:

  •  fork 函數(shù)返回 0 時,意味著當(dāng)前進(jìn)程是子進(jìn)程;
  •  fork 函數(shù)返回非 0 時,意味著當(dāng)前進(jìn)程是父進(jìn)程,返回值是子進(jìn)程的 pid; 
  1. int main() {  
  2.     if (fork() == 0) {  
  3.         // child process  
  4.     } else {  
  5.         // parent process  
  6.     }  

在 fork 的 手冊 中,我們會發(fā)現(xiàn)調(diào)用 fork 后的父子進(jìn)程會運行在不同的內(nèi)存空間中,當(dāng) fork 發(fā)生時兩者的內(nèi)存空間有著完全相同的內(nèi)容,對內(nèi)存的寫入和修改、文件的映射都是獨立的,兩個進(jìn)程不會相互影響。

The child process and the parent process run in separate memory spaces.  At the time of fork() both memory spaces have the same content.  Memory writes, file mappings (mmap(2)), and unmappings (munmap(2)) performed by one of the processes do not affect other.

除此之外,子進(jìn)程幾乎是父進(jìn)程的完整副本(Exact duplicate),然而這兩個進(jìn)程在以下的一些方面會有較小的區(qū)別:

  •  子進(jìn)程用于獨立且唯一的進(jìn)程 ID;
  •  子進(jìn)程的父進(jìn)程 ID 與父進(jìn)程 ID 完全相同;
  •  子進(jìn)程不會繼承父進(jìn)程的內(nèi)存鎖;
  •  子進(jìn)程會重新設(shè)置進(jìn)程資源利用率和 CPU 計時器;
  •  ...

最關(guān)鍵的點在于父子進(jìn)程的內(nèi)存在 fork 時是完全相同的,在 fork 之后進(jìn)行寫入和修改也不會相互影響,這其實就完美的解決了快照這個場景的問題 —— 只需要某個時間點下內(nèi)存中的數(shù)據(jù),而父進(jìn)程可以繼續(xù)對自己的內(nèi)存進(jìn)行修改,這既不會被阻塞,也不會影響生成的快照。

寫時拷貝

既然父進(jìn)程和子進(jìn)程擁有完全相同的內(nèi)存空間并且兩者對內(nèi)存的寫入都不會相互影響,那么是否意味著子進(jìn)程在 fork 時需要對父進(jìn)程的內(nèi)存進(jìn)行全量的拷貝呢?假設(shè)子進(jìn)程需要對父進(jìn)程的內(nèi)存進(jìn)行拷貝,這對于 Redis 服務(wù)來說基本都是災(zāi)難性的,尤其是在以下的兩個場景中:

  1.  內(nèi)存中存儲大量的數(shù)據(jù),fork 時拷貝內(nèi)存空間會消耗大量的時間和資源,會導(dǎo)致程序一段時間的不可用;
  2.  Redis 占用了 10G 的內(nèi)存,而物理機或者虛擬機的資源上限只有 16G,在這時我們就無法對 Redis 中的數(shù)據(jù)進(jìn)行持久化,也就是說 Redis 對機器上內(nèi)存資源的最大利用率不能超過 50%;

如果無法解決上面的兩個問題,使用 fork 來生成內(nèi)存鏡像的方式也無法真正落地,不是一個工程中真正可以使用的方法。

就算脫離了 Redis 的場景,fork 時全量拷貝內(nèi)存也是難以接受的,假設(shè)我們需要在命令行中執(zhí)行一個命令,我們需要先通過 fork 創(chuàng)建一個新的進(jìn)程再通過 exec 來執(zhí)行程序,fork 拷貝的大量內(nèi)存空間對于子進(jìn)程來說可能完全沒有任何作用的,但是卻引入了巨大的額外開銷。

寫時拷貝(Copy-on-Write)的出現(xiàn)就是為了解決這一問題,就像我們在這一節(jié)開頭介紹的,寫時拷貝的主要作用就是將拷貝推遲到寫操作真正發(fā)生時,這也就避免了大量無意義的拷貝操作。在一些早期的 *nix 系統(tǒng)上,系統(tǒng)調(diào)用 fork 確實會立刻對父進(jìn)程的內(nèi)存空間進(jìn)行復(fù)制,但是在今天的多數(shù)系統(tǒng)中,fork 并不會立刻觸發(fā)這一過程:

在 fork 函數(shù)調(diào)用時,父進(jìn)程和子進(jìn)程會被 Kernel 分配到不同的虛擬內(nèi)存空間中,所以在兩個進(jìn)程看來它們訪問的是不同的內(nèi)存:

  •  在真正訪問虛擬內(nèi)存空間時,Kernel 會將虛擬內(nèi)存映射到物理內(nèi)存上,所以父子進(jìn)程共享了物理上的內(nèi)存空間;
  •  當(dāng)父進(jìn)程或者子進(jìn)程對共享的內(nèi)存進(jìn)行修改時,共享的內(nèi)存才會以頁為單位進(jìn)行拷貝,父進(jìn)程會保留原有的物理空間,而子進(jìn)程會使用拷貝后的新物理空間;

在 Redis 服務(wù)中,子進(jìn)程只會讀取共享內(nèi)存中的數(shù)據(jù),它并不會執(zhí)行任何寫操作,只有父進(jìn)程會在寫入時才會觸發(fā)這一機制,而對于大多數(shù)的 Redis 服務(wù)或者數(shù)據(jù)庫,寫請求往往都是遠(yuǎn)小于讀請求的,所以使用 fork 加上寫時拷貝這一機制能夠帶來非常好的性能,也讓 BGSAVE 這一操作的實現(xiàn)變得非常簡單。

總結(jié)

Redis 實現(xiàn)后臺快照的方式非常巧妙,通過操作系統(tǒng)提供的 fork 和寫時拷貝的特性輕而易舉的就實現(xiàn)了這個功能,從這里我們就能看出作者對于操作系統(tǒng)知識的掌握還是非常扎實的,大多人在面對類似的場景時,想到的方法可能就是手動實現(xiàn)類似『寫時拷貝』的特性,然而這不僅增加了工作量,還增加了程序出現(xiàn)問題的可能性。

到這里,我們簡單總結(jié)一下 Redis 為什么在使用 RDB 進(jìn)行快照時會通過子進(jìn)程的方式進(jìn)行實現(xiàn):

  1.  通過 fork 創(chuàng)建的子進(jìn)程能夠獲得和父進(jìn)程完全相同的內(nèi)存空間,父進(jìn)程對內(nèi)存的修改對于子進(jìn)程是不可見的,兩者不會相互影響;
  2.  通過 fork 創(chuàng)建子進(jìn)程時不會立刻觸發(fā)大量內(nèi)存的拷貝,內(nèi)存在被修改時會以頁為單位進(jìn)行拷貝,這也就避免了大量拷貝內(nèi)存而帶來的性能問題;

上述兩個原因中,一個為子進(jìn)程訪問父進(jìn)程提供了支撐,另一個為減少額外開銷做了支持,這兩者缺一不可,共同成為了 Redis 使用子進(jìn)程實現(xiàn)快照持久化的原因。到最后,我們還是來看一些比較開放的相關(guān)問題,有興趣的讀者可以仔細(xì)思考一下下面的問題:

  •     Nginx 的主進(jìn)程會在運行時 fork 一組子進(jìn)程,這些子進(jìn)程可以分別處理請求,還有哪些服務(wù)會使用這一特性?
  •     寫時拷貝其實是一個比較常見的機制,在 Redis 之外還有哪里會用到它?

如果對文章中的內(nèi)容有疑問或者想要了解更多軟件工程上一些設(shè)計決策背后的原因,可以在博客下面留言,作者會及時回復(fù)本文相關(guān)的疑問并選擇其中合適的主題作為后續(xù)的內(nèi)容。

Reference

  •  Redis Persistence
  •  Understanding Redis Background Memory Usage
  •  FAQ · Redis
  •  Copy-on-write
  •  rdbSaveBackground · Redis
  •  Fork (system call)
  •  Which file in kernel specifies fork(), vfork()… to use sys_clone() system call
  •  Trying to understand fork() and Copy-on-Write (COW) 

 

責(zé)任編輯:龐桂玉 來源: 數(shù)據(jù)庫開發(fā)
相關(guān)推薦

2020-01-15 08:42:16

TCP三次握手弱網(wǎng)絡(luò)

2015-07-22 16:46:13

Windows 11理由

2013-08-23 14:22:45

SA系統(tǒng)管理員運維

2020-09-04 15:34:07

C編程語言開發(fā)

2021-12-21 06:09:05

Python切片索引

2021-10-13 06:49:15

網(wǎng)絡(luò) IO

2012-06-27 10:26:19

Surface

2024-06-19 10:26:36

非阻塞IO客戶端

2018-06-20 00:52:05

SD-WANMPLSWAN

2025-09-03 01:55:00

2022-03-30 08:21:57

合并HTTP

2023-03-21 08:02:36

Redis6.0IO多線程

2025-01-17 00:00:00

APIJava線程

2022-08-02 18:37:24

BI系統(tǒng)快照表

2020-03-18 14:08:48

Windows操作系統(tǒng)功能

2020-08-14 09:11:29

RedisQPS數(shù)據(jù)庫

2014-12-26 09:56:50

編程語言

2009-07-27 16:07:27

MySQLOracle

2012-11-13 10:27:45

PythonGo編程語言

2021-05-30 09:25:48

HttpETag 網(wǎng)絡(luò)協(xié)議
點贊
收藏

51CTO技術(shù)棧公眾號

国产小视频你懂的| 亚洲欧洲日产国码无码久久99| 在线免费看91| 国产成人无码精品亚洲| 成人高清免费观看mv| 久久精品国产网站| 久久夜精品香蕉| 激情av中文字幕| 日本视频在线观看免费| 国产一区二区精品久| 一区二区三区四区蜜桃| 国产精品视频500部| 久久久精品福利| 日韩毛片视频| 亚洲国产成人av在线| 成人性做爰aaa片免费看不忠| 免费看美女视频在线网站| 粉嫩欧美一区二区三区高清影视| 亲子乱一区二区三区电影| 日本裸体美女视频| 精品国产影院| 欧美另类一区二区三区| 精品久久一二三| 黄色在线播放网站| 91麻豆6部合集magnet| 国产日韩中文在线| 成人免费看片98欧美| 99久久久国产精品美女| 亚洲美女中文字幕| 日韩av成人网| 日韩电影免费观看高清完整版在线观看| 亚洲一区二区三区自拍| 亚洲午夜激情| 女人偷人在线视频| 国产真实乱对白精彩久久| 91国内精品白嫩初高生| 欧美一级免费视频| 精品久久久久av| 最好看的日本字幕mv视频大全| 久久精品亚洲成在人线av网址| 欧美日韩精品欧美日韩精品一综合| 日韩精品综合在线| 免费在线午夜视频| 久久久国产精品不卡| 国产成人av一区二区三区| 成人福利视频网| 中文字幕第一页在线视频| 精精国产xxxx视频在线野外| 激情都市一区二区| 青青草一区二区| 国产精品第56页| 久久综合五月婷婷| 日韩欧美国产综合在线一区二区三区 | 日韩精品一区在线| 色播五月激情五月| 欧洲成人一区| 欧美在线一区二区| 成人在线观看黄| 涩涩av在线| 激情成人中文字幕| 国产av人人夜夜澡人人爽麻豆| 色老头在线观看| 一区二区三区中文免费| 在线观看成人免费| 亚洲精品一区二区三区新线路| 精品一区二区三区的国产在线播放| 国产精品吹潮在线观看| 亚洲精品中文字幕乱码三区91| 国产精品美女| 色琪琪综合男人的天堂aⅴ视频| aa片在线观看视频在线播放| 精品精品国产毛片在线看| 欧美精品一区二区三区一线天视频 | 亚洲综合好骚| 青青草一区二区| 波多野结衣网站| 日韩高清欧美激情| 国产精品女主播| 日本妇乱大交xxxxx| 麻豆精品国产91久久久久久 | 91麻豆精品国产综合久久久| 欧美福利一区二区| 亚洲一区二区中文字幕在线观看| 精品国产一区二区三区性色av| 日韩三级在线免费观看| 在线免费看黄色片| 91免费黄视频| 玖玖综合伊人| 国产精品欧美久久久久无广告| 亚洲午夜精品久久| 国产二区三区在线| 午夜视频在线观看一区二区 | 亚洲人成人无码网www国产| 精品高清在线| 日韩在线播放av| 久久久久久久久久久97| 国产精品一卡| 国产一区二区丝袜高跟鞋图片| www日本高清| 91视频观看免费| 亚洲v国产v| 免费在线观看的电影网站| 日韩欧美成人精品| 中国黄色片一级| 丁香一区二区| 尤物精品国产第一福利三区| 91成人福利视频| 亚洲影视综合| 亚洲a在线观看| 免费观看成人毛片| 美女在线观看视频一区二区| 欧美一级淫片播放口| www.亚洲激情| 成人夜色视频网站在线观看| 成人久久久久久久| 天天摸夜夜添狠狠添婷婷| 国产欧美日韩久久| 2018日日夜夜| 亚洲欧洲专区| 亚洲欧美国产精品专区久久| www青青草原| 日韩电影一区二区三区四区| 97人人干人人| 国产aⅴ一区二区三区| 久久亚洲影视婷婷| 免费日韩在线观看| 国产黄网站在线观看| 欧美日韩国产在线播放| r级无码视频在线观看| 日韩成人亚洲| 亚洲精品一区二区三区精华液| 国产又粗又猛又爽又黄的视频小说| 亚洲欧洲日本mm| 欧美日韩国产欧| 伊人青青综合网站| 国产一级理论片| 蜜臀av一级做a爰片久久| 国产私拍一区| 在线不卡日本v二区707| 亚洲黄色性网站| 青青在线免费观看视频| 国产精品qvod| 久久成年人免费电影| 又色又爽又黄无遮挡的免费视频| 91首页免费视频| 你真棒插曲来救救我在线观看| vam成人资源在线观看| 中文字幕日韩高清| 久久久999久久久| 久久女同性恋中文字幕| 成年人午夜免费视频| 99久久人爽人人添人人澡| 久久久成人的性感天堂| 国产精品久久久午夜夜伦鲁鲁| 国产欧美1区2区3区| 欧美性猛交久久久乱大交小说 | 国产高清自拍99| 粗大黑人巨茎大战欧美成人| 欧美精品久久99| 麻豆网址在线观看| 亚洲蜜桃视频| 国产精品中文字幕久久久| 精品无人乱码| 日本韩国欧美在线| 婷婷色一区二区三区| 日韩国产在线一| 色噜噜一区二区| 成人在线免费av| 爽爽爽爽爽爽爽成人免费观看| 一区二区视频播放| 国产不卡在线播放| 国产 国语对白 露脸| 免费观看亚洲视频大全| 欧美精品免费在线| 久久精品无码av| 久久欧美中文字幕| 中文久久久久久| 久久一级电影| 成人在线视频网站| 少妇精品一区二区三区| 欧美精品a∨在线观看不卡| 欧美视频裸体精品| 亚洲国产日韩一区无码精品久久久| 日韩激情在线观看| 偷拍盗摄高潮叫床对白清晰| 日韩精品中文字幕一区二区| 久久久久久久久久婷婷| 手机看片福利永久| 日本乱码高清不卡字幕| 日本成人免费在线观看 | 91大神在线播放精品| 日韩电影免费| 中文字幕亚洲区| 女同激情久久av久久| 欧美久久一级| 蜜桃臀一区二区三区| 欧美三级电影网址| thepron国产精品| 97视频在线观看视频免费视频| 亚洲欧洲综合在线| 欧美视频一区二区三区| 欧美在线视频第一页| 91在线免费视频观看| 日本xxxx黄色| 日韩手机在线| 国产精品视频免费在线| av免费网站在线观看| 亚洲精品动漫100p| 亚洲一区精品在线观看| 亚洲高清视频中文字幕| 国产精品入口尤物| 中文幕无线码中文字蜜桃| 亚洲欧洲视频| 亚洲永久激情精品| 精品福利一区| 成人午夜小视频| 亚洲美女久久精品| 精品国产乱码久久久久久牛牛 | 欧美日韩国产限制| 你懂得在线观看| 久久午夜免费电影| 欧美国产日韩另类| 噜噜噜在线观看免费视频日韩| mm131午夜| 国产伦精品一区二区三区千人斩 | 免费萌白酱国产一区二区三区| 国产成人亚洲综合| 九九色在线视频| 中文字幕在线观看亚洲| 日本黄色大片视频| 日韩丝袜情趣美女图片| 精品国产青草久久久久96| 亚洲国产裸拍裸体视频在线观看乱了| 国产激情av在线| 91美女视频网站| 精人妻一区二区三区| 精彩视频一区二区三区| 国产第一页视频| 亚洲黄色毛片| 日韩精品免费一区| 国产精品88久久久久久| 日韩视频在线播放| 中文字幕av一区二区三区人| 国产一区二区无遮挡 | 久久草.com| 风间由美中文字幕在线看视频国产欧美| 国产日韩在线亚洲字幕中文| av在线播放一区| 国产精品69精品一区二区三区| 亚洲女同av| 欧美一级大片在线观看| 免费一二一二在线视频| 97高清免费视频| 第一福利在线视频| 国语自产精品视频在免费| 成人高潮aa毛片免费| 久久久久久久久爱| aaa在线播放视频| 97视频在线观看播放| 欧美日韩在线观看首页| 5566日本婷婷色中文字幕97| 欧美freesex黑人又粗又大| 97视频在线看| 欧亚在线中文字幕免费| 茄子视频成人在线| 成人精品三级| 成人福利网站在线观看| 国产亚洲高清一区| 国产精品久久久久免费| 免费福利视频一区| 你懂的视频在线一区二区| 国产一区2区| 视频一区视频二区视频三区视频四区国产| 欧美丝袜丝交足nylons172| 五月天国产一区| 久久亚洲在线| 国产精品视频网站在线观看| 亚洲午夜极品| 日韩欧美手机在线| 五月婷婷之婷婷| 亚洲国产激情| 免费日韩视频在线观看| 视频精品一区二区| 污网站在线免费| 丰满亚洲少妇av| 30一40一50老女人毛片| 国产精品色在线| 美女毛片在线观看| 色综合天天综合给合国产| 中文字幕欧美在线观看| 91精品国产91久久综合桃花| 日本高清视频www| 一区二区三区视频在线| av在线免费播放| 88xx成人精品| 日韩国产一二三区| 国产精品一区视频| 凹凸成人精品亚洲精品密奴| av中文字幕av| 国产精品女主播一区二区三区| 成人免费在线观看视频网站| 国产伦精品一区二区三区免费迷| 亚洲av成人片色在线观看高潮| 中文字幕的久久| 欧美成人精品欧美一级| 欧美性生活大片免费观看网址 | 欧美男生操女生| 姝姝窝人体www聚色窝| 中文字幕无线精品亚洲乱码一区 | 国产日韩av一区二区| 一区二区三区人妻| 91色婷婷久久久久合中文| 制服丨自拍丨欧美丨动漫丨| 亚洲福利电影网| 中文字幕一区2区3区| 欧美精品一区二区久久婷婷| 日本美女高清在线观看免费| 91精品国产色综合久久不卡98| 亚洲日本中文| 日韩videos| 在线播放日韩| 奇米777在线| 国产精品卡一卡二| www.国产com| 精品美女一区二区三区| 免费黄网在线观看| 国产成人精品国内自产拍免费看 | 成码无人av片在线观看网站| 欧美亚洲一级片| 国产伦精品一区二区三区免费优势 | 日韩电影在线观看中文字幕 | 中国日韩欧美久久久久久久久| 免费在线观看av电影| 成人黄色午夜影院| 欧美日韩中文一区二区| 日韩欧美国产免费| 成人成人成人在线视频| 裸体武打性艳史| 欧美日韩精品是欧美日韩精品| 久久经典视频| 欧美一级片一区| 噜噜噜天天躁狠狠躁夜夜精品| 影音先锋男人的网站| 美女久久久精品| 国产综合精品在线| 在线精品视频免费播放| 日韩成人黄色| 欧美性受xxx| 夜夜春成人影院| 亚洲精品无码久久久久久| 99re成人精品视频| 日韩成人在线免费视频| 亚洲国产精品成人一区二区| 人交獸av完整版在线观看| 亚洲aⅴ日韩av电影在线观看| 国产国产精品| www.桃色.com| 亚洲人成精品久久久久久| 91亚洲精品国偷拍自产在线观看 | 91麻豆免费在线视频| 国产在线拍偷自揄拍精品| 欧美成人激情| 国产成人美女视频| 亚洲婷婷综合色高清在线| 国产精品亚洲lv粉色| 欧美插天视频在线播放| 日韩欧美中文字幕一区二区三区 | 97超碰在线免费观看| 日韩欧美黄色动漫| 国产美女性感在线观看懂色av| 国产精品久久久久99| 日韩啪啪电影网| 亚洲精品成人在线播放| 一区二区久久久久| 欧美一级特黄aaaaaa大片在线观看| 久久久久免费精品国产| 欧美深夜视频| 国产精品久久久久久网站 | 理论在线观看| 日韩美女在线看| 欧美成免费一区二区视频| 欧美性猛交xx| 亚洲国产cao| 九色视频在线观看免费播放 | 四虎精品欧美一区二区免费| 成人一道本在线| 中文字幕视频网站| 色综合伊人色综合网站| 亚洲免费一区三区| 黄色动漫网站入口| 国产精品久久久久一区| 精品国产va久久久久久久| 2018中文字幕一区二区三区| 精品久久中文| 日本一区二区免费视频| 色哟哟在线观看一区二区三区| 黄av在线播放| 国外成人免费视频| 蜜桃av噜噜一区二区三区小说| 青娱乐国产在线|