青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

牽著老婆滿街逛

嚴(yán)以律己,寬以待人. 三思而后行.
GMail/GTalk: yanglinbo#google.com;
MSN/Email: tx7do#yahoo.com.cn;
QQ: 3 0 3 3 9 6 9 2 0 .

Memcached通信協(xié)議(中文版)

轉(zhuǎn)載自:http://www.cnblogs.com/kevintian/articles/1197681.html

協(xié)議
關(guān)鍵字 Keys
命令Commands
超時時間 Expiration times
錯誤信息 Error strings
存儲命令 Storage commands
讀取命令 Retrieval command
刪除 Deletion
增加/減少 Increment/Decrement
統(tǒng)計(jì) Statistics
多用途統(tǒng)計(jì) General-purpose statistics
其他命令 Other commands
UDP協(xié)議 UDP protocol

協(xié)議

       memcached的客戶端通過TCP連接與服務(wù)器通信(UDP協(xié)議的接口也可以使用,詳細(xì)說明請參考”UDP 協(xié)議部分)。一個給定的運(yùn)行中的memcached服務(wù)器在某個(可配置的)端口上監(jiān)聽連接;客戶端連接該端口,發(fā)送命令給服務(wù)器,讀取反饋,最后關(guān)閉連接。

       沒有必要發(fā)送一個專門的命令去結(jié)束會話??蛻舳丝梢栽诓恍枰撨B接的時候就關(guān)閉它。注意:我們鼓勵客戶端緩存它們與服務(wù)器的連接,而不是每次要存儲或讀取數(shù)據(jù)的時候再次重新建立與服務(wù)器的連接。memcache同時打開很多連接不會對性能造成到大的影響,這是因?yàn)?/span>memcache在設(shè)計(jì)之處,就被設(shè)計(jì)成即使打開了很多連接(數(shù)百或者需要時上千個連接)也可以高效的運(yùn)行。緩存連接可以節(jié)省與服務(wù)器建立TCP連接的時間開銷(于此相比,在服務(wù)器段為建立一個新的連接所做準(zhǔn)備的開銷可以忽略不計(jì))。

       memcache通信協(xié)議有兩種類型的數(shù)據(jù):文本行和非結(jié)構(gòu)化數(shù)據(jù)。文本行用來發(fā)送從客戶端到服務(wù)器的命令以及從服務(wù)器回送的反饋信息。非結(jié)構(gòu)化的數(shù)據(jù)用在客戶端希望存儲或者讀取數(shù)據(jù)時。服務(wù)器會以字符流的形式嚴(yán)格準(zhǔn)確的返回相應(yīng)數(shù)據(jù)在存儲時存儲的數(shù)據(jù)。服務(wù)器不關(guān)注字節(jié)序,它也不知道字節(jié)序的存在。memcahce對非結(jié)構(gòu)化數(shù)據(jù)中的字符沒有任何限制,可以是任意的字符,讀取數(shù)據(jù)時,客戶端可以在前次返回的文本行中確切的知道接下來的數(shù)據(jù)塊的長度。

       文本行通常以“"r"n”結(jié)束。非結(jié)構(gòu)化數(shù)據(jù)通常也是以“"r"n”結(jié)束,盡管"r、"n或者其他任何8位字符可以出現(xiàn)在數(shù)據(jù)塊中。所以當(dāng)客戶端從服務(wù)器讀取數(shù)據(jù)時,必須使用前面提供的數(shù)據(jù)塊的長度,來確定數(shù)據(jù)流的結(jié)束,二不是依據(jù)跟隨在字符流尾部的“"r"n”來確定數(shù)據(jù)流的結(jié)束,盡管實(shí)際上數(shù)據(jù)流格式如此。

關(guān)鍵字 Keys

memcached使用關(guān)鍵字來區(qū)分存儲不同的數(shù)據(jù)。關(guān)鍵字是一個字符串,可以唯一標(biāo)識一條數(shù)據(jù)。當(dāng)前關(guān)鍵字的長度限制是250個字符(當(dāng)然目前客戶端似乎沒有需求用這么長的關(guān)鍵字);關(guān)鍵字一定不能包含控制字符空格

命令Commands

memcahe3種類型的命令:

