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

6500字全面講解 Redis 性能優化點!

開發 前端 Redis
針對 Redis 服務,我們能做哪些性能優化呢?或者說,應該避免哪些性能浪費呢?

 [[416639]] 

在一些網絡服務的系統中,Redis 的性能,可能是比 MySQL 等硬盤數據庫的性能更重要的課題。比如微博,把 熱點微博 [1] ,最新的用戶關系,都存儲在 Redis 中,大量的查詢擊中 Redis,而不走 MySQL。

那么,針對 Redis 服務,我們能做哪些性能優化呢?或者說,應該避免哪些性能浪費呢?

Redis 性能的基本面

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

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

  1. 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 使用操作系統提供的虛擬內存來存儲數據。而且,這個操作系統一般就是指 Unix。Windows 上也能運行 Redis,但是需要特殊處理。如果你的操作系統使用交換空間,那么 Redis 的數據可能會被實際保存在硬盤上。

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

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

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

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

優化網絡延時

Redis 的官方博客在幾個地方都說,性能瓶頸更可能是 網絡 [6] ,那么我們如何優化網絡上的延時呢?

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

但很多公司的業務規模不是單機部署能支撐的,所以還是得用 TCP。

Redis 客戶端和服務器的通訊一般使用 TCP 長鏈接。如果客戶端發送請求后需要等待 Redis 返回結果再發送下一個指令,客戶端和 Redis 的多個請求就構成下面的關系:

(備注:如果不是你要發送的 key 特別長,一個 TCP 包完全能放下 Redis 指令,所以只畫了一個 push 包)

這樣這兩次請求中,客戶端都需要經歷一段網絡傳輸時間。

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

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

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

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

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

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

  1. require 'redis' 
  2. @redis = Redis.new() 
  3. @redis.pipelined do 
  4.     @redis.get 'key1' 
  5.     @redis.set 'key2' 'some value' 
  6. end 
  7. # => [12

據說,有些語言的客戶端,甚至默認就使用 pipeline 來優化延時問題,比如 node_redis。

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

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

小結一下:

  1. 使用 unix 進程間通信,如果單機部署

  2. 使用 multi-key 指令合并多個指令,減少請求數,如果有可能的話

  3. 使用 transaction、script 合并 requests 以及 responses

  4. 使用 pipeline 合并 response

警惕執行時間長的操作

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

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

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

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

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

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

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

  1. 從中隨機取出 20 個 keys

  2. 把過期的刪掉。

  3. 如果剛剛 20 個 keys 中,有 25% 以上(也就是 5 個以上)都是過期的,Redis 認為,過期的 keys 還挺多的,繼續重復步驟 1,直到滿足退出條件:某次取出的 keys 中沒有那么多過去的 keys。

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

對此,Redis 作者的 建議 [10] 是警惕 EXPIREAT 這個指令,因為它更容易產生 keys 同時過期的現象。我還見到過一些建議是給 keys 的過期時間設置一個隨機波動量。最后,redis.conf 中也給出了一個方法,把 keys 的過期刪除操作變為異步的,即,在 redis.conf 中設置 lazyfree-lazy-expire yes 。

優化數據結構、使用正確的算法

一種數據類型(比如 string,list)進行增刪改查的效率是由其底層的存儲結構決定的。

我們在使用一種數據類型時,可以適當關注一下它底層的存儲結構及其算法,避免使用復雜度太高的方法。舉兩個例子:

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

除了時間性能上的考慮,有時候我們還需要節省存儲空間。比如上面提到的 ziplist 結構,就比 hashtable 結構節省存儲空間(Redis Essentials 的作者分別在 hashtable 和 ziplist 結構的 Hash 中插入 500 個 fields,每個 field 和 value 都是一個 15 位左右的字符串,結果是 hashtable 結構使用的空間是 ziplist 的 4 倍。)。但節省空間的數據結構,其算法的復雜度可能很高。所以,這里就需要在具體問題面前做出權衡。歡迎關注公眾號:朱小廝的博客,回復:1024,可以領取redis專屬資料。

如何做出更好的權衡?我覺得得深挖 Redis 的存儲結構才能讓自己安心。這方面的內容我們下次再說。

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

