国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频

Redis單線程已經很快了,為什么6.0要引入多線程?帶來什么優(yōu)勢?

共 15823字,需瀏覽 32分鐘

 ·

2021-04-25 11:53


來源 | r6d.cn/b8b7


Redis作為一個基于內存的緩存系統(tǒng),一直以高性能著稱,因沒有上下文切換以及無鎖操作,即使在單線程處理情況下,讀速度仍可達到11萬次/s,寫速度達到8.1萬次/s。但是,單線程的設計也給Redis帶來一些問題:
  • 只能使用CPU一個核;
  • 如果刪除的鍵過大(比如Set類型中有上百萬個對象),會導致服務端阻塞好幾秒;
  • QPS難再提高。

針對上面問題,Redis在4.0版本以及6.0版本分別引入了Lazy Free以及多線程IO,逐步向多線程過渡,下面將會做詳細介紹。

單線程原理

都說Redis是單線程的,那么單線程是如何體現的?如何支持客戶端并發(fā)請求的?為了搞清這些問題,首先來了解下Redis是如何工作的。

Redis服務器是一個事件驅動程序,服務器需要處理以下兩類事件:

  • 文件事件:Redis服務器通過套接字與客戶端(或者其他Redis服務器)進行連接,而文件事件就是服務器對套接字操作的抽象;服務器與客戶端的通信會產生相應的文件事件,而服務器則通過監(jiān)聽并處理這些事件來完成一系列網絡通信操作,比如連接accept,read,writeclose等;時間事件:Redis服務器中的一些操作(比如serverCron函數)需要在給定的時間點執(zhí)行,而時間事件就是服務器對這類定時操作的抽象,比如過期鍵清理,服務狀態(tài)統(tǒng)計等。

如上圖,Redis將文件事件和時間事件進行抽象,時間輪訓器會監(jiān)聽I/O事件表,一旦有文件事件就緒,Redis就會優(yōu)先處理文件事件,接著處理時間事件。在上述所有事件處理上,Redis都是以單線程形式處理,所以說Redis是單線程的。此外,如下圖,Redis基于Reactor模式開發(fā)了自己的I/O事件處理器,也就是文件事件處理器,Redis在I/O事件處理上,采用了I/O多路復用技術,同時監(jiān)聽多個套接字,并為套接字關聯不同的事件處理函數,通過一個線程實現了多客戶端并發(fā)處理。

正因為這樣的設計,在數據處理上避免了加鎖操作,既使得實現上足夠簡潔,也保證了其高性能。當然,Redis單線程只是指其在事件處理上,實際上,Redis也并不是單線程的,比如生成RDB文件,就會fork一個子進程來實現,當然,這不是本文要討論的內容。

Lazy Free機制

如上所知,Redis在處理客戶端命令時是以單線程形式運行,而且處理速度很快,期間不會響應其他客戶端請求,但若客戶端向Redis發(fā)送一條耗時較長的命令,比如刪除一個含有上百萬對象的Set鍵,或者執(zhí)行flushdb,flushall操作,Redis服務器需要回收大量的內存空間,導致服務器卡住好幾秒,對負載較高的緩存系統(tǒng)而言將會是個災難。為了解決這個問題,在Redis 4.0版本引入了Lazy Free,將慢操作異步化,這也是在事件處理上向多線程邁進了一步。

如作者在其博客中所述,要解決慢操作,可以采用漸進式處理,即增加一個時間事件,比如在刪除一個具有上百萬個對象的Set鍵時,每次只刪除大鍵中的一部分數據,最終實現大鍵的刪除。但是,該方案可能會導致回收速度趕不上創(chuàng)建速度,最終導致內存耗盡。因此,Redis最終實現上是將大鍵的刪除操作異步化,采用非阻塞刪除(對應命令UNLINK),大鍵的空間回收交由單獨線程實現,主線程只做關系解除,可以快速返回,繼續(xù)處理其他事件,避免服務器長時間阻塞。

以刪除(DEL命令)為例,看看Redis是如何實現的,下面就是刪除函數的入口,其中,lazyfree_lazy_user_del是是否修改DEL命令的默認行為,一旦開啟,執(zhí)行DEL時將會以UNLINK形式執(zhí)行。

void delCommand(client *c) {
    delGenericCommand(c,server.lazyfree_lazy_user_del);
}