l         存儲命令3個命令:setaddreplace)要求服務(wù)器安裝關(guān)鍵字存儲數(shù)據(jù)??蛻舳税l(fā)送一個命令行,然后一個數(shù)據(jù)塊;命令執(zhí)行后客戶端等待一行反饋,用來表示命令執(zhí)行成功與否。

l         讀取命令-- (只有1個命令:get)要求服務(wù)器根據(jù)一組關(guān)鍵字讀取數(shù)據(jù)(在一個請求總可以包含一個或多個關(guān)鍵字)??蛻舳税l(fā)送一個包含請求關(guān)鍵字的命令行;命令傳遞到服務(wù)器后,服務(wù)器就查找每一個關(guān)鍵字下的數(shù)據(jù),然戶將數(shù)據(jù)以“一個關(guān)鍵字?jǐn)?shù)據(jù),一個反饋信息行跟著一個數(shù)據(jù)塊”的格式回送數(shù)據(jù),直到服務(wù)器發(fā)送“END”的反饋行。

l         其他命令,如flush_all,version等。這些命令不使用非結(jié)構(gòu)化的數(shù)據(jù)。對于這些命令,客戶端發(fā)送一個文本的命令行,根據(jù)命令的特性等待一行數(shù)據(jù)或者在最后一行以“END“結(jié)尾的幾行反饋信息。

所有的命令行總是以命令的名字開始,緊接著是以空格分割的參數(shù)。命令名稱都是小寫,并且是大小寫敏感的。

超時時間 Expiration times

       一些發(fā)送到服務(wù)器的命令包含超時時間(該超時時間對應(yīng)于:數(shù)據(jù)項(xiàng)保存時間;客戶端操作限時)。在這些例子中,被發(fā)送的真實(shí)時間要么是UNIX時間戳(自197011零時起的秒數(shù)數(shù)值),或者從當(dāng)前時間開始算起的秒數(shù)。對于后一種情況,秒數(shù)的數(shù)值不能超過60*60*24*3030天的秒數(shù));如果秒數(shù)的數(shù)值大于了這個數(shù)值,服務(wù)器會認(rèn)為該數(shù)值是UNIX時間戳,而不是自當(dāng)前時間開始的秒數(shù)偏移值。

錯誤信息 Error strings

       每個命令都有可能被反饋以一個錯誤消息。這些錯誤消息有以下三個類型:

l         “ERROR"r"n” 

意味著客戶端發(fā)送了一個在協(xié)議中不存在的命令。

l         "CLIENT_ERROR <error>"r"n"

表示客戶端輸入的命令行上存在某種錯誤,輸入不符合協(xié)議規(guī)定。<error>是一個人工可讀(human-readable)的錯誤注釋。

l         "SERVER_ERROR <error>"r"n"

表示服務(wù)器在執(zhí)行命令時發(fā)生了某些錯誤,致使服務(wù)器無法執(zhí)行下去。<error>也是一個人工可讀(human-readable)的錯誤注釋。在一些情況下,錯誤導(dǎo)致服務(wù)器不能再為客戶端服務(wù)(這樣的情況很少發(fā)生),服務(wù)器就會在發(fā)生錯誤消息后主動關(guān)閉連接。這也是服務(wù)器主動關(guān)閉到客戶端連接的唯一情況。

       后續(xù)秒數(shù)各種命令的時候,我們不再贅述錯誤消息的情況,當(dāng)我們要清楚錯誤是存在的,不可忽略。

存儲命令 Storage commands

       首先,客戶端發(fā)生如下這樣的命令:

<command name> <key> <flags> <exptime> <bytes>"r"n

<data block>"r"n

其中:

<command name>  set、add或者replace。set表示存儲該數(shù)據(jù);add表示如果服務(wù)器沒有保存該關(guān)鍵字的情況下,存儲該數(shù)據(jù);replace表示在服務(wù)器已經(jīng)擁有該關(guān)鍵字的情況下,替換原有內(nèi)容。

<key>是客戶端要求服務(wù)器存儲數(shù)據(jù)的關(guān)鍵字。

<flags>是一個16位的無符號整數(shù),服務(wù)器將它和數(shù)據(jù)一起存儲并且當(dāng)該數(shù)據(jù)被檢索時一起返回??蛻舳丝赡苁褂迷摂?shù)值作為一個位圖來存儲特殊數(shù)據(jù)信息;這個字段對服務(wù)器不是透明的。

