1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        Redis 性能優(yōu)化思路,寫的非常好!

        共 8367字,需瀏覽 17分鐘

         ·

        2021-03-15 05:03

        作者:劉思寧

        來源:www.jianshu.com/p/67093716547b

        在一些網(wǎng)絡(luò)服務(wù)的系統(tǒng)中,Redis 的性能,可能是比 MySQL 等硬盤數(shù)據(jù)庫的性能更重要的課題。比如微博,把熱點微博[1],最新的用戶關(guān)系,都存儲在 Redis 中,大量的查詢擊中 Redis,而不走 MySQL。

        那么,針對 Redis 服務(wù),我們能做哪些性能優(yōu)化呢?或者說,應(yīng)該避免哪些性能浪費呢?


        Redis 性能的基本面


        在討論優(yōu)化之前,我們需要知道,Redis 服務(wù)本身就有一些特性,比如單線程運行。除非修改 Redis 的源代碼,不然這些特性,就是我們思考性能優(yōu)化的基本面。

        那么,有哪些 Redis 基本特性需要我們考慮呢?Redis 的項目介紹中概括了它特性:

        Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported.

        首先,Redis 使用操作系統(tǒng)提供的虛擬內(nèi)存來存儲數(shù)據(jù)。而且,這個操作系統(tǒng)一般就是指 Unix。Windows 上也能運行 Redis,但是需要特殊處理。如果你的操作系統(tǒng)使用交換空間,那么 Redis 的數(shù)據(jù)可能會被實際保存在硬盤上。


        其次,Redis 支持持久化,可以把數(shù)據(jù)保存在硬盤上。很多時候,我們也確實有必要進(jìn)行持久化來實現(xiàn)備份,數(shù)據(jù)恢復(fù)等需求。但持久化不會憑空發(fā)生,它也會占用一部分資源。


        第三,Redis 是用 key-value 的方式來讀寫的,而 value 中又可以是很多不同種類的數(shù)據(jù);更進(jìn)一步,一個數(shù)據(jù)類型的底層還有被存儲為不同的結(jié)構(gòu)。不同的存儲結(jié)構(gòu)決定了數(shù)據(jù)增刪改查的復(fù)雜度以及性能開銷。


        最后,在上面的介紹中沒有提到的是,Redis 大多數(shù)時候是單線程運行[2]的(single-threaded),即同一時間只占用一個 CPU,只能有一個指令在運行,并行讀寫是不存在的。很多操作帶來的延遲問題,都可以在這里找到答案。

        關(guān)于最后這個特性,為什么 Redis 是單線程的,卻能有很好的性能(根據(jù) Amdahl’s Law,優(yōu)化耗時占比大的過程,才更有意義),兩句話概括是:Redis 利用了多路 I/O 復(fù)用機(jī)制[3],處理客戶端請求時,不會阻塞主線程;Redis 單純執(zhí)行(大多數(shù)指令)一個指令不到 1 微秒[4],如此,單核 CPU 一秒就能處理 1 百萬個指令(大概對應(yīng)著幾十萬個請求吧),用不著實現(xiàn)多線程(網(wǎng)絡(luò)才是瓶頸[5])。


        優(yōu)化網(wǎng)絡(luò)延時


        Redis 的官方博客在幾個地方都說,性能瓶頸更可能是網(wǎng)絡(luò)[6],那么我們?nèi)绾蝺?yōu)化網(wǎng)絡(luò)上的延時呢?另外,關(guān)注公眾號Java技術(shù)棧,在后臺回復(fù):面試,可以獲取我整理的 Redis 系列面試題和答案,非常齊全。


        首先,如果你們使用單機(jī)部署(應(yīng)用服務(wù)和 Redis 在同一臺機(jī)器上)的話,使用 Unix 進(jìn)程間通訊來請求 Redis 服務(wù),速度比 localhost 局域網(wǎng)(學(xué)名 loopback)更快。官方文檔[7]是這么說的,想一想,理論上也應(yīng)該是這樣的。


        但很多公司的業(yè)務(wù)規(guī)模不是單機(jī)部署能支撐的,所以還是得用 TCP。


        Redis 客戶端和服務(wù)器的通訊一般使用 TCP 長鏈接。如果客戶端發(fā)送請求后需要等待 Redis 返回結(jié)果再發(fā)送下一個指令,客戶端和 Redis 的多個請求就構(gòu)成下面的關(guān)系:

        (備注:如果不是你要發(fā)送的 key 特別長,一個 TCP 包完全能放下 Redis 指令,所以只畫了一個 push 包)這樣這兩次請求中,客戶端都需要經(jīng)歷一段網(wǎng)絡(luò)傳輸時間。


        但如果有可能,完全可以使用 multi-key 類的指令來合并請求,比如兩個 GET key 可以用 MGET key1 key2 合并。這樣在實際通訊中,請求數(shù)也減少了,延時自然得到好轉(zhuǎn)。


        如果不能用 multi-key 指令來合并,比如一個 SET,一個 GET 無法合并。怎么辦?

        Redis 中有至少這樣兩個方法能合并多個指令到一個 request 中,一個是 MULTI/EXEC,一個是 script。前者本來是構(gòu)建 Redis 事務(wù)的方法,但確實可以合并多個指令為一個 request,它到通訊過程如下。至于 script,最好利用緩存腳本的 sha1 hash key 來調(diào)起腳本,這樣通訊量更小。

        這樣確實更能減少網(wǎng)絡(luò)傳輸時間,不是么?但如此以來,就必須要求這個 transaction / script 中涉及的 key 在同一個 node 上,所以要酌情考慮。


        推薦閱讀:Redis 到底是單線程還是多線程?


        如果上面的方法我們都考慮過了,還是沒有辦法合并多個請求,我們還可以考慮合并多個 responses。比如把 2 個回復(fù)信息合并:

        這樣,理論上可以省去 1 次回復(fù)所用的網(wǎng)絡(luò)傳輸時間。這就是 pipeline 做的事情。舉個 ruby 客戶端使用 pipeline 的例子:


        require 'redis'
        @redis = Redis.new()
        @redis.pipelined do
            @redis.get 'key1'
            @redis.set 'key2' 'some value'
        end
        # => [1, 2]


        據(jù)說,有些語言的客戶端,甚至默認(rèn)就使用 pipeline 來優(yōu)化延時問題,比如 node_redis。


        另外,不是任意多個回復(fù)信息都可以放進(jìn)一個 TCP 包中,如果請求數(shù)太多,回復(fù)的數(shù)據(jù)很長(比如 get 一個長字符串),TCP 還是會分包傳輸,但使用 pipeline,依然可以減少傳輸次數(shù)。


        pipeline 和上面的其他方法都不一樣的是,它不具有原子性。所以在 cluster 狀態(tài)下的集群上,實現(xiàn) pipeline 比那些原子性的方法更有可能。


        小結(jié)一下:

        1. 使用 unix 進(jìn)程間通信,如果單機(jī)部署
        2. 使用 multi-key 指令合并多個指令,減少請求數(shù),如果有可能的話
        3. 使用 transaction、script 合并 requests 以及 responses
        4. 使用 pipeline 合并 response


        警惕執(zhí)行時間長的操作


        在大數(shù)據(jù)量的情況下,有些操作的執(zhí)行時間會相對長,比如 KEYS *,LRANGE mylist 0 -1,以及其他算法復(fù)雜度為 O(n) 的指令。因為 Redis 只用一個線程來做數(shù)據(jù)查詢,如果這些指令耗時很長,就會阻塞 Redis,造成大量延時。


        盡管官方文檔中說 KEYS * 的查詢挺快的,(在普通筆記本上)掃描 1 百萬個 key,只需 40 毫秒(參見:https://redis.io/commands/keys),但幾十 ms 對于一個性能要求很高的系統(tǒng)來說,已經(jīng)不短了,更何況如果有幾億個 key(一臺機(jī)器完全可能存幾億個 key,比如一個 key 100字節(jié),1 億個 key 只有 10GB),時間更長。


        所以,盡量不要在生產(chǎn)環(huán)境的代碼使用這些執(zhí)行很慢的指令,這一點 Redis 的作者在博客[8]中也提到了。另外,運維同學(xué)查詢 Redis 的時候也盡量不要用。甚至,Redis Essential 這本書建議利用 rename-command KEYS '' 來禁止使用這個耗時的指令。


        除了這些耗時的指令,Redis 中 transaction,script,因為可以合并多個 commands 為一個具有原子性的執(zhí)行過程,所以也可能占用 Redis 很長時間,需要注意。


        如果你想找出生產(chǎn)環(huán)境使用的「慢指令」,那么可以利用 SLOWLOG GET count 來查看最近的 count 個執(zhí)行時間很長的指令。至于多長算長,可以通過在 redis.conf 中設(shè)置 slowlog-log-slower-than 來定義。


        除此之外,在很多地方都沒有提到的一個可能的慢指令是 DEL,但 redis.conf 文件的注釋[9]中倒是說了。長話短說就是 DEL 一個大的 object 時候,回收相應(yīng)的內(nèi)存可能會需要很長時間(甚至幾秒),所以,建議用 DEL 的異步版本:UNLINK。后者會啟動一個新的 thread 來刪除目標(biāo) key,而不阻塞原來的線程。


        更進(jìn)一步,當(dāng)一個 key 過期之后,Redis 一般也需要同步的把它刪除。其中一種刪除 keys 的方式是,每秒 10 次的檢查一次有設(shè)置過期時間的 keys,這些 keys 存儲在一個全局的 struct 中,可以用 server.db->expires 訪問。


        檢查的方式是:

        1. 從中隨機(jī)取出 20 個 keys
        2. 把過期的刪掉。
        3. 如果剛剛 20 個 keys 中,有 25% 以上(也就是 5 個以上)都是過期的,Redis 認(rèn)為,過期的 keys 還挺多的,繼續(xù)重復(fù)步驟 1,直到滿足退出條件:某次取出的 keys 中沒有那么多過去的 keys。


        這里對于性能的影響是,如果真的有很多的 keys 在同一時間過期,那么 Redis 真的會一直循環(huán)執(zhí)行刪除,占用主線程。


        對此,Redis 作者的建議[10]是警惕 EXPIREAT 這個指令,因為它更容易產(chǎn)生 keys 同時過期的現(xiàn)象。我還見到過一些建議是給 keys 的過期時間設(shè)置一個隨機(jī)波動量。最后,redis.conf 中也給出了一個方法,把 keys 的過期刪除操作變?yōu)楫惒降模?,?redis.conf 中設(shè)置 lazyfree-lazy-expire yes。


        優(yōu)化數(shù)據(jù)結(jié)構(gòu)、使用正確的算法


        一種數(shù)據(jù)類型(比如 string,list)進(jìn)行增刪改查的效率是由其底層的存儲結(jié)構(gòu)決定的。

        我們在使用一種數(shù)據(jù)類型時,可以適當(dāng)關(guān)注一下它底層的存儲結(jié)構(gòu)及其算法,避免使用復(fù)雜度太高的方法。


        舉兩個例子:

        1. ZADD 的時間復(fù)雜度是 O(log(N)),這比其他數(shù)據(jù)類型增加一個新元素的操作更復(fù)雜,所以要小心使用。
        2. 若 Hash 類型的值的 fields 數(shù)量有限,它很有可能采用 ziplist 這種結(jié)構(gòu)做存儲,而 ziplist 的查詢效率可能沒有同等字段數(shù)量的 hashtable 效率高,在必要時,可以調(diào)整 Redis 的存儲結(jié)構(gòu)。

        除了時間性能上的考慮,有時候我們還需要節(jié)省存儲空間。比如上面提到的 ziplist 結(jié)構(gòu),就比 hashtable 結(jié)構(gòu)節(jié)省存儲空間(Redis Essentials 的作者分別在 hashtable 和 ziplist 結(jié)構(gòu)的 Hash 中插入 500 個 fields,每個 field 和 value 都是一個 15 位左右的字符串,結(jié)果是 hashtable 結(jié)構(gòu)使用的空間是 ziplist 的 4 倍。)。但節(jié)省空間的數(shù)據(jù)結(jié)構(gòu),其算法的復(fù)雜度可能很高。所以,這里就需要在具體問題面前做出權(quán)衡。


        如何做出更好的權(quán)衡?我覺得得深挖 Redis 的存儲結(jié)構(gòu)才能讓自己安心。這方面的內(nèi)容我們下次再說。


        以上這三點都是編程層面的考慮,寫程序時應(yīng)該注意啊。下面這幾點,也會影響 Redis 的性能,但解決起來,就不只是靠代碼層面的調(diào)整了,還需要架構(gòu)和運維上的考慮。


        考慮操作系統(tǒng)和硬件是否影響性能


        Redis 運行的外部環(huán)境,也就是操作系統(tǒng)和硬件顯然也會影響 Redis 的性能。在官方文檔中,就給出了一些例子:

        1. CPU:Intel 多種 CPU 都比 AMD 皓龍系列好
        2. 虛擬化:實體機(jī)比虛擬機(jī)好,主要是因為部分虛擬機(jī)上,硬盤不是本地硬盤,監(jiān)控軟件導(dǎo)致 fork 指令的速度慢(持久化時會用到 fork),尤其是用 Xen 來做虛擬化時。
        3. 內(nèi)存管理:在 linux 操作系統(tǒng)中,為了讓 translation lookaside buffer,即 TLB,能夠管理更多內(nèi)存空間(TLB 只能緩存有限個 page),操作系統(tǒng)把一些 memory page 變得更大,比如 2MB 或者 1GB,而不是通常的 4096 字節(jié),這些大的內(nèi)存頁叫做 huge pages。同時,為了方便程序員使用這些大的內(nèi)存 page,操作系統(tǒng)中實現(xiàn)了一個 transparent huge pages(THP)機(jī)制,使得大內(nèi)存頁對他們來說是透明的,可以像使用正常的內(nèi)存 page 一樣使用他們。但這種機(jī)制并不是數(shù)據(jù)庫所需要的,可能是因為 THP 會把內(nèi)存空間變得緊湊而連續(xù)吧,就像mongodb 的文檔[11]中明確說的,數(shù)據(jù)庫需要的是稀疏的內(nèi)存空間,所以請禁掉 THP 功能。Redis 也不例外,但 Redis 官方博客上給出的理由是:使用大內(nèi)存 page 會使 bgsave 時,fork 的速度變慢;如果 fork 之后,這些內(nèi)存 page 在原進(jìn)程中被修改了,他們就需要被復(fù)制(即 copy on write),這樣的復(fù)制會消耗大量的內(nèi)存(畢竟,人家是 huge pages,復(fù)制一份消耗成本很大)。所以,請禁止掉操作系統(tǒng)中的 transparent huge pages 功能。
        4. 交換空間:當(dāng)一些內(nèi)存 page 被存儲在交換空間文件上,而 Redis 又要請求那些數(shù)據(jù),那么操作系統(tǒng)會阻塞 Redis 進(jìn)程,然后把想要的 page,從交換空間中拿出來,放進(jìn)內(nèi)存。這其中涉及整個進(jìn)程的阻塞,所以可能會造成延時問題,一個解決方法是禁止使用交換空間(Redis Essentials 中如是建議,如果內(nèi)存空間不足,請用別的方法處理)。


        考慮持久化帶來的開銷


        Redis 的一項重要功能就是持久化,也就是把數(shù)據(jù)復(fù)制到硬盤上?;诔志没?,才有了 Redis 的數(shù)據(jù)恢復(fù)等功能。


        但維護(hù)這個持久化的功能,也是有性能開銷的。


        首先說,RDB 全量持久化。


        這種持久化方式把 Redis 中的全量數(shù)據(jù)打包成 rdb 文件放在硬盤上。但是執(zhí)行 RDB 持久化過程的是原進(jìn)程 fork 出來一個子進(jìn)程,而 fork 這個系統(tǒng)調(diào)用是需要時間的,根據(jù)Redis Lab 6 年前做的實驗[12],在一臺新型的 AWS EC2 m1.small^13 上,fork 一個內(nèi)存占用 1GB 的 Redis 進(jìn)程,需要 700+ 毫秒,而這段時間,redis 是無法處理請求的。


        雖然現(xiàn)在的機(jī)器應(yīng)該都會比那個時候好,但是 fork 的開銷也應(yīng)該考慮吧。為此,要使用合理的 RDB 持久化的時間間隔,不要太頻繁。


        接下來,我們看另外一種持久化方式:AOF 增量持久化。


        這種持久化方式會把你發(fā)到 redis server 的指令以文本的形式保存下來(格式遵循 redis protocol),這個過程中,會調(diào)用兩個系統(tǒng)調(diào)用,一個是 write(2),同步完成,一個是 fsync(2),異步完成。


        這兩部都可能是延時問題的原因:

        1. write 可能會因為輸出的 buffer 滿了,或者 kernal 正在把 buffer 中的數(shù)據(jù)同步到硬盤,就被阻塞了。
        2. fsync 的作用是確保 write 寫入到 aof 文件的數(shù)據(jù)落到了硬盤上,在一個 7200 轉(zhuǎn)/分的硬盤上可能要延時 20 毫秒左右,消耗還是挺大的。更重要的是,在 fsync 進(jìn)行的時候,write 可能會被阻塞。


        其中,write 的阻塞貌似只能接受,因為沒有更好的方法把數(shù)據(jù)寫到一個文件中了。但對于 fsync,Redis 允許三種配置,選用哪種取決于你對備份及時性和性能的平衡:

        1. always:當(dāng)把 appendfsync 設(shè)置為 always,fsync 會和客戶端的指令同步執(zhí)行,因此最可能造成延時問題,但備份及時性最好。
        2. everysec:每秒鐘異步執(zhí)行一次 fsync,此時 redis 的性能表現(xiàn)會更好,但是 fsync 依然可能阻塞 write,算是一個折中選擇。
        3. no:redis 不會主動出發(fā) fsync (并不是永遠(yuǎn)不 fsync,那是不太可能的),而由 kernel 決定何時 fsync


        使用分布式架構(gòu) —— 讀寫分離、數(shù)據(jù)分片


        以上,我們都是基于單臺,或者單個 Redis 服務(wù)進(jìn)行優(yōu)化。下面,我們考慮當(dāng)網(wǎng)站的規(guī)模變大時,利用分布式架構(gòu)來保障 Redis 性能的問題。


        首先說,哪些情況下不得不(或者最好)使用分布式架構(gòu):

        1. 數(shù)據(jù)量很大,單臺服務(wù)器內(nèi)存不可能裝得下,比如 1 個 T 這種量級
        2. 需要服務(wù)高可用
        3. 單臺的請求壓力過大


        解決這些問題可以采用數(shù)據(jù)分片或者主從分離,或者兩者都用(即,在分片用的 cluster 節(jié)點上,也設(shè)置主從結(jié)構(gòu))。


        這樣的架構(gòu),可以為性能提升加入新的切入點:

        1. 把慢速的指令發(fā)到某些從庫中執(zhí)行
        2. 把持久化功能放在一個很少使用的從庫上
        3. 把某些大 list 分片


        其中前兩條都是根據(jù) Redis 單線程的特性,用其他進(jìn)程(甚至機(jī)器)做性能補(bǔ)充的方法。


        當(dāng)然,使用分布式架構(gòu),也可能對性能有影響,比如請求需要被轉(zhuǎn)發(fā),數(shù)據(jù)需要被不斷復(fù)制分發(fā)。(待查)


        后話


        其實還有很多東西也影響 Redis 的性能,比如 active rehashing(keys 主表的再哈希,每秒 10 次,關(guān)掉它可以提升一點點性能),但是這篇博客已經(jīng)寫的很長了。而且,更重要不是收集已經(jīng)被別人提出的問題,然后記憶解決方案;而是掌握 Redis 的基本原理,以不變應(yīng)萬變的方式?jīng)Q絕新出現(xiàn)的問題。


        另外,關(guān)注公眾號Java技術(shù)棧,在后臺回復(fù):面試,可以獲取我整理的 Redis 系列面試題和答案,非常齊全。


        參考資料

        [1] 熱點微博: https://www.infoq.cn/article/weibo-relation-service-with-redis
        [2] 單線程運行: https://redis.io/topics/latency#single-threaded-nature-of-redis
        [3] 多路 I/O 復(fù)用機(jī)制: https://redis.io/topics/clients#how-client-connections-are-accepted
        [4] 1 微秒: https://redis.io/topics/latency#redis-latency-problems-troubleshooting
        [5] 網(wǎng)絡(luò)才是瓶頸: https://redis.io/topics/benchmarks#factors-impacting-redis-performance
        [6] 網(wǎng)絡(luò): https://redis.io/topics/latency#latency-induced-by-network-and-communication
        [7] 官方文檔: https://redis.io/topics/benchmarks#factors-impacting-redis-performance
        [8] 博客: https://redis.io/topics/latency#i39ve-little-time-give-me-the-checklist
        [9] 注釋: https://github.com/antirez/redis/blob/5.0/redis.conf#L669
        [10] 建議: https://redis.io/topics/latency#latency-generated-by-expires
        [11] mongodb 的文檔: https://docs.mongodb.com/manual/tutorial/transparent-huge-pages/
        [12] 實驗: 參見:https://redis.io/topics/latency#fork-time-in-different-systems

        獲取更多優(yōu)質(zhì)文章,點擊關(guān)注

        ??????

        瀏覽 48
        點贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

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

        手機(jī)掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            狼友在线视频| 天天噜天天操| 人妻免费视频| 无码骚逼| 一本加勒比HEZYO东京热无码 | 毛片一级片| 99re国产视频| 欧美AAAAAAAA| 尤物视频网站在线观看| 国产亚洲av| 免费无码成人片在线播放| 欧美拍拍| 日韩亚洲精品中文字幕| 亚洲欧洲视频在线观看| 99电影网手机在线观看| 精品在线免费观看| 国产色五月| 可以免费看的AV| 欧美色爽| 亚洲精品久久久久毛片A级牛奶 | 久久超碰99| 中文字幕永久在线视频v1.0| 五月天黄色电影| 日逼天堂| 天天插天天狠天天透| www.91AV| 日本久久成人| 国产精品国内自产| 另类老妇性BBBWBBW| 蜜臀久久99精品久久久老牛影视 | 日韩精品一区二区三区中文在线 | 蜜臀AV一区二区三区免费看| 国产综合久久| 亚州毛片| A视频在线| 国产永久精品| 亚洲欧美日韩另类| 成人精品一区日本无码网站suv/ | 亚洲AV永久无码成人| chinese高潮老女人| 影音先锋女人aV鲁色资源网站| 日韩欧AV| 亚洲成人无码视频| 日屄视频在线观看| 操BBBB| 熟妇人妻丰满久久久久久久无码| 亚洲无码视频看看| 日韩欧美视频在线播放| 韩国一级AV| 免费日韩AV| 曰本精品综合网在线| 插菊花综合网1| 欧美日韩国产一区二区三区| www.人人操| 日韩AV综合| 中文字幕精品人妻| 夜夜撸天天干| 国产女人18毛片水真多成人如厕 | 一区二区三区免费在线观看| 婷婷色五月激情| 中文字幕精品一级A片| 午夜无码久久| 精国产品一区二区三区A片| 午夜五月天| 91乱伦| 亚洲av免费| 欧美日韩国产一区二区三区| 美女黄片| 3344gc在线观看入口| 国产精品欧美一区二区三区苍井空 | 久久蜜桃成人| 操逼操逼操逼操逼操逼操逼| 日本精品在线观看视频| 99精品偷自拍| 欧美成人不卡| 九九九热精品| 四虎影院中文字幕| www.大吊视频| 亚洲黄色电影| 啪啪啪免费网站| 在线播放你懂的| 在线日韩视频| 亚洲高清在线播放| 人人干人人摸人人操| 免费一级黄| 一二区视频| 热久久精品| 欧美日韩在线电影| 国产91精品探花一区二区| 久久蝌蚪窝| 亚洲成人视频免费在线观看| 激情内射网站| 草B网| 熟妇人妻中文| 麻豆成人网| 少妇激情av| AV怡红院| 操逼逼综合网| 亚洲小穴| 五月天婷婷久久| 日本黄色毛片| 九九精品热播| 色老板在线免费观看| 日韩无码视频网站| 亚洲激情欧美| 麻豆精品在线观看| 特级西西人体WWWWW| 91探花秘在线播放偷拍| 一级黄色片免费| 国产精品揄拍500视频| 97香蕉网| 欧美亚洲日韩一区二区三区| 无码中文字幕在线播放| 日韩毛片中文字幕| 国产亲子乱XXXXinin| 国产又爽又黄在线看视频| 亚洲AV无码乱码国产精品蜜芽| 91视频免费播放| 最新日韩无码| JiZZjiZZ亚洲成熟熟妇| 一级黄色电影在线观看| 国产一级a毛一级做a爱| 日韩福利在线观看| 中文字幕第六页| 91精品久久久久| 国产av福利| 免费黄色电影在线观看| 网址你懂的| 91夫妻交友视频| 蜜臀AV一区二区三区免费看| 水果派解说A∨无码区| 一本久久A精品一合区久久久| 影音av在线| 国产人妻精品一区二区三区不卡| 精品女同一区二区三区四区外站在线 | 午夜性爱视频| 香蕉国产2023| 日本精品中文字幕| 国产成人精| 九色在线观看| 成人a毛片| 精品人妻一区二区三区含羞草| 亚洲天堂中文字幕| 黑人粗暴偷拍一区二区| 午夜亚洲福利视频| 亚洲超级高清无码第一在线视频观看| 中日韩黄色视频| 九九久久精品视频| 99久久99久久兔费精桃| 九九天堂| 欧美激情无码一区二区三区张丽| 国产一卡二卡在线| 91成人福利| 在线观看91| 成人A片视频| 亚洲欧美日韩黑料吃瓜在线观看| 中文字幕日韩一| 国产免费av在线观看| 亚洲欧美成人片| 三级片无码在线| 黄片国产| 小h片| 亚洲欧美日本在线观看| 亚洲精品在线观看视频| 天堂综合网| 国产三四区久久| 欧美一级夜夜爽| 夜夜夜夜骑| 成人AV午夜福利| 亚洲成人av无码| 在线看91| 成人做爰黄AA片免费看三区| 欧美9999| 爱操av| 99大香蕉视频| 日本中文无码| 大鸡巴久久久久久| 中文在线字幕免费观| AV免费在线播放| 亚洲免费专区| 中文字幕高清AⅤ| 天天操人人| 安徽妇搡BBBB搡BBBB| 欧美精品久久| 狠狠地操| 一道本一区二区三区免费视频| 四川妇搡BBBB搡BBBB| 操屄视频免费观看| 色老板最新地址| 2018人人操| 操逼视频在线播放| 91白浆| 4080yy午夜理论片成人| 久久久久久久久久久久国产精品| 日本精品在线播放| 久久久久久久久久久成人| 91人妻人人澡人人爽人人| 第一页在线| 亚洲国际中文字幕在线| 深爱五月天| 日韩一区二区三区精品| 亚洲秘无码一区二区三区蜜桃中文| 日本黄色中文字幕| 国产激情视频在线| 免费欧美三级片| 丁香五月综合啪啪| 在线观看免费黄色| 91久操| 爱搞视频在线观看| 久久草草热国产精| 艹逼片| 久久精品苍井空免费一区二| 九九性爱视频| 亚洲无码电影在线观看| 自拍偷拍福利视频网站| 成人精品一区日本无码网站suv| 国产99久久九九精品无码免费 | 国产视频久久| 亚洲国产精品18久久久久久| 黄色a一级| 波多野结衣无码一区二区| 亚洲,制服,综合,中文| 亚洲综合伊人| 男女做爱无码| 亚洲大片在线观看| 超碰人人人人人| 黄网在线看| 久热9191| 风间由美大荫蒂无码AV| 翔田千里無碼破解| 蜜桃久久99精品久久久酒店| 婷婷综合缴情亚洲另类在线| 国产精品久久在线| 三级午夜在线无码| 搡BBBB搡BBB搡五十| 四虎Av| 午夜福利123| 91狠狠色丁香婷婷综合久久精品| 人妻骚逼| 大香伊人蕉| 妞干网国产| 亚洲ww| 另类图片亚洲色图| 国产无码一| 粉嫩99精品99久久久久久特污 | 国产精品91在线| 五月婷婷深深爱| 亚洲无码门| 操逼网123首页| 黄色片在线观看视频| 青青草精品视频| 久久永久免费精品人妻专区| 中文无码AV在线| 国产精品久久久久久久久久久久久| 国产91白丝在一线播放| 国产色婷婷一区二区| 国精产品一二三区| 日韩AV片| www久久| 超碰在线播| 日韩精品久久久| 五月综合激情| 精品亚洲一区二区三区| 日韩亚洲在线观看| 欧美视频精品| 懂色一区二区三区免费| 欧美A级成人婬片免费看| 日韩视频精品| 亚洲无码高清在线| 亚洲Av秘无码一区二区| av在线免费观看网站| 91精品久久久久久久| 国产精品一区二区黑人巨大| 中文在线观看免费视频| 黄色毛片视频| 久久中文字幕无码| 午夜神马影院| 人人爱人人插| 操逼操逼操逼操逼操逼操逼| 精品久久一区二区| 超碰久草| 免费福利视频网站| 小泬BBBBBB免费看| 亚洲午夜久久久久久久久久久| av天堂一区| 特级A级毛片| 亚洲欧美在线视频| 亚洲精品高清视频| 2014AV天堂网| 色撸AⅤ| 国产精品国产精品国产专区不52| 亚洲青青草| 不卡一二三区| 日韩人妻无码电影| 2014天堂网| 欧美男人天堂网| AV2014天堂网| 亚洲欧洲在线视频| 天天草天天爽| 四季AV一区二区夜夜嗨| 亚州毛多色色精品| 懂色AV成人| 国产伦乱| 日韩免费在线观看| 国产8区| 国产麻豆剧传媒精品国产AV| 91国内产香蕉| www.俺来也| 农村一级婬片A片| 先锋影音资源AV| 午夜视频福利| 亚洲videos| 中国老女人操逼视频| 被男友内S~高H文| 婷婷午夜精品久久久久久| www.干| 国内自拍网站| 粉嫩小泬BBBBBB免费| 大香蕉福利视频导航| 日韩第1页| 亚洲精品久久久久久| 水多多成人免费A片| 亚洲VA| 69午夜| 天天躁日日躁狠狠| 高清无码在线免费观看| 大香蕉综合在线观看| 黑人无码在线| 亚洲国产成人av| 亚洲成人久久久| 北条麻妃在线观看香蕉| 99色在线视频| 成人三级视频| 午夜三级无码| 碰碰视频| 久久毛片基地| 日韩无码A片| 亚洲视频在线观看播放| 日韩精品久久久久久久酒店| 国产无码在线影院| 日韩黄色免费电影| 99久热| 91在线无码精品在线看| 中文字幕成人电影| 福利导航视频| 亚洲精品AⅤ一区二| 99re视频在线播放| 亚洲av高清无码| 中国免费毛片| 四虎精品一区二区| 大地资源第三页在线观看免费播放最新| 久操不卡| 一级黄色录相片| 成人高清无码在线观看| 亚洲性爱视屏| 一区二区三区四区在线看| 中文字幕在线观看第一页| 欧美人成人无码| 亚洲视频一区二区三区| 青青草视频偷拍| 影音先锋三级片| av一区二区在线观看| 国产一级a爱做片免费☆观看| 国产精品乱码一区二区三区| 一区二区色| 夜夜bb| 国产精品成人无码| 全部在线A片免费播放| 无码一| 波多野结衣被操| 五月天婷婷基地| 久久综合站| 性插视频| 一级片电影网站| 国产成人av网站| 天天干狠狠| 亚洲三级片视频| 我要看黄色一级片| 亚洲成人精品在线观看| 国产18禁网站| 日逼无码| 一本色道久久无码人妻精品69| 五月丁香在线观看| 日韩第1页| www.色999| 日韩欧美一级视频| 人人干人人操人人爱| 国产福利91| 日本色情视频网站| 欧美日韩高清无码| re久久| 久久99精品久久久久久| 精品素人在线| 亚洲偷| 黄色视频在线免费观看网站| 国产日韩欧美| 欧美亚洲自拍偷拍| 婷婷久草网| 欧美综合精品| a亚洲a| 中文在线字幕电视剧免费平台| 翔田千里无码免费播放| 国产熟女视频| av影片在线播放| 正在播放吴梦梦淫行| 欧美成人在线视频网站| 久久久www成人免费毛片| 午夜男女福利| 91天天操| 一夲道无码专区av无码A片| 波多野结衣一二三区| 日韩一级一片| 天天综合7799| 日本操屄视频| 无码中文字幕网站| 日本精品视频一区二区| 91av视频在线观看| 岛国无码av| 成人在线观看网| 日韩色吧| 亚洲精品成人网站| 99在线精品视频| 高清无码网址| 三级黄片免费看| 乱子伦】国产精品| 国产无码高清在线观看| 亚洲无码自拍| AV无码免费一区二区三区不卡 | 特级毛片www| 超碰九九热| 成人无码视频| 黄色无码电影| 亚洲三级无码在线观看| 超碰成人在线观看| 国产jizz| 性色a| 黑人无码AV黑人天堂无码AV| 日韩性爱在线视频| 老女人操逼视频| 亚洲精品无码a片| 草av| 亚洲黄色无码| 韩国三级HD中文字幕的背景音乐 | 五月婷婷六月丁香| 91老熟女视频| 91国内精品| 亚洲无码免费看| 亚洲免费观看高清完整版在va线观看 | 欧美性爱成人| 亚洲口味重一级黄片| 丝袜一区| 97伊人超碰| 操B网站| 色中色在线视频| 91精品国产乱码久久久久| 先锋影音在线资源| 翔田千里无码播放| av天堂电影网| 伊人网成人| 江苏妇搡BBB搡BBBB| 52妺嘿嘿午夜福利在线| 777777视频| 在线免费观看无码视频| 亚洲成人电影天堂| 中文字幕免费在线| 日韩免费中文字幕| 超碰8| 特级西西444www高清视频| 色综合天天综合成人网| 成人自拍网站| 一区二区av| 日韩一级无码特黄AAA片| 蜜桃久久精品成人无码AV| 国产成人一区| 欧美图片小说| 亚洲在线资源| 天天爽爽爽爽爽成人片| 国产毛片一区二区三区| 超碰伊人大香蕉| 国产黄色片网站| 狠狠操av| 一级黄色电影免费观看| 91人妻人人澡人人爽人人DVD| 国产xxxx| 婷久久| 亚洲天堂网在线观看视频| 岛国A视频| 青青草精品| 欧美人妻日韩精品| 精品久久久久久亚洲| 国产熟妇码AV| 欧美成人三级| 丁香花激情网| 国产91黄色| 午夜成人福利电影| 福利色播| 亚洲免费AV在线| 国产免费成人| 久久草草热国产精品| 欧美日韩免费在线| 91一级A片在线观看| 91一区| 一二区视频| 大香蕉大香蕉网| 亚洲超级高清无码第一在线视频观看| 中文字幕有码在线观看| 色情电影网站| 国产成人精品免费看视频| 国产成人视频在线播放| 91免费视频网站| av资源免费观看| 影音先锋在线视频观看| 中文无码网站| 波多野结衣性爱视频| 精品人妻一区二区蜜桃视频| 精品国产女人| 日本久久不卡| 国产九九九| 大荫蒂HD大荫蒂视频| 天堂网AV在线| 亚洲毛片亚洲毛片亚洲毛片| 欧美一区二区丁香五月天激情| 91狠狠综合久久久| 精品亚洲无码视频| 久久久久黄片| 嫖中国站街老熟女HD| 黄片在线视频| 蜜桃av色偷偷av老熟女| 免费国产A片| 国产婬片lA片www777| 蜜桃成人AV| 91麻豆成人| 日韩黄色电影网址| 婷婷午夜精品久久久久久| 国产a片视频| 国产男女性爱视频播放| 黄色视频网站免费在线观看| 亚洲性天堂| 在线成人AV| 午夜精品在线观看| 黄色视频在线观看亚洲一区二区三区免费| 亚洲天堂无码在线观看| 欧美日韩国产成人在线| 极品少妇av| 91精品国产综合久久久蜜臀粉嫩 | 日韩精品三级| 大香蕉日| 少妇搡BBBB搡BBB搡18禁| 午夜福利手机在线| 欧美自拍偷拍| 国产精品1区| 亚洲区一| 婷婷色视频| 无套内射免费视频| 狠狠干亚洲视频| 免费A级毛片在线播放不收费| 日批视频在线观看| 在线aaa| 18网站视频| 精国产品一区二区三区A片| 国产操逼网| 亚洲免费视频在线| 丁香五月激情小说| 日韩乱妇| 亚洲无码av中文字幕| 又爽又黄免费网站97双女| 91麻豆福利在线| 国产视频久久久| 国精产品一区一区三区四川| 一区二区三区免费在线观看| 久久免费播放视频| 人妻体内射精| 俺也去俺去啦| 无码精品一区| 干片网| 北条麻妃99| 日韩乱伦av| 日韩无码视屏| 国产无码做爱视频| 在线看黄网| 欧美级毛片高潮| 色逼视频| 91夫妻视频| 亚洲黄色小视频| 国产久久在线观看| 欧美v亚洲| 国产91在线拍揄自揄拍无码九色| 蜜臀久久99精品久久一区二区| 亚洲激情| 国产精品一区在线观看| 第一福利视频导航| 久久WW| 在线免费观看亚洲| 色色影音先锋| 北条麻妃91人妻互换| 又大又粗AV| 成人无码欧美大片免费看| 欧洲黑人成人A版免费视频| 亚洲日韩精品秘在线观看| 爱爱一区| 特级毛片片A片AAAAAA| 91老熟女视频| 囯产精品一区二区三区线一牛影视1| 久草视频福利在线| 国产av天天| 成人性爱视频在线| 国产黄色直播| 国产乱码| 亚洲无码高清在线观看视频| 无码视频在线| 91精品人妻一区二区三区蜜桃 | 免费自拍视频| 国产黄色在线看| 97av视频| 午夜免费AV| a片视频免费观看| 操一炮在线视频| 日本三级网站| 成人精品一区二区三区| 91蝌蚪丨人妻丨丝袜| 特黄aaaaaaaa真人毛片| 日韩小视频在线观看| 亚洲涩情91日韩一区二区| 亚洲另类天堂| 俺来射| 国产精品久久免费| 色视频免费观看| 操屄在线视频| 特黄特色免费视频| 国产精品白浆| 18成人在线观看| 大香蕉在线99| 三级片网站国产| 亚洲福利天堂| 国产色黄视频| 男女网站在线观看| 欧美日本成人网站入口| 男女啪啪网站| 亚洲欧美在线视频| 国产精品一二三| 日韩一级黄色视频| 天堂一区二区三区| 精品福利在线| 91精品久久人妻一区二区夜夜夜 | 韩日A片| 欧美激情视频在线| 亚洲精品国产精品乱玛不99| 日韩无码人妻久久一区二区三区 | 日韩一本道在线| 五月天激情av| 1204手机看片| 竹菊av一区二区三区四区五区| 婷婷在线影院| AV大全在线免费观看| 亚洲精品A片| 东京亚洲无码| 男人天堂无码成人| 日日碰狠狠躁久久躁婷婷| 欧美黄片区| 中文字幕精品综合| 日韩无码人妻系列| 5252a我爱haose01我愿| 久久青草影院| 91精品国产综合久久久蜜臀图片| 国产91小视频| 日韩美女在线视频| 亚洲日韩精品欧美一区二区yw| 一区二区小视频| 免费aaa| 久久久久久亚洲AV黄床| 无套内射在线播放| 日韩在线视频第一页| 中文字幕在线无码视频| 日韩A片免费观看| 精品日韩中文字幕| 91久久无码一区人妻A片蜜桃| 四虎看片| 懂色AV成人| 狠狠躁日日躁夜夜躁A片男男视频 精品无码一区二区三区蜜桃李宗瑞 | 91三级在线观看| 欧美AA视频| 特级艺体西西444WWw| 北条麻妃被躁57分钟视频在线 | www.777熟女人妻| 嫩草A片www在线观看| 在线视频福利| 天天干天天日天天干天天日 | 久久久久久久大香蕉| 亚州无码一区| 久久久久久穴| 久久免费黄色| 国产三级电影在线观看| 亚洲口爆| 男女激情网站| 波多野结衣无码高清| 午夜大香蕉| 国产性交网站| 五月亚洲六月婷婷| av天天av无码av天天爽| 91成人免费在线观看| 亚洲成人动漫免费| 国产三级性爱视频| 亚洲第一中文字幕| 嫩草久久99www亚洲红桃| 国产AV无码高清| 东北女人操逼视频| 亚洲中文娱乐| 亚洲中文字幕一区二区| 成人精品免费视频| 日韩精品三区| 偷偷撸在线| 成人免费无码毛片| 日韩无码一卡二卡| 成人AV午夜福利| 欧美久久久久久久| 日韩成人黄片| 夜夜艹| 国产AV不卡| 免费看黃色AAAAAA片| 欧美日韩中文字幕在线观看| 亚洲日韩在线播放| 91人妻人人澡人人爽人人精吕| 日韩人妻精品一区二区| a片免费网址| a√天堂资源中文8| AV天堂电影网| 999一区二区三区| 国产精品无码白浆高潮| 欧美另类视频| 亚洲三级网站| 一级做a爰片毛片A片| 91亚洲在线观看| 一级a一级a爰片免费免免中国A片| 91欧美精品成人综合在线观看| 在线国产福利| 免费播放婬乱男女婬视频国产| 99热超碰在线| 中文字幕中文字幕| 五月天黄色电影| 五月无码视频| 特级黄色A片| 波多野结衣久久精品| 超碰婷婷| 国产成人a亚洲精品无码| 波多野吉衣毛片| 亚洲一区二区无码| 美女性爱3P视频| 中文字幕人成人乱| 免费看黄色片视频| 久久永久免费视频| 婷婷五月综合在线| 超碰97人人操| 国产99热| 久久成人18免费网站波多野结衣| 久草网在线观看| 国产精品av在线播放| 欧美AA视频| 蜜桃av在线播放| 人人操网| 免费一级婬片AAA片毛片A级 | 一本道高清无码视频| 无码视频播放| 69视频在线免费观看| 国产性生活视频| 蜜臀久久久99久久久久久久| 一道本一区二区三区| 老司机无码视频| 亚洲AV网站| 国产精品视频一区二区三区在线观看 | 亚洲a在线观看| 五丁香在线观看AV| 操逼资源| 成人精品一区日本无码网站suv| 中文字幕精品人妻| 黄色国产av| 国产一区二区三区在线| 亚洲国产成人无码| 2021天天夜日| 一道本无码在线观看| 2018最好看的中文字幕高清电影 | 亚洲无码人妻视频| 97看片| 四川少妇搡bbbbb搡多人| 女色综合| 欧美a片在线看| 青娱乐免费视频| 伊人小视频| 国产免费久久| 久久视频一二| 69AV免费视频| 国产午夜成人免费看片无遮挡| 欧美黑人操逼| 激情五月婷婷| 无码成人在线观看| A级毛片视频| 天天摸天天日| 国产在线黄片| 2015中文字幕黄色视频| a片在线免费| 91人人人人| 色丁香五月婷婷| 91AV电影| 日韩七区| 日韩精品在线视频观看| 久久女女| 中日韩欧美一级A片免费| 亚洲AV无码一区二区三区少妇| 久久久久亚洲精品| 亚洲成色A片77777在线小说| 日韩在线视频网站| 日韩美女免费性爱视频| 少妇搡BBBB搡BBB搡18禁| 亚洲网站在线播放| 99热自拍| 欧美性爱超碰| 97超碰自拍| 91麻豆精品视频| 亚洲精品蜜桃| 天天干强奸视频在线综合| 欧美日韩成人网站| 久久久久9| 久久99精品视频| 水果派成人播放无码| 91色色色色| 杨贵妃一级婬片90分钟| 亚洲一级Av无码毛片久久精品| 91视频青青草| 成人性爱免费网站| 翔田千里无码在线| av在线天堂| 老鸭窝久久久| 成人aV无码精品国产一区二区| 中文字幕在线精品| 国产在线观看免费成人视频| 中文字幕无码Av在线| 精品99999| 91在线精品一区二区| 亚洲国产另类精品| 99久久婷婷国产综合| 91精品国产91久久久久久久久久 | 日韩中文字幕免费在线观看| 日韩免费毛片| 色淫视频| H网站在线观看| 一本色道久久综合无码欧美| 日本少妇午夜福利| 蜜桃精品无码| 午夜精品视频在线观看| 无码视频免费在线观看| 日韩无码人妻视频| 玖玖爱在线精品视频| 亚洲中文无码字幕| 国产精品视频一区二区三区在线观看| 精品人妻一区二区免费蜜桃| 日本特级黄A片免费观看| 亚洲133| www.豆花社区成人| 99免费在线观看视频| 日韩精品在线免费观看| 精品久久久久久亚洲| 老熟妇一区二区三区啪啪| 色婷婷综合网| 国产3p露脸普通话对白| 中文字幕高清无码在线观看| 国产精品无码一区二区在线欢| 最新毛片网站〖网:.〗| 狠狠干狠狠爱| 狠狠撸视频| 乱伦一级黄片| 无码欧洲| 水果派AV解说| 夜色精品视频| 久久免费视频1| 日韩免费在线| 国产69视频在线观看| 日韩毛片在线播放| 日逼网址| AV片免费看| 日韩成人在线观看视频| av干在线| 猛男大粗猛爽H男人味| 91在线无码精品秘| 91精品国产成人www| 3D动漫精品一区二区在线播放免费| 91探花在线观看| 日韩无码视频二区| 91香蕉网| 精品无码一区二区三| 亚洲视频精选| 91无码人妻一区二区成人AⅤ| 久久久久亚洲| 日韩A毛片| 最新AV在线| 996久久| ww免费视频| 99香蕉视频| 亚洲精品无码中文| 天天想夜夜操| 欧美熟妇精品一二三区| 国产亚洲99久久精品熟女|