/* This command implements DEL and LAZYDEL. */
void delGenericCommand(client *c, int lazy) {
    int numdel = 0, j;

    for (j = 1; j < c->argc; j++) {
        expireIfNeeded(c->db,c->argv[j]);
        // 根據配置確定DEL在執(zhí)行時是否以lazy形式執(zhí)行
        int deleted  = lazy ? dbAsyncDelete(c->db,c->argv[j]) :
                              dbSyncDelete(c->db,c->argv[j]);
        if (deleted) {
            signalModifiedKey(c,c->db,c->argv[j]);
            notifyKeyspaceEvent(NOTIFY_GENERIC,
                "del",c->argv[j],c->db->id);
            server.dirty++;
            numdel++;
        }
    }
    addReplyLongLong(c,numdel);
}`

同步刪除很簡單,只要把key和value刪除,如果有內層引用,則進行遞歸刪除,這里不做介紹。下面看下異步刪除,Redis在回收對象時,會先計算回收收益,只有回收收益在超過一定值時,采用封裝成Job加入到異步處理隊列中,否則直接同步回收,這樣效率更高?;厥帐找嬗嬎阋埠芎唵?,比如String類型,回收收益值就是1,而Set類型,回收收益就是集合中元素個數。

/* Delete a key, value, and associated expiration entry if any, from the DB.
 * If there are enough allocations to free the value object may be put into
 * a lazy free list instead of being freed synchronously. The lazy free list
 * will be reclaimed in a different bio.c thread. */

#define LAZYFREE_THRESHOLD 64
int dbAsyncDelete(redisDb *db, robj *key) {
    /* Deleting an entry from the expires dict will not free the sds of
     * the key, because it is shared with the main dictionary. */

    if (dictSize(db->expires) > 0) dictDelete(db->expires,key->ptr);

    /* If the value is composed of a few allocations, to free in a lazy way
     * is actually just slower... So under a certain limit we just free
     * the object synchronously. */

    dictEntry *de = dictUnlink(db->dict,key->ptr);
    if (de) {
        robj *val = dictGetVal(de);
        // 計算value的回收收益
        size_t free_effort = lazyfreeGetFreeEffort(val);

        /* If releasing the object is too much work, do it in the background
         * by adding the object to the lazy free list.
         * Note that if the object is shared, to reclaim it now it is not
         * possible. This rarely happens, however sometimes the implementation
         * of parts of the Redis core may call incrRefCount() to protect
         * objects, and then call dbDelete(). In this case we'll fall
         * through and reach the dictFreeUnlinkedEntry() call, that will be
         * equivalent to just calling decrRefCount(). */

        // 只有回收收益超過一定值,才會執(zhí)行異步刪除,否則還是會退化到同步刪除
        if (free_effort > LAZYFREE_THRESHOLD && val->refcount == 1) {
            atomicIncr(lazyfree_objects,1);
            bioCreateBackgroundJob(BIO_LAZY_FREE,val,NULL,NULL);
            dictSetVal(db->dict,de,NULL);
        }
    }

    /* Release the key-val pair, or just the key if we set the val
     * field to NULL in order to lazy free it later. */

    if (de) {
        dictFreeUnlinkedEntry(db->dict,de);
        if (server.cluster_enabled) slotToKeyDel(key->ptr);
        return 1;
    } else {
        return 0;
    }
}`

通過引入a threaded lazy free,Redis實現了對于Slow OperationLazy操作,避免了在大鍵刪除,FLUSHALL,FLUSHDB時導致服務器阻塞。當然,在實現該功能時,不僅引入了lazy free線程,也對Redis聚合類型在存儲結構上進行改進。因為Redis內部使用了很多共享對象,比如客戶端輸出緩存。當然,Redis并未使用加鎖來避免線程沖突,鎖競爭會導致性能下降,而是去掉了共享對象,直接采用數據拷貝,如下,在3.x和6.x中ZSet節(jié)點value的不同實現。

// 3.2.5版本ZSet節(jié)點實現,value定義robj *obj
/* ZSETs use a specialized version of Skiplists */
typedef struct zskiplistNode {
    robj *obj;
    double score;
    struct zskiplistNode *backward;
    struct zskiplistLevel {
        struct zskiplistNode *forward;
        unsigned int span;
    } level[];
} zskiplistNode;

// 6.0.10版本ZSet節(jié)點實現,value定義為sds ele
/* ZSETs use a specialized version of Skiplists */
typedef struct zskiplistNode {
    sds ele;
    double score;
    struct zskiplistNode *backward;
    struct zskiplistLevel {
        struct zskiplistNode *forward;
        unsigned long span;
    } level[];
} zskiplistNode;`

去掉共享對象,不但實現了lazy free功能,也為Redis向多線程跨進帶來了可能,正如作者所述:

Now that values of aggregated data types are fully unshared, and client output buffers don’t contain shared objects as well, there is a lot to exploit. For example it is finally possible to implement threaded I/O in Redis, so that different clients are served by different threads. This means that we’ll have a global lock only when accessing the database, but the clients read/write syscalls and even the parsing of the command the client is sending, can happen in different threads.

多線程I/O及其局限性

Redis在4.0版本引入了Lazy Free,自此Redis有了一個Lazy Free線程專門用于大鍵的回收,同時,也去掉了聚合類型的共享對象,這為多線程帶來可能,Redis也不負眾望,在6.0版本實現了多線程I/O。

實現原理

正如官方以前的回復,Redis的性能瓶頸并不在CPU上,而是在內存和網絡上。因此6.0發(fā)布的多線程并未將事件處理改成多線程,而是在I/O上,此外,如果把事件處理改成多線程,不但會導致鎖競爭,而且會有頻繁的上下文切換,即使用分段鎖來減少競爭,對Redis內核也會有較大改動,性能也不一定有明顯提升。

如上圖紅色部分,就是Redis實現的多線程部分,利用多核來分擔I/O讀寫負荷。在事件處理線程每次獲取到可讀事件時,會將所有就緒的讀事件分配給I/O線程,并進行等待,在所有I/O線程完成讀操作后,事件處理線程開始執(zhí)行任務處理,在處理結束后,同樣將寫事件分配給I/O線程,等待所有I/O線程完成寫操作。

以讀事件處理為例,看下事件處理線程任務分配流程:

int handleClientsWithPendingReadsUsingThreads(void) {
    ...

    /* Distribute the clients across N different lists. */
    listIter li;
    listNode *ln;
    listRewind(server.clients_pending_read,&li);
    int item_id = 0;
    // 將等待處理的客戶端分配給I/O線程
    while((ln = listNext(&li))) {
        client *c = listNodeValue(ln);
        int target_id = item_id % server.io_threads_num;
        listAddNodeTail(io_threads_list[target_id],c);
        item_id++;
    }

    ...

    /* Wait for all the other threads to end their work. */
    // 輪訓等待所有I/O線程處理完
    while(1) {
        unsigned long pending = 0;
        for (int j = 1; j < server.io_threads_num; j++)
            pending += io_threads_pending[j];
        if (pending == 0break;
    }

    ...

    return processed;
}`