<exptime>是超時時間。如果值為0表示該數(shù)據(jù)項(xiàng)永遠(yuǎn)不超時(但有時候該數(shù)據(jù)項(xiàng)可能被刪除以為其他數(shù)據(jù)騰出空間);如果值不為0,可能是絕對的UNIX時間,也可能是自現(xiàn)在開始的偏移值,它保證客戶段在這個超時時間到達(dá)后,客戶端將取不到該數(shù)據(jù)項(xiàng)。

<bytes>是隨后數(shù)據(jù)的字節(jié)數(shù),不包括終結(jié)符”"r"n”<bytes>有可能是0,它后面將是一個空的數(shù)據(jù)塊。

<data block>是真正要存儲數(shù)據(jù)流。

       發(fā)送命令行和數(shù)據(jù)后,客戶端等待反饋,可以是如下幾種情況:

l         "STORED"r"n"              表示存儲數(shù)據(jù)成功。

l         "NOT_STORED"r"n"    表示發(fā)送的數(shù)據(jù)沒有存儲,但這不因?yàn)殄e誤,而是發(fā)生在add或者replace命令不能滿足條件時,或者數(shù)據(jù)項(xiàng)正處于要刪除的隊(duì)列中。

l         錯誤消息

讀取命令 Retrieval command:

       讀取命令如下所示:

get <key>*"r"n

<key>*表示一個或多個使用空格分割的關(guān)鍵字字符串。

       發(fā)送命令后,客戶端等待返回一個或多個數(shù)據(jù)項(xiàng),每個數(shù)據(jù)項(xiàng)的格式是一個文本行,后跟著一個數(shù)據(jù)塊。當(dāng)所有的數(shù)據(jù)項(xiàng)發(fā)送完畢后,服務(wù)器發(fā)送字符串”END"r"n”表示服務(wù)器反饋數(shù)據(jù)的結(jié)束。

       返回?cái)?shù)據(jù)項(xiàng)的格式如下:

VALUE <key> <flags> <bytes>"r"n

<data block>"r"n

<key>是發(fā)生數(shù)據(jù)項(xiàng)的關(guān)鍵字。

       <flags>是存儲該數(shù)據(jù)項(xiàng)時,客戶端命令中的標(biāo)志字段。

       <bytes>是緊跟文本行后數(shù)據(jù)塊的長度,不包括終結(jié)符”"r"n”。

<data block>是數(shù)據(jù)項(xiàng)的數(shù)據(jù)部分。

       如果請求命令行中的有些關(guān)鍵字對應(yīng)的數(shù)據(jù)項(xiàng)沒有被返回,這意味著服務(wù)器沒有該關(guān)鍵字標(biāo)示下的數(shù)據(jù)項(xiàng)(有可能是從來沒有被存儲過,或者存儲過但被刪除掉以騰出內(nèi)存空間,或者數(shù)據(jù)項(xiàng)超時了,再或者它被某個客戶端刪除了)。

刪除 Deletion

刪除命令允許直接刪除數(shù)據(jù)項(xiàng),命令格式如下:

delete <key> <time>"r"n

<key>是客戶端希望服務(wù)器刪除數(shù)據(jù)項(xiàng)的關(guān)鍵字

<time>是客戶端希望服務(wù)器阻止addreplace命令使用該關(guān)鍵字?jǐn)?shù)據(jù)項(xiàng)的秒數(shù),可以是相對時間也可以是UNIX的絕對時間。在這段時間內(nèi),數(shù)據(jù)項(xiàng)被放入一個刪除隊(duì)列,它不能被get命令讀取,在其上使用addreplace也會失敗,但使用set命令可以成功。當(dāng)這個時間過去后,數(shù)據(jù)項(xiàng)從服務(wù)器的內(nèi)存中真正的刪除。該參數(shù)是可選參數(shù),如果不存在默認(rèn)為0,這意味著立即從服務(wù)器上刪除。

       服務(wù)器返回信息:

l         "DELETED"r"n"          表示數(shù)據(jù)項(xiàng)刪除成功