考慮操作系統和硬件是否影響性能

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

  1. CPU:Intel 多種 CPU 都比 AMD 皓龍系列好

  2. 虛擬化:實體機比虛擬機好,主要是因為部分虛擬機上,硬盤不是本地硬盤,監控軟件導致 fork 指令的速度慢(持久化時會用到 fork),尤其是用 Xen 來做虛擬化時。

  3. 內存管理:在 linux 操作系統中,為了讓 translation lookaside buffer,即 TLB,能夠管理更多內存空間(TLB 只能緩存有限個 page),操作系統把一些 memory page 變得更大,比如 2MB 或者 1GB,而不是通常的 4096 字節,這些大的內存頁叫做 huge pages。同時,為了方便程序員使用這些大的內存 page,操作系統中實現了一個 transparent huge pages(THP)機制,使得大內存頁對他們來說是透明的,可以像使用正常的內存 page 一樣使用他們。但這種機制并不是數據庫所需要的,可能是因為 THP 會把內存空間變得緊湊而連續吧,就像 mongodb 的文檔 [11] 中明確說的,數據庫需要的是稀疏的內存空間,所以請禁掉 THP 功能。Redis 也不例外,但 Redis 官方博客上給出的理由是:使用大內存 page 會使 bgsave 時,fork 的速度變慢;如果 fork 之后,這些內存 page 在原進程中被修改了,他們就需要被復制(即 copy on write),這樣的復制會消耗大量的內存(畢竟,人家是 huge pages,復制一份消耗成本很大)。所以,請禁止掉操作系統中的 transparent huge pages 功能。

  4. 交換空間:當一些內存 page 被存儲在交換空間文件上,而 Redis 又要請求那些數據,那么操作系統會阻塞 Redis 進程,然后把想要的 page,從交換空間中拿出來,放進內存。這其中涉及整個進程的阻塞,所以可能會造成延時問題,一個解決方法是禁止使用交換空間(Redis Essentials 中如是建議,如果內存空間不足,請用別的方法處理)。

考慮持久化帶來的開銷

Redis 的一項重要功能就是持久化,也就是把數據復制到硬盤上。基于持久化,才有了 Redis 的數據恢復等功能。

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

首先說,RDB 全量持久化。

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

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

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

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

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

  1. write 可能會因為輸出的 buffer 滿了,或者 kernal 正在把 buffer 中的數據同步到硬盤,就被阻塞了。

  2. fsync 的作用是確保 write 寫入到 aof 文件的數據落到了硬盤上,在一個 7200 轉/分的硬盤上可能要延時 20 毫秒左右,消耗還是挺大的。更重要的是,在 fsync 進行的時候,write 可能會被阻塞。

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

  1. always:當把 appendfsync 設置為 always,fsync 會和客戶端的指令同步執行,因此最可能造成延時問題,但備份及時性最好。

  2. everysec:每秒鐘異步執行一次 fsync,此時 redis 的性能表現會更好,但是 fsync 依然可能阻塞 write,算是一個折中選擇。

  3. no:redis 不會主動出發 fsync (并不是永遠不 fsync,那是不太可能的),而由 kernel 決定何時 fsync

使用分布式架構 —— 讀寫分離、數據分片

以上,我們都是基于單臺,或者單個 Redis 服務進行優化。下面,我們考慮當網站的規模變大時,利用分布式架構來保障 Redis 性能的問題。

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

  1. 數據量很大,單臺服務器內存不可能裝得下,比如 1 個 T 這種量級

  2. 需要服務高可用

  3. 單臺的請求壓力過大

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

這樣的架構,可以為性能提升加入新的切入點:

  1. 把慢速的指令發到某些從庫中執行

  2. 把持久化功能放在一個很少使用的從庫上

  3. 把某些大 list 分片

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

當然,使用分布式架構,也可能對性能有影響,比如請求需要被轉發,數據需要被不斷復制分發。(待查)

后話

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

 

 

責任編輯:張燕妮 來源: 俠夢的開發筆記
相關推薦

2020-05-08 15:37:20

Redis分布式優化點

2009-09-22 15:22:08

Hibernate性能

2009-11-27 13:24:20

PHP代碼性能優化

2009-12-15 17:43:44

寬帶路由器

2010-04-23 14:48:26

Oracle性能優化

2009-10-28 11:09:59

2009-11-14 09:42:01

2009-10-30 09:30:33

2024-03-12 09:47:10

Redis數據庫

2024-11-19 08:09:48

2017-01-15 15:13:37