I/O線程處理流程:

void *IOThreadMain(void *myid) {
    ...

    while(1) {
        ...

        // I/O線程執(zhí)行讀寫操作
        while((ln = listNext(&li))) {
            client *c = listNodeValue(ln);
            // io_threads_op判斷是讀還是寫事件
            if (io_threads_op == IO_THREADS_OP_WRITE) {
                writeToClient(c,0);
            } else if (io_threads_op == IO_THREADS_OP_READ) {
                readQueryFromClient(c->conn);
            } else {
                serverPanic("io_threads_op value is unknown");
            }
        }
        listEmpty(io_threads_list[id]);
        io_threads_pending[id] = 0;

        if (tio_debug) printf("[%ld] Done\n", id);
    }
}`

局限性

從上面實現上看,6.0版本的多線程并非徹底的多線程,I/O線程只能同時執(zhí)行讀或者同時執(zhí)行寫操作,期間事件處理線程一直處于等待狀態(tài),并非流水線模型,有很多輪訓等待開銷。

Tair多線程實現原理

相較于6.0版本的多線程,Tair的多線程實現更加優(yōu)雅。如下圖,Tair的Main Thread負責客戶端連接建立等,IO Thread負責請求讀取、響應發(fā)送、命令解析等,Worker Thread線程專門用于事件處理。IO Thread讀取用戶的請求并進行解析,之后將解析結果以命令的形式放在隊列中發(fā)送給Worker Thread處理。Worker Thread將命令處理完成后生成響應,通過另一條隊列發(fā)送給IO Thread。為了提高線程的并行度,IO ThreadWorker Thread之間采用無鎖隊列 和管道 進行數據交換,整體性能會更好。

小結

Redis 4.0引入Lazy Free線程,解決了諸如大鍵刪除導致服務器阻塞問題,在6.0版本引入了I/O Thread線程,正式實現了多線程,但相較于Tair,并不太優(yōu)雅,而且性能提升上并不多,壓測看,多線程版本性能是單線程版本的2倍,Tair多線程版本則是單線程版本的3倍。在作者看來,Redis多線程無非兩種思路,I/O threadingSlow commands threading,正如作者在其博客中所說:

I/O threading is not going to happen in Redis AFAIK, because after much consideration I think it’s a lot of complexity without a good reason. Many Redis setups are network or memory bound actually. Additionally I really believe in a share-nothing setup, so the way I want to scale Redis is by improving the support for multiple Redis instances to be executed in the same host, especially via Redis Cluster.

What instead I really want a lot is slow operations threading, and with the Redis modules system we already are in the right direction. However in the future (not sure if in Redis 6 or 7) we’ll get key-level locking in the module system so that threads can completely acquire control of a key to process slow operations. Now modules can implement commands and can create a reply for the client in a completely separated way, but still to access the shared data set a global lock is needed: this will go away.

Redis作者更傾向于采用集群方式來解決I/O threading,尤其是在6.0版本發(fā)布的原生Redis Cluster Proxy背景下,使得集群更加易用。

此外,作者更傾向于slow operations threading(比如4.0版本發(fā)布的Lazy Free)來解決多線程問題。后續(xù)版本,是否會將IO Thread實現的更加完善,采用Module實現對慢操作的優(yōu)化,著實值得期待。

- end -


用心分享面試知識,做有溫度的攻城獅

每天記得對自己說:你是最棒的!


往期推薦:
每一個“好看”,都是對我們最大的
瀏覽 50
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報
評論
圖片
表情
推薦
點贊
評論
收藏
分享

手機掃一掃分享

分享
舉報

感谢您访问我们的网站,您可能还对以下资源感兴趣:

国产秋霞理论久久久电影-婷婷色九月综合激情丁香-欧美在线观看乱妇视频-精品国avA久久久久久久-国产乱码精品一区二区三区亚洲人-欧美熟妇一区二区三区蜜桃视频 日韩成人片| 91人妻无码成人精品一区二区| 黄色国产视频| 一本之道高清数码大全| 午夜福利剧场| 99色色| 91av一区二区三区| 无码一二三四| 成人婷婷五月| 六月婷婷网| 国产一区不卡| 91AV在线观看视频| 日韩一二三四区| 五月婷婷六月丁香| 尤物视频在线观看视频| 夜夜骑天天操| 91久久久久久久91| 97香蕉网| 亚洲成人在线| www.91熊猫成人网| 久久99精品视频| 69精品免费视频| 99久久99久久久精品棕色圆| 中文字幕免费视频| a片视频免费| 先锋影音av资源网| 日本视频在线免费| 免费看黄片的网站| 青青娱乐亚洲无| 乌克兰性爱视频| 五月天操逼| 欧美v在线观看| 2018天天干天天操| 一级a片在线免费观看| 操逼三级| 国产海角视频| 久久久高清无码| 精品无码人妻| 在线中文字幕亚洲| 国产福利网| 欧美AAA| 猛男大粗猛爽H男人味| 91精品国产闺蜜国产在线闺蜜| 亚洲人成小说| 91av视频| 天天干天天干天| 成人伊人网| A级片网站| 亚洲中文无码视频| 韩国无码高清视频| 亚洲成人av在线| 夜夜嗨AⅤ一区二区三区| 中文天堂| 亚洲免费观看高清完| 操逼视频免费在线观看| 欧美一级高清片免费一级a| 亚洲有码在线| 国产av影音| 欧美囗交荫蒂AAAA| 中国老女人日逼| 免费黄色视频大全| 亚洲日韩在线视频观看| 99r| 啊v视频在线| 婷婷五月天社区| 多啪啪免费视频| 五月丁香啪| 99综合久久| 欧美一级片| 国产成人精品av在线观看| 另类老妇奶性生BBwBB| 特黄特色大片BBBB| 色我影院| 黄色电影中文字幕| 先锋影音亚洲AV每日资源网站| 国产日韩欧美综合在线| 久久五月天视频| 韩国无码一区二区三区| 欧美精品18videosex性欧美| 91麻豆精品91久久久ios版| 91在线观看免费视频| 97人人草| 丁香六月婷婷综合缴| 大香蕉伊人在线视频| 久久国产精品免费视频| 久久久www| 天堂在线无码| 日本黄色片在线播放| 欧美你懂的| 色色五月丁香婷婷| 91白浆肆意四溢456| 久久国产综合| 九七在线视频| 日韩免费在线视频| 真实野外打野视频| 黄色大片免费网站| 免费A片在线观看| 欧美伊人久久| 一级无码A片| 成人乱无码AV在线观看| 草逼毛片| 午夜无码在线观看视频| 色色资源网| 一边做一边说国语对白| 胖老板办公室沙发无套爆秘书| 欧美Aⅴ| 丰满大爆乳波霸奶| 人妻97| 香蕉AV777XXX色综合一区| 日韩电影免费在线观看| 国产成人无码一区二区在线| 在线观看成人18| 91丨PORNY丨在线中文| 国产黄在线观看| 成人毛片18| 亚洲三区视频| 良妇露脸15P| 欧美人妻无码| 日韩一区二区免费看| 日韩一级免费视频| 亚洲性爱在线播放| 狼人综合视频| 日韩成人电影| 国产成人无码区免费AV片在线| 特级西西WWW无码| 日韩毛片| 3D动漫啪啪精品一区二区中文字幕 | 殴美A片| 99热综合在线| 日韩无修正| 久久久久成人电影| 亚洲美女免费视频| 91原创国产内射| 日本三级片网站在线观看| 欧美日韩成人在线视频| 河南熟妇搡BBBB搡BBBB| 欧美一区二区三区成人| 91外围女视频| 国产成人精品AA毛片| 中国精品77777777| 自拍毛片| 精品成人| 久久艹大香蕉| 久久另类TS人妖一区二区| 国产精品国产三级国产专区52| 一本一道久久综合狠狠躁牛牛影视 | 日韩无码激情| 亚洲美女操| 亚洲无码在线观看网站| 亚洲aV影院| 久久黄网| 亚洲无码字幕| 国产激情视频网站| 91视频黄| 欧美三级在线| 久久国产av| 一区二区黄| sm国产在线调教视频| 中国一级黄片| 伊人网视频| 小黄片在线| 久久99久久99久久99| 人人人妻人人人操| 北条麻妃一区二区三区-免费免费高清观看 | 泄火熟妇2-ThePorn| 亚欧久久| 中文字幕在线观看日本| 屁屁影院CCYYCOM国产| 亚洲AV色香蕉一区二区三区| 91在线观看视频| 大香蕉精品视频在线| 四lll少妇BBBB槡BBBB| 色哟哟在线观看| 日本无码毛片| 国产精品成人3p一区二区三区| 性爱免费视频| 婷婷五月天网| 亚洲精品女人久久久| 久久久久久99| 夫妻成人免费看片一区二区| 国产高潮视频| 国产精品一区二区毛片A片婊下载 99久久99九九99九九九 | 日本一级婬片A片免费看| 成人视频网站在线观看| 久久成人免费| 自拍偷拍中文字幕| 操东北女人逼| 亚洲无码123| 国产成人AV免费无码| 美女裸身18禁| 东京热第一页| 欧美a片在线看| 亚洲高清无码在线观看视频| 怍爱视频| 欧洲天堂在线视频网站| 黃色A片一级一级一级久别的草原| av免费播放| 成人三级电影在线观看| 久操成人| 澳门四虎影院| 久久熟女嫩草成人片免费| 亚洲砖区区免费| 另类视频区| 黄网在线观看视频| 麻豆91网站| 日韩性爱视屏| 国产三四区久久| 一区二区三区久久| 蜜桃视频网| 天天操夜夜骑| 午夜激情网站| 北条麻妃视频在线| www.黄| 欧美黄片在线免费观看| 男人天堂无码av| 神马Aⅴ| 99久热| 伊人成人在线| 这里只有精品视频| 欧美日韩中文字幕无码| 国产无码一区| 久久精品免费| 蜜挑视频一区二区三区| 国精产品一区一区三区四区| 亚洲AV成人片色在线观看麻豆 | 欧美怕怕| 亚洲网站免费在线观看| 亚洲AV无码精品岛国| AA精品| 丝袜东京热AV高清| 亚洲无码你懂的| 人妻丰满熟妇| 波多野结衣av一区| 国产福利电影在线| 日本黄色三级| 日日摸夜夜| 婷婷精品在线视频| 精品孕妇孕交无码专区| 日韩AV在线免费| 亚洲人妻在线观看| 五月天久久久| 婷婷性爱| 久久精品免费| 亚洲影院中文字幕| 无码精品人妻一区二区欧美| 国产欧美精品一区二区三区| 一区二区免费在线观看| www.久久精品视频| 成人毛片18女人毛片真水| 亚洲无码在线精品| 91人妻人人澡人人爽人人玩| 午夜福利小视频| www.狠狠爱| 日本一级片在线观看| 亚洲无码视频免费在线观看| 成人网站视频在线观看| 99精品视频在线| 激情一一区二区三区| 国产一精品| 久久精品99国产国产精| 秋霞午夜福利影院| 欧美亚洲日韩一区二区| 欧洲亚洲免费视频| 豆花视频logo进入官网| 大地影院在线资源观看| 天堂亚洲AV无码精品成人| h在线观看h| 日本熟妇在线| 国产毛片久久久久久久| 无码人妻在线| 久久激情视频| 日韩精品成人| 亚洲日韩免费在线观看| 一级一级a免一级a做免费线看内裤 | 高清色色女网站| 超碰在线免费播放| 天堂va欧美ⅴa亚洲va一夜| 手机AV在线播放| 色婷婷在线无码精品秘人口传媒| 精品偷拍视频| 午夜毛片| 久久精品性爱| 另类老妇性BBwBBw图片| 黄片免费视频观看| www.久久99| 阿宾MD0165麻豆沈娜娜| 五月丁香色色| chinese搡老熟老妇人| 亚洲AV无码一区东京热久久| 91无码电影| 免费中文资源在线观看| 亚洲91无码精品一区在线播放| 亚洲69v久久久无码精品| 99在线国产| 91天堂| 国产喷水ThePorn| 牛牛aV| 亚洲在线网站| 国产区av| 欧美精品成人免费片| 操操操操| 日韩乱伦av| 欧美成在线| 伊人成人视频在线观看| 国产精品自拍在线观看| 一区二区三区久久久久〖网:.〗| 一个色综合网| 亚洲性夜夜天天天天天天| 骚骚肥肥一区二区三区| 玖玖资源站中文字幕| AV在线无码| 国产嫩草久久久一二三久久免费观看| 日本乱轮视频| 无码人妻精品一区| 天天干天天射天天操| 亚洲国产成人精品午夜| 伊人影院在线免费观看| 插插插菊花综合网| 四虎AV| 久久久人妻无码精品蜜桃| 26uuu国产| 国产高清无码一区二区三区| 在线观看av网站中文字幕| 欧美成人综合色| 东京热在线视频观看| 麻豆AV在线| 一级A片久久久免费直播间| 日本狠狠干| 日本亚洲欧美| 岛国av片| 超碰人人操在线| 日本人妻中文字幕| 天堂中文8资源在线8| 亚洲日韩免费视频| 日韩电影一区| 91丨国产丨白丝| AV天天看| 国产A片| 五月激情婷婷网| 亚洲成人三级| 国产激情艹逼| 大帝av| 成人无码区免费AV毛片| 日本午夜影院| 最近中文字幕在线| 五月天激情小说| 97精品久久| 婷婷午夜精品久久久久久性色AV| 中文字幕有码在线播放| 尿在小sao货里面好不好| 日皮免费视频| 天天草天天日| 欧美日韩在线视频播放| 97男人的天堂| 高潮流水视频| 亚洲人妻av| 人人草人人舔| 国语对白做受欧美| 免费看黄色录像| 成年人视频在线免费观看| 日韩无码网| 欧美性猛交XXXXⅩXX| 无码123| 大学生18一19GAY169| 亚洲成人观看| 免费看一级片| 蜜桃视频免费网站| 亚洲综合干| 成人网站在线看| 在线观看AV网站| 天天艹夜夜| 精品一区二区三区四区| 日韩中字无码| 午夜无码在线| 国产成人精品免高潮在线观看| 麻豆啪啪| 尤物视频在线观看视频| 无码一区二区三| 日韩操屄视频| 亚洲中文字幕在线观看视频网站 | 中文字幕一区二区三区四区| 国产一在线| 偷窥美鲍| 亚洲国产成人91PORN| 久久久女女女女999久久| 久久中文字幕视频| 91免费福利| 艹逼中文字幕| 日本不卡在线视频| 国产欧美一区二区三区国产幕精品 | 日韩免费av| 最近最经典中文MV字幕| 国产成人Av| 日韩中文字幕| 久激情内射婷内射蜜桃欧美一级| 影音先锋av在线资源站| 丁香五月婷婷五月天| 国产免费一区二区三区四区| 理论片91| 91精品国产一区| 成人国产AV精| 国产特黄级AAAAA片免| 国产91福利| 黄色小视频免费| 中文天堂| 在线激情| 黄色视频网站在线看| 黄色网址在线观看视频| 91丨九色丨老农村| 91人妻人人澡人人爽人人玩| 环亚无码| www.黄| 欧美日韩成人网| 免费性爱视频网站| 中文字幕黄色片| 亚洲成人福利电影| 婷婷五月999| 亚洲理伦| 中文字幕成人网站中文字幕| 一级A片一毛片大全| 亚洲综合色网站| 老妇性BBWBBWBBWBBW| 一级片久久| 亚洲波多野结衣| 操逼在线视频| 91福利视频在线观看| 五月天无码av| 天天草天天射| 久久成人无码电影| 亚洲性夜夜天天天天天天| 欧美日韩精品一区二区| 亚洲成人大片| 一区二区免费视频| 97欧美| 天天操夜夜操狠狠| 婷婷久久综合| 91无码在线视频| 日韩黄色电影网| 日韩免费AV| 精品成人免费视频| 先锋AV资源在线| 91视频亚洲| 特级艺体西西444WWw| 久久天堂一区| 国产无遮挡又黄又爽又色学生软件 | 精品久久久国产| 51福利视频| 黄色成人在线观看视频| 欧美淫秽视频| 中文字幕在线日亚洲9| 成人黃色A片免费看| 狠狠躁日日躁夜夜躁A片无码视频| 午夜福利小视频| 色老板在线精品免费观看| 日逼免费网站| 韩国午夜福利视频| 亚洲AV高清| 色色操| 俩小伙3p老熟女露脸| 一区二区黄色| 麻豆精品一区二区| 熟睡侵犯の奶水授乳在线| 成人中文字幕网站| 色五月激情五月| 国产精品成人免费久久黄AV片 | 精品人妻午夜| 亚洲无码成人AV| 黄色三级视频| 日韩有码一区| 激情视频小说| www伦理片-韩国三级三级三级a三级-成人AV | 天堂网在线观看| 久婷婷| 国产黄色av| 丁香六月综合| 最近最经典中文MV字幕| 欧美性爱高清| 成人免费无码婬片在线| 亚洲精品无码a片| 国产三级图片| 免费无码视频一区二区| 欧美第1页| 一级性爽AV毛片| 九月婷婷综合| 国产小电影在线| 亚洲福利在线免费观看| 国产天天操| 一本一道无码免费看视频| 艹逼视频| 久草社区在线| 久久久噜噜噜久久中文字幕色伊伊| 日本电影一区二区三区| 国产高清无码免费视频| 国产午夜视频在线观看| 国产视频123区| 日韩欧美亚洲| 久久久福利视频| 中文字幕成人无码| 91中文无码| 伊人三区| 久久w| 日本免费A片| 中文字幕日韩av| 无码人妻熟妇| 日韩色图在线观看| 999日本不卡影院| 黄色小视频在线观看| 翔田千里50岁无码| 九七在线视频| 先锋影音资源站av每日资源在线| 中文字幕综合| 精品久久ai| 大香蕉午夜视频| 成年人免费看视频| 亚洲在线视频| 男女啪啪免费网站| 粉嫩99精品99久久久久久夜| 国产一级生活片| 亚洲国产成人在线| 日韩毛片视频| 日韩va中文字幕无码免费| 欧美日韩在线看| 豆花视频无码| 天天日很很日| 亚洲无码三级| 99一区二区| 久久婷五月天| 伊人影院在线看| 中文无码日本高潮喷水| 北条麻妃无码一区二区| 亚洲成人高清在线| 无码免费中文字幕| 东京热精品视频| 亚洲欧美日韩一区| 麻豆精品秘国产| WWWA级片| 国产美女精品久久AV爽| 99在线播放| 中文字幕av第一页| 精品色播| 五月婷婷开心| 欧美手机在线| 国产午夜福利在线| 大香蕉大香蕉视频网| 俺也去网av| 日韩图片区小说视频区日| 中文字幕在线观看亚洲| 91日日夜夜| 天天天天天天天干| 你懂得视频在线观看| 在线观看av中文字幕| 国产77777| 免费看黄片,在线观看| 学生妹毛片视频| 亚洲影音先锋在线| 91丨人妻丨国产| 91人人澡| 少妇搡BBBB搡BBB搡视频一级| 高清成人无码| 国产一级a毛一级a毛观看视频网站www.jn | 国产精品视频免费看| 一级a免一级a做免费线看内祥| 亚洲女同在线| 四季AV一区二区凹凸懂色桃花 | 蜜桃视频无码| 中文无码电影| 久久播视频| 玖玖色视频| 51一区二区三区| 成人网站在线免费观看| 午夜激情视频在线观看| 日本成人久久| 国产在线A片| 无码熟妇人妻无码AV在线天堂 | 日韩少妇无码| 3D精品啪啪一区二区三区| 欧美人妻视频在线| 亚洲免费观看视频| 久久久久久AV| 2025AV天堂网| 97国产高清| 99久久伊人| 在线观看免费a片| 欧美精品一区二区三区蜜臀| 亚洲成人中文字幕| 青青草视频在线免费观看| 青青草原成人| 人人色人人操人人干| 国产女人高潮毛片| 亚洲香蕉视频网站| 久久911| 黄色激情网站| 爱爱视频免费看| 青青草亚洲| 欧美AA片| 99久久99久久精品免费看小说。 | 亚洲中文字幕在线看| 中文字幕高清| 仓井空一区二区三区| 成人黄片网站| 亚洲中文视频| 青青草Av| 先锋AV资源在线| 日韩欧美大片在线观看| 97人妻一区| 国产熟女在线| 色噜噜人妻av中文字幕| 狠狠色五月亚洲91| 国产精品三级视频| 少妇白洁在线观看| 欧美久草| 天堂网在线视频| 蜜桃av| 无码伦理电影| 大香蕉88| 欧美色图在线观看视频| 91丨PORN丨国产| 国产毛片777777| 亚洲激情视频在线观看| 国产伊人大香蕉| 天堂综合网| 日韩高清无码免费| 乱子伦一区二区三区视频在线观看 | 丁香色色网| 中文字幕在线有码| 亚洲无码免费观看视频| 水蜜桃在线视频| 黑人无码一二三四五区| 欧美午夜精品久久久久免费视| 日本中文字幕网| 色色激情五月天| 成人性生活片| 久久伊人大| 综合天堂AV久久久久久久| 国产精品HongKong麻豆| 在线免费看黄色| 99热中文字幕在线观看| 91乱| 欧美精品区| 亚洲性爱AV| 人妻无码A| 国产精品人妻无码久久久郑州天气网| 四虎黄色影院| 97色在线| 三级片AAA成人免费| 午夜精品久久久久久久99热精东| 性中国熟妇| 中文字幕一区二区6页| 国产精品乱伦| 狠狠撸天天操| 亚洲色图欧美另类| 日韩天堂在线| 2019中文字幕mv第三季歌词| 天天躁天干天干| 免费黄片网站在线观看| 大香蕉伊人网| 日皮视频| 日韩欧美国产视频| 狠狠撸在线| 亚洲日韩网站在线观看| 亚洲尤物在线| 国产精品免费看| 日韩99| 巨乳一区二区三区| 国产剧情一区二区三区| 欧美网站在线观看| 亚洲成人中文字幕| 欧美日韩网| 丰满熟妇人妻中文字幕| 一区二区三区四区五区在线| 天天色小说| 天天天日天天天天天天天日歌词 | 成人一级黄色片| 免费AV在线播放| 香蕉综合网| 日韩大吊| 波多野结衣无码在线视频| 西西4444www大胆无| 韩国中文字幕HD久久| 2016超碰| 男人天堂视频网| 亚洲一级黄片| 狠狠色av| 欧美18禁网站| 成人A毛片| 蜜臀网在线观看| 免费的av网站| 免费在线观看av| 人妻夜夜爽天天爽| 亚洲黄色免费在线观看| www.伊人大香蕉| 亚洲另类图片小说| 天天人人精品| 青青草免费福利视频| 午夜福利视频网站| 久久人妻中文字幕| 欧美老妇BBBBBBBBB| 色激情五月天| 蜜桃91精品秘入口内裤| 人人看人人插| 在线免费观看黄色电影| 免费观看黄色成人网站| 亚洲一区二区AV| 丁香五月天激情| a片在线观看视频| 成人做爰A片一区二区app| 亚洲免费视频在线看| 97视频在线免费观看| 茄子av| 亚洲av男人天堂| 人人摸人人操人人爽| 美女乱伦| 日韩色小说| 亚洲成人观看| 一级无码A片| 四季AV一区二区夜夜嗨| 日韩不卡高清在线观看视频 | 久热re| 中文字幕一区在线观看| 黄色福利视频在线观看| 日韩在线小视频| 夜夜骚av.一区二区三区四区| 久久成人精品视频| 青青草Av| 四川少妇BBBB槡BBBB槡| 国产高清在线免费观看AV片| 日韩人妻无码一区二区三区| 国产美女一级特黄大片| 久久新视频| 欧美日韩有码视频网址大全| 日韩区一中文字幕a∨| 国产免费一区二区三区四区六区在线| 欧美久操| av高清无码| 97精品人妻一区二区| 中文字幕乱码亚洲无线码在线日噜噜 | 91碰碰| 天天撸天天干天天日| 亚洲Av无码成人专区擼| 国产尤物在线| 中国操逼| 久热婷婷| 成人三级片免费| 中文在线а√天堂8| 国产无码在线看| 午夜伦理福利| 黄色视频在线免费播放| 国产一级特黄| 中文字幕一区二区三区免费2023| 欧美日韩国| 亚洲无码一级| 无码AA| 亚洲黄色电影网站| av乱伦小说| 男女操逼网站| 免费无码一级A片大黄在线观看 | 日本免费A片| 亚洲无码蜜桃| 美女黄色视频永费在线观看网站 | 边添小泬边狠狠躁视频| 伊人亚洲| 国产高清无码在线观看视频| 狠狠躁夜夜躁人人爽人妻| 亚洲一区三区| 亚洲精品无码在线播放| 亚洲精品成人无码毛片| 色婷婷综合视频| 欧美黄片在线免费观看| 十八女人高潮A片免费| 久久中文字幕免费| 日本伊人大香蕉| 欧美日韩三级在线| 欧美成人精品一区二区三区| 伊人成人在线视频观看| 九九九免费视频| 伦理被部长侵犯HD中字| 欧美特级黄片| 人人天天夜夜| 激情无码在线观看| 大香蕉综合网| 蜜桃av一区二区三区| 国产精品免费人成网站酒店| 911亚洲精品| 国产av网站大全| 成人免费区一区二区三区| 欧美日色| 午夜精品18视频国产| 日韩一区无码| 91亚洲精选| 国产真人一级a爱做片| av日韩无码| 成人黄色无码视频| 无码一区二区北条| www欧美日韩| 欧美在线视频a| 亚洲色逼图片| 日韩亚洲在线| 亚洲伊人大香蕉| 人妻丝袜蕾丝高跟双飞| 人人操AV| 黄色视频毛片| 国产成人免费观看视频| 免费无码成人片在线观看在线| 伊人精品A片一区二区三区| 婷婷五月福利| 婷婷五月中文字幕| 久久久久久综合| 国产美女被爽到高潮免费A片软件| 日韩AV免费在线观看| 美女福利在线| 51福利导航| 色欲国产精品欧美在线密| av片在线免费观看| 午夜福利视频3000| 亚洲高清视屏| 丰滿老婦BBwBBwBBw| A片在线观看免费| 亚洲黄色一级电影| 日韩中文字幕无码人妻| 成人激情在线| 激情国产| 国产精品美女久久久久AV爽| 久久香蕉电影| 日本操逼网| 夜夜狠狠躁日日躁| 懂色AV一区二区三区国产中文在线| 国产成人自拍视频在线| 欧美日韩视频| 国产www在线观看| 亚洲色爽| 青青操b| 在线观看中文字幕视频| 天天干天天日天天操| 97国产精品视频| 五月天高清无码| 五月天婷婷网址| 国产寡妇亲子伦一区二区三区四区 | 德国肥妇熟妇BBwBBw| 强伦轩一区二区三区四区播放方式| 国产精品国产三级国产专业不| 一本色道久久无码人妻精品69| 69日逼| 大香蕉一级红色片青青河边草| 午夜福利大片| 精品成人A片久久久久久不卡三区| 国产九九九九九九| 大鸡巴久久久久| 黑人Av在线| 操老女人视频| 波多野结衣AV在线播放| 超碰97在线免费观看| 中国特级毛片| 亚洲免费大片| 色五月亚洲| 黄色免费在线观看网站| 国产成人秘一区二区三区东京热| 欧美强开小嫩苞| 99热在线观看免费| 在线观看成人18| 毛片aaa| 久草电影网站| 自拍视频在线| 亚洲性爱AV网站| 日韩大香蕉| 伊人大香蕉在线观看| 午夜成人在线| 成人做爰100部免费网站| 国产无套内射视频| 国产三级网址| 91久久精品日日躁夜夜躁欧美| 在线观看不卡av| 嫩草99| 国产欧美一区二区三区国产幕精品 | 久久精品女同亚洲女同13| 中国熟睡妇BBwBBw| 亚洲免费在线看| 欧美自拍性爱视频| 国产av资源| 高清无码黄片| 免费看a| 一级片在线观看视频| www.911国产| 国产激情网| 精品一区二区三区四区视频| 中国无码视频| 天堂俺去俺来也www久久婷婷 | 国产精品一品二区三区的使用体验| 午夜艹 | 乱伦小视频| 欧美噜噜| 日本免费精品| 中文字幕电影| 中文字幕五码| 中文字幕乱码无码人妻系列蜜桃| av网站免费在线观看| 丁香五月天激情网| 亚洲精品成人AV| 亚洲无码三级视频| 中文字幕第一页av| 色色五月丁香|