l         "NOT_FOUND"r"n"      表示該關(guān)鍵字指定的數(shù)據(jù)項(xiàng)在服務(wù)器上沒有找到

l         其他錯誤消息

下面的flush_all命令使得所有存在的數(shù)據(jù)項(xiàng)立即失效。

增加/減少 Increment/Decrement

       “incr””decr”命令用來修改以及存在的數(shù)據(jù)項(xiàng)的內(nèi)容,增加或者減少它。該數(shù)據(jù)被當(dāng)作32位無符號整數(shù)處理。如果當(dāng)前數(shù)據(jù)非此類數(shù)據(jù),則經(jīng)將該內(nèi)容當(dāng)作0來處理。另外在其上施加incr/decr命令的數(shù)據(jù)項(xiàng)必須是業(yè)已存在的;對于不存在的數(shù)據(jù)項(xiàng)不會將它作為0對待,而是以錯誤結(jié)束。

       客戶端發(fā)送命令行如下格式:

incr <key> <value>"r"n

或者

decr <key> <value>"r"n

<key>是客戶端要修改數(shù)據(jù)項(xiàng)的關(guān)鍵字

<value>是對該數(shù)據(jù)行進(jìn)行增加或者減少的操作數(shù)。它是一個32位的無符號整數(shù)。

       反饋信息有如下幾種:

l         "NOT_FOUND"r"n"

表明在服務(wù)器上沒有找到該數(shù)據(jù)項(xiàng)。

l         "<value>"r"n "

value是執(zhí)行完增加/減少命令后,該數(shù)據(jù)項(xiàng)新的數(shù)值。

l         錯誤信息。

注意到“decr”命令的下溢問題,如果客戶端嘗試減少的數(shù)量小于0,其結(jié)果是0。“incr”命令的溢出問題沒有檢查。另外減少一個數(shù)據(jù)而使它減少了長度,但不保證減少它返回時的長度。該數(shù)字可能是附加空格的數(shù)字,但這只是實(shí)現(xiàn)的優(yōu)化,所以你不能相信它。

統(tǒng)計(jì) Statistics

       stats”命令用來查詢服務(wù)器的運(yùn)行情況和其他內(nèi)部數(shù)據(jù)。它有兩種情況,以有無參數(shù)來區(qū)分:

stats"r"n

或者

stats <args>"r"n

       第一種情況它導(dǎo)致服務(wù)器輸出一般統(tǒng)計(jì)信息以及設(shè)置信息和文檔化內(nèi)容。

       第二種情況根據(jù)<args>具體的參數(shù),服務(wù)器發(fā)送各種內(nèi)部數(shù)據(jù)。這部分沒有在協(xié)議中文檔化,因?yàn)榕cmemcache的開發(fā)者有關(guān)其可能是隨時變化的。

多用途統(tǒng)計(jì) General-purpose statistics

       當(dāng)接收到?jīng)]有帶參數(shù)的“stats”命令后,服務(wù)器發(fā)送許多類似與如下格式的文本行:

STAT <name> <value>"r"n

       當(dāng)類似的文本行全部發(fā)送完畢后,服務(wù)器發(fā)送如下的文本行結(jié)束反饋信息:

END"r"n

       在所有STAT文本行中,<name>是該統(tǒng)計(jì)項(xiàng)目的名稱,<value>是其數(shù)據(jù)。下面是一份stats命令反饋的所有統(tǒng)計(jì)項(xiàng)目的列表,后面跟著其值的數(shù)據(jù)類型。在數(shù)據(jù)類型列中,”32u”表示一個32位無符號整數(shù),”64u”表示一個64位無符號整數(shù),”32u:32u”表示是兩個用冒號分割的32位無符號整數(shù)。

名稱

值類型

含義

pid

32u

服務(wù)器進(jìn)程的進(jìn)程號

uptime

32u

服務(wù)器自運(yùn)行以來的秒數(shù)

time

32u

當(dāng)前服務(wù)器上的UNIX時間

version

string

服務(wù)器的版本字符串

rusage_user

32u:32u

服務(wù)器進(jìn)程積累的用戶時間(秒:微妙)

rusage_system

32u:32u

服務(wù)器進(jìn)程積累的系統(tǒng)時間(秒:微妙)

curr_items

32u