Android性能優化優化點

2009-09-29 10:12:03

Hibernate A

2009-09-23 15:50:21

Hibernate u

2009-09-24 10:50:31

Hibernate主鍵

2009-07-17 16:43:02

JRuby性能優化

2024-07-12 08:42:58

Redis高性能架構

2010-04-27 11:32:41

2010-01-05 18:08:11

2009-12-23 10:13:20

WPF體系架構

2010-03-16 15:28:40

Ubuntu linu
點贊
收藏

51CTO技術棧公眾號

亚洲欧美一区二区三区久本道91| 奇米精品一区二区三区在线观看| 亚洲成人亚洲激情| 日韩av在线综合| 欧美一级二级三级区| 国产宾馆实践打屁股91| 日本在线精品视频| 91在线播放观看| 夜夜躁狠狠躁日日躁2021日韩| 欧美日韩视频专区在线播放| 成人免费网站入口| 二区三区在线播放| 成人国产电影网| 国产精自产拍久久久久久| 国产午夜福利一区二区| 久久亚洲国产| 亚洲国产成人av在线| 日本黄大片一区二区三区| 久草在线中文最新视频| 成人免费一区二区三区视频| 欧美日韩高清在线一区| www.热久久| 免费观看日韩电影| 91国产美女视频| 1024手机在线视频| 久久电影院7| 一区二区欧美日韩视频| 亚洲av无码一区二区三区网址| 日韩毛片免费看| 日本电影亚洲天堂一区| 国产中文字幕视频在线观看| 在线观看中文字幕的网站| 国产欧美日韩三区| 欧洲一区二区在线| 色视频在线观看福利| 中文精品久久久久人妻不卡| 色天天综合网| 亚洲无线码在线一区观看| 中文字幕乱码一区| 亚洲一区 二区| 91精品国产手机| 国产原创精品在线| 日本肉肉一区| 欧美性受极品xxxx喷水| 韩国日本美国免费毛片| 自拍视频在线看| 狠狠躁夜夜躁人人爽天天天天97| 精品成在人线av无码免费看| 伊人福利在线| 一区二区三区四区乱视频| 国产日产欧美一区二区| 久久77777| 亚洲色图一区二区三区| 亚洲国产精品影视| av毛片在线| 一区二区成人在线| www.xxx麻豆| 福利网站在线观看| 精品久久久中文| 免费欧美一级视频| 欧美18av| 欧美视频中文一区二区三区在线观看| 日韩在线第三页| av在线播放一区| 欧美日韩一区成人| 欧美视频亚洲图片| 亚洲视频国产| 日韩电影在线观看永久视频免费网站| 中文在线一区二区三区| 免费黄色成人| 最近2019中文免费高清视频观看www99 | 69174成人网| 成人毛片在线免费观看| 99国内精品久久| 欧美一区观看| 日本在线视频站| 亚洲最大成人综合| 六月丁香婷婷激情| 久久久久久久性潮| 日韩视频在线你懂得| 丰满少妇xbxb毛片日本| 人人香蕉久久| 色婷婷av一区二区三区久久| 欧美成人精品欧美一级| av不卡在线| 国产精品日韩欧美综合| 国产高潮流白浆喷水视频| 北条麻妃国产九九精品视频| 日本不卡二区| 中文字幕在线三区| 色综合一区二区三区| 欧美美女一级片| 91免费精品国偷自产在线在线| 亚洲国产中文字幕久久网 | 欧美猛男男男激情videos| 色哟哟网站入口亚洲精品| 精品深夜av无码一区二区老年| 久久天堂成人| 成人综合色站| 福利视频在线导航| 亚洲成人精品一区| 四季av一区二区三区| 欧洲精品一区| 麻豆国产va免费精品高清在线| 欧美日韩综合在线观看| 国内成+人亚洲+欧美+综合在线| 精品综合久久| h片在线播放| 日本韩国欧美在线| 亚洲一区二区三区四区av| 色88久久久久高潮综合影院| 午夜免费在线观看精品视频| 国产日韩一级片| 欧美国产综合色视频| 欧美亚洲一二三区| 秋霞一区二区三区| 久久精品国产2020观看福利| 黄色av一级片| 92国产精品观看| 久久这里只有精品8| 精品国产美女a久久9999| 日韩国产欧美精品在线| 欧美日韩国产精品综合| 极品美女销魂一区二区三区| 欧美日韩在线高清| 人人草在线视频| 精品捆绑美女sm三区| 尤物在线免费视频| 美女在线观看视频一区二区| 欧美日韩一区二区视频在线| 国产色播av在线| 精品捆绑美女sm三区| 久草国产在线观看| 国产精品一区二区视频| 中文字幕一区二区三区四区五区六区 | 草莓视频一区| 菠萝菠萝蜜在线观看| 欧美日韩亚洲综合在线 | 亚洲一级二级三级| 无套内谢丰满少妇中文字幕| 欧美韩日一区| 成人黄色短视频在线观看| 成人一区二区不卡免费| 在线免费亚洲电影| 小早川怜子久久精品中文字幕| 亚洲欧美久久久| 免费影院在线观看一区| 台湾佬成人网| 夜夜嗨av一区二区三区免费区| 日本黄色中文字幕| 国产日韩欧美精品在线| 日本www.色| 青青草综合网| 成人激情春色网| 91精品久久久久久粉嫩| 精品国产在天天线2019| 国产午夜激情视频| 2024国产精品| 欧美三级理论片| 久久久久免费av| 99一区二区| 九九色在线视频| 亚洲精品一区二区三区婷婷月| 日日噜噜噜噜人人爽亚洲精品| 久久精品无码一区二区三区| 我要看一级黄色大片| 91精品99| 精品国产一区二区三区免费| 欧美理论影院| 日韩中文字幕在线观看| 精品国产av 无码一区二区三区| 亚洲综合免费观看高清完整版| 国产原创剧情av| 蜜桃视频一区| 老汉色影院首页| 老司机凹凸av亚洲导航| 日韩免费观看网站| 国产三区视频在线观看| 亚洲韩国日本中文字幕| 特黄视频免费看| 中文字幕亚洲在| av电影在线播放| 日韩精品国产精品| 女同性恋一区二区| 久久资源综合| 国产精品一区久久久| 欧美黄色视屏| 亚洲视频国产视频| 99久久夜色精品国产亚洲| 亚洲成av人片在线观看无码| 欧美日韩生活片| 成人一道本在线| 不卡av免费在线| 欧美aⅴ99久久黑人专区| 久久伊人一区| 在线观看视频一区二区三区| 国产精品精品久久久久久| 曰本三级在线| 在线播放精品一区二区三区 | 国产丝袜一区视频在线观看| 一区二区www| 精品久久久国产精品999| 日本黄色免费片| 久久综合九色综合97_久久久| 一级黄色大片儿| 天堂一区二区在线免费观看| 免费日韩在线观看| 成人久久久久| 美女一区视频| 高清精品视频| 成人激情春色网| 成人四虎影院| 日韩av电影免费观看高清| 久草免费在线色站| 精品国偷自产在线视频| 国产中文在线| 亚洲男人av电影| 色噜噜一区二区三区| 日韩一区二区电影网| 亚洲视频在线观看一区二区| 日韩欧美成人网| 久久精品久久精品久久| 亚洲人成在线播放网站岛国| 中文字幕欧美激情极品| 久久久久久99精品| 亚洲精品成人无码熟妇在线| 99在线视频精品| 黄色av电影网站| 国产精品一区久久久久| 爽爽爽在线观看| 久久精品国产色蜜蜜麻豆| 黄色三级视频片| 久久久噜噜噜| 久热免费在线观看| 视频一区二区三区中文字幕| 欧美日韩在线不卡视频| 亚洲综合不卡| 国产精品动漫网站| 亚洲一区欧美激情| www.中文字幕在线| 99在线精品免费视频九九视 | 国产视频精品在线| 五月激情婷婷网| 精品偷拍一区二区三区在线看| 秋霞视频一区二区| 亚洲国内精品在线| 青青草观看免费视频在线| 日韩成人网免费视频| 特黄视频在线观看| 日韩电视剧免费观看网站| 青青青草原在线| 亚洲视频999| 天堂地址在线www| 久久福利网址导航| 婷婷色在线播放| 性欧美在线看片a免费观看| 成入视频在线观看| 欧洲日韩成人av| 成人黄色毛片| 亚洲综合国产精品| 国产在线播放精品| 蜜桃视频在线观看成人| 欧美一区2区| 国产人妻互换一区二区| 影音先锋一区| 日韩欧美精品在线观看视频| 蜜臀a∨国产成人精品| 三级黄色片免费观看| 成人av在线影院| 免费观看a级片| 亚洲丝袜制服诱惑| xxxxxx国产| 在线观看亚洲成人| 99久久精品国产一区二区成人| 欧美精品一区视频| 免费在线观看一级毛片| 精品久久久999| 美女av在线免费看| 国产欧美日韩中文字幕| 一区中文字幕| 天堂资源在线亚洲视频| 欧美一区精品| 欧美 日韩精品| 国产在线视视频有精品| 亚洲天堂网一区二区| 亚洲欧洲成人自拍| 91美女免费看| 欧美喷潮久久久xxxxx| 好吊视频一区二区三区| 在线国产精品视频| av老司机在线观看| 国产精品专区第二| 国内精品免费| 一区二区三区四区五区精品| 亚洲国产日本| 中文字幕色网站| 国产亚洲一区字幕| 精品无码久久久久久久久| 欧美亚洲一区二区在线观看| 亚洲精品国产一区二| 中文字幕亚洲自拍| 理论片午夜视频在线观看| 91久久国产综合久久91精品网站| 欧美91在线| 久久免费一级片| 老司机免费视频一区二区| 国产黄色三级网站| 一区二区三区中文免费| 亚洲图片在线视频| 亚洲成av人影院在线观看| 欧美猛烈性xbxbxbxb| 国产成人精品久久久| 九色丨蝌蚪丨成人| 国产高清不卡无码视频| 久久精品国产99| 欧美 日韩 成人| 欧美日韩在线另类| 亚洲男女视频在线观看| 久久久999国产精品| 黑人一区二区三区| 日韩电影免费观看高清完整| 一本久道久久久| 激情av中文字幕| 一区二区三区欧美激情| 国产精品人妻一区二区三区| 国产一区二区三区在线观看视频 | 91福利区在线观看| 成人欧美视频在线| 欧美在线免费| 一级做a爱视频| 亚洲欧美乱综合| 99久久精品国产一区二区成人| 久久久久北条麻妃免费看| 欧美成人高清视频在线观看| 亚洲高清在线播放| 青青草国产成人99久久| 黄色片网站免费| 欧日韩精品视频| 成年人在线视频免费观看| 国产成人精品午夜| 国内精品久久久久久久影视简单| 成人午夜视频免费在线观看| 久久网这里都是精品| 中文字幕一区在线播放| 亚洲欧美日韩一区二区在线| sis001欧美| 日韩一区免费观看| 麻豆精品精品国产自在97香蕉| 日本理论中文字幕| 在线观看国产精品网站| 亚洲1卡2卡3卡4卡乱码精品| 国产一区二区色| 一区二区三区网站| 亚洲乱妇老熟女爽到高潮的片| 亚洲综合久久久久| 五月婷在线视频| 国产97在线|亚洲| 欧美成免费一区二区视频| 蜜臀一区二区三区精品免费视频| 自拍偷拍亚洲激情| www.com欧美| 91精品国产777在线观看| 亚洲人成精品久久久| 免费看污污网站| 一区二区三区中文字幕精品精品 | 少妇网站在线观看| 最新中文字幕一区二区三区| 国内老熟妇对白hdxxxx| 68精品久久久久久欧美| 欧美久久综合网| 三级网站免费看| 精品久久中文字幕| 在线日本中文字幕| aa日韩免费精品视频一| 久久国产精品久久久久久电车| 亚洲色图日韩精品| 日韩免费性生活视频播放| 色综合亚洲图丝熟| 夜夜爽99久久国产综合精品女不卡 | 老牛国产精品一区的观看方式| 亚洲精品国产精品乱码在线观看| 日韩精品最新网址| 激情开心成人网| 国产成人亚洲综合无码| 久久久久国产精品厨房| 国产美女免费看| 91成人在线观看国产| 99成人超碰| 中文字幕丰满孑伦无码专区| 欧美精品亚洲二区| 欧美男男tv网站在线播放| 亚洲天堂电影网| 99re66热这里只有精品3直播| 中文字幕乱码视频| 国产69精品久久久久99| 国产韩国精品一区二区三区| 欧美精品欧美极品欧美激情| 欧美精品少妇一区二区三区| 肉色欧美久久久久久久免费看| www插插插无码免费视频网站|