當(dāng)前在服務(wù)器上存儲的數(shù)據(jù)項(xiàng)的個數(shù)

total_items

32u

在服務(wù)器上曾經(jīng)保存過的數(shù)據(jù)項(xiàng)的個數(shù)

bytes

64u

當(dāng)前服務(wù)器上保存數(shù)據(jù)的字節(jié)數(shù)

curr_connections

32u

處于打開狀態(tài)的連接數(shù)目

total_connections

32u

曾經(jīng)打開過的所有連接的數(shù)目

connection_structures

32u

服務(wù)器分配的連接結(jié)構(gòu)體的個數(shù)

cmd_get

64u

get命令請求的次數(shù)

cmd_set

64u

存儲命令請求的次數(shù)

get_hits

64u

關(guān)鍵字獲取命中的次數(shù)

get_misses

64u

關(guān)鍵字獲取沒有命中的次數(shù)

evictions

64u

所有因超時而被替換出內(nèi)存的數(shù)據(jù)項(xiàng)的個數(shù)

bytes_read

64u

服務(wù)器從網(wǎng)絡(luò)上讀取到的字節(jié)數(shù)

bytes_write

64u

服務(wù)器向網(wǎng)絡(luò)上寫的字節(jié)數(shù)

limit_maxbytes

64u

服務(wù)器允許存儲數(shù)據(jù)的最大值

其他命令 Other commands

"flush_all"是一個帶有可選數(shù)字參數(shù)的命令,它的執(zhí)行總是成功的,服務(wù)器總是響應(yīng)以"OK"r"n"字符串。它的作用是使得所有的數(shù)據(jù)項(xiàng)立即(默認(rèn))或者經(jīng)過一個指定的超時時間后全部失效。在置數(shù)據(jù)項(xiàng)失效后,對于讀取命令將不會返回任何內(nèi)容,除非在失效后這些數(shù)據(jù)再次被存儲。flush_all并沒有真正的釋放這些存在過的數(shù)據(jù)項(xiàng)占用的內(nèi)存空間;數(shù)據(jù)空間真實(shí)被占用的情況發(fā)生在使用新的數(shù)據(jù)項(xiàng)覆蓋老的數(shù)據(jù)項(xiàng)時。該命令作用最準(zhǔn)確的定義是:它導(dǎo)致所有更新時間早于該命令設(shè)定的時間點(diǎn)的數(shù)據(jù)項(xiàng),在被檢索時被忽略,其表現(xiàn)就像已被刪除了一樣。

       使用帶有延時flush_all命令的目的是,當(dāng)你有個memcached服務(wù)器池,需要刷新所有的內(nèi)容時,但不能在同一時間刷洗所有的服務(wù)器,這樣就可能因?yàn)樗械姆?wù)器突然都要重新建立數(shù)據(jù)內(nèi)容,而導(dǎo)致數(shù)據(jù)庫壓力的顛簸。延時選項(xiàng)允許你設(shè)置他們隔10秒失效(設(shè)置第一個延時為0,第二個10秒,第三個20秒等等)。

"version"是一個沒有參數(shù)的命令,命令格式如下:

version"r"n

       服務(wù)器發(fā)回的反饋信息如下:

l         "VERSION <version>"r"n"

<version>是從服務(wù)器返回的版本字符串。

l         錯誤消息。

"verbosity"是一個帶有數(shù)字參數(shù)的命令。它的執(zhí)行總是成功的,服務(wù)器反饋以"OK"r"n"表示執(zhí)行完成。它用來設(shè)置日志輸出的詳細(xì)等級。                                        

"quit"是一個沒有參數(shù)的命令。其格式如下:

quit"r"n

       當(dāng)服務(wù)器接受到此命令后,就關(guān)閉與該客戶的連接。不管怎樣,客戶端可以在任意不需要該連接的時刻關(guān)閉它,而不需要發(fā)送該命令。

UDP協(xié)議 UDP protocol

       當(dāng)基于TCP協(xié)議的連接數(shù)超過TCP連接的上限時,我們可以使用UDP協(xié)議來替代。但是UDP協(xié)議接口不提供可靠的傳輸,所以多用在不嚴(yán)格要求成功的操作上;典型的get請求會因?yàn)榫彺娴膯栴},引起丟失或者不完整的傳輸。

       每個UDP數(shù)據(jù)包包含一個簡單的幀頭,接著就是如TCP協(xié)議描述的數(shù)據(jù)格式的數(shù)據(jù)流。在當(dāng)前的實(shí)現(xiàn)中,請求必須包含在一個單獨(dú)的UDP數(shù)據(jù)包中,但返回可能分散在多個數(shù)據(jù)包中。(唯一的可以拆分請求數(shù)據(jù)包的是大的多關(guān)鍵字get請求和set請求,鑒于可靠性相比而言他們更適合用TCP傳輸。)

       幀頭有8字節(jié)長,如下是其格式(所有的數(shù)字都是16位網(wǎng)絡(luò)字節(jié)序整形,高位在前):

       0 - 1                     請求ID

       2 - 3                     序列號

       4 - 5                     在當(dāng)前的消息中含有的數(shù)據(jù)包的個數(shù)

       6-7                保留以后使用,當(dāng)前必須為0

       請求ID由客戶端提供。它的典型值是一個從隨機(jī)種子開始遞增值,實(shí)際上客戶端可以使用任意的請求ID。服務(wù)器的反饋信息中包含了和請求命令中一樣的請求ID。客戶端憑借這個請求ID區(qū)分來自于同一服務(wù)器的反饋。每一個包含未知請求ID的數(shù)據(jù)包,可能是由于延時反饋造成,這些數(shù)據(jù)包都應(yīng)該拋棄不用。

       序列號從0n-1,n是消息中總的數(shù)據(jù)包的個數(shù)??蛻舳税凑招蛄刑柵判蛑亟M數(shù)據(jù)包;結(jié)果序列中包含了一個完整的如TCP協(xié)議一樣格式的反饋信息(包含了“"r"n”總結(jié)字符串)。

posted on 2014-06-17 14:31 楊粼波 閱讀(640) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久国产精品亚洲va麻豆| 亚洲综合国产精品| 欧美激情第3页| 嫩模写真一区二区三区三州| 乱人伦精品视频在线观看| 久久艳片www.17c.com| 蜜桃av一区二区| 欧美日韩1234| 国产欧美视频在线观看| 尤物yw午夜国产精品视频| 91久久夜色精品国产九色| 亚洲免费黄色| 久久aⅴ国产欧美74aaa| 女同一区二区| 99视频精品| 久久久国产精品亚洲一区| 欧美激情一区二区在线| 欧美日韩亚洲不卡| 国产麻豆日韩欧美久久| 亚洲福利国产精品| 亚洲小说春色综合另类电影| 久久国产精品免费一区| 亚洲国产精品精华液2区45 | 性欧美大战久久久久久久免费观看| 亚洲一区在线播放| 久久亚洲图片| 99国内精品| 老司机精品视频一区二区三区| 欧美区视频在线观看| 国产一区二区在线观看免费播放| 99国产精品久久久| 老司机aⅴ在线精品导航| 9l国产精品久久久久麻豆| 老牛国产精品一区的观看方式| 欧美日韩一区三区| 亚洲国产精品电影| 久久精品99无色码中文字幕| 亚洲久久视频| 牛牛国产精品| 激情综合色综合久久| 午夜综合激情| 日韩一级精品| 欧美精品二区三区四区免费看视频| 国产香蕉97碰碰久久人人| 亚洲一区网站| 亚洲精品视频中文字幕| 老司机免费视频一区二区| 国产亚洲精品一区二555| 亚洲欧美精品一区| 一区二区高清视频在线观看| 欧美精品久久久久久久久久| 亚洲国产欧美日韩精品| 蜜桃av噜噜一区| 欧美一区二区视频在线观看2020| 国产精品xxx在线观看www| 99国产精品国产精品毛片| 亚洲国产精品一区二区第四页av| 久久久久国产一区二区三区| 国产一区二区三区久久久| 久久动漫亚洲| 欧美在线|欧美| 韩国亚洲精品| 欧美ab在线视频| 老司机免费视频一区二区| 亚洲高清色综合| 亚洲国产欧洲综合997久久| 美女主播精品视频一二三四| 亚洲经典三级| 亚洲看片一区| 国产精品日韩精品欧美在线| 午夜欧美理论片| 午夜精品久久久久久99热软件| 国产美女高潮久久白浆| 美日韩精品视频免费看| 亚洲青涩在线| 狠狠综合久久av一区二区小说 | 久久久噜噜噜久久中文字幕色伊伊| 国产精品自拍视频| 欧美中文字幕精品| 久久久青草婷婷精品综合日韩| 亚洲高清在线播放| 亚洲精品国产精品国自产在线| 欧美日韩国产首页在线观看| 午夜精品一区二区三区四区| 亚洲欧美在线免费观看| 在线看片欧美| 9国产精品视频| 国产亚洲欧美一区| 亚洲电影第三页| 国产精品美女主播在线观看纯欲| 久久久www成人免费精品| 免费观看日韩av| 亚洲欧美日韩在线高清直播| 久久久久久久久久久一区| 一本久久综合亚洲鲁鲁| 欧美一区二区在线播放| 99re6热在线精品视频播放速度| 亚洲一区二区三区免费观看| 亚洲电影免费在线| 亚洲午夜电影网| 亚洲国产一区二区视频| 午夜精品久久久久久99热软件| 最新国产の精品合集bt伙计| 亚洲深夜福利| 亚洲理论在线| 久久久精品免费视频| 亚洲免费影视| 欧美精品日韩一区| 久久综合色播五月| 国产精品自拍小视频| 日韩一区二区免费看| 在线成人av.com| 亚洲欧美日韩在线一区| 一本综合精品| 欧美成人午夜激情| 久久亚洲高清| 国产女主播视频一区二区| 日韩写真在线| aaa亚洲精品一二三区| 免播放器亚洲一区| 久久综合精品国产一区二区三区| 国产精品久久久久aaaa| 亚洲精品一区在线观看香蕉| 亚洲国产精品久久久久婷婷老年| 欧美怡红院视频一区二区三区| 午夜精品福利电影| 国产精品久久国产愉拍| avtt综合网| 中文欧美日韩| 欧美日韩精品一本二本三本| 亚洲国产欧美日韩| 亚洲精品免费网站| 免费一级欧美片在线观看| 国产精品久久久久高潮| 亚洲人人精品| 欧美制服丝袜第一页| 久久精品国产清高在天天线| 国产精品日韩高清| 亚洲欧美日韩另类| 久久黄色级2电影| 国产一区91精品张津瑜| 亚洲欧美在线aaa| 久久久久久高潮国产精品视| 国产无一区二区| 性色av一区二区三区在线观看| 午夜日韩电影| 国内精品一区二区| 浪潮色综合久久天堂| 欧美国产亚洲视频| 日韩一级大片| 国产精品久久久久久久久搜平片| 亚洲一区www| 久久久久久自在自线| 亚洲大片av| 欧美日韩一区二区在线视频 | 性亚洲最疯狂xxxx高清| 国产欧美日韩精品a在线观看| 亚洲男女自偷自拍| 裸体丰满少妇做受久久99精品 | 亚洲精品日韩久久| 欧美日韩免费在线观看| 亚洲自拍偷拍色片视频| 久久女同精品一区二区| 亚洲国产成人午夜在线一区| 欧美精品久久一区| 性亚洲最疯狂xxxx高清| 欧美黄色视屏| 亚洲欧美在线一区二区| 在线成人黄色| 欧美三级午夜理伦三级中视频| 午夜亚洲福利| 亚洲第一区在线观看| 亚洲欧美国产毛片在线| 一区二区亚洲精品| 欧美午夜一区| 久久影院亚洲| 亚洲一区激情| 亚洲激情在线观看视频免费| 欧美在线视频一区二区三区| 亚洲精品国产系列| 国产一区二区欧美日韩| 欧美日韩精品在线观看| 久久一区中文字幕| 亚洲在线观看视频| 亚洲人精品午夜| 免费视频一区| 欧美一区激情| 亚洲一区二区在线免费观看视频| 一区在线免费| 国产女主播一区二区三区| 欧美精品午夜视频| 麻豆精品一区二区av白丝在线| 中国女人久久久| 亚洲精品久久在线| 亚洲第一精品久久忘忧草社区| 久久精品91| 午夜日韩av| 亚洲欧美高清| 亚洲综合久久久久| 亚洲欧美激情四射在线日 |