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

直擊Redis持久化磁盤IO痛點,讓存儲不再有負擔!

存儲 存儲軟件 Redis
Redis set 對外提供的功能與 list 類似是一個列表的功能,特殊之處在于 set 是可以自動排重的,當你需要存儲一個列表數據,又不希望出現重復數據時,set 是一個很好的選擇,并且 set 提供了判斷某個成員是否在一個 set 集合內的重要接口,這個也是 list 所不能提供的。

Redis 常用數據類型

Redis 最為常用的數據類型主要有以下五種:

  • String
  • Hash
  • List
  • Set
  • Sorted set

在具體描述這幾種數據類型之前,我們先通過一張圖了解下 Redis 內部內存管理中是如何描述這些不同數據類型的:

首先 Redis 內部使用一個 redisObject 對象來表示所有的 key 和 value,redisObject 最主要的信息如上圖所示。type 代表一個 value 對象具體是何種數據類型,encoding是不同數據類型在Redis內部的存儲方式,比如:type=string 代表 value 存儲的是一個普通字符串,那么對應的 encoding 可以是 raw 或者是 int,如果是 int 則代表實際 Redis 內部是按數值型類存儲和表示這個字符串的,當然前提是這個字符串本身可以用數值表示,比如:"123" "456"這樣的字符串。

[[225271]]

這里需要特殊說明一下 vm 字段,只有打開了 Redis 的虛擬內存功能,此字段才會真正的分配內存,該功能默認是關閉狀態的,該功能會在后面具體描述。

通過上圖我們可以發現 ,Redis 使用 redisObject 來表示所有的 key/value 數據是比較浪費內存的,當然這些內存管理成本的付出主要也是為了給 Redis 不同數據類型提供一個統一的管理接口,實際作者也提供了多種方法幫助我們盡量節省內存使用,隨后會具體討論。

下面我們先逐一分析這五種數據類型的使用和內部實現方式:

String

常用命令:

Set、get、decr、incr、mget 等。

應用場景:

String 是最常用的一種數據類型,普通的 key/value 存儲都可以歸為此類,這里就不所做解釋了。

實現方式:

String 在 Redis 內部存儲默認就是一個字符串,被 redisObject 所引用,當遇到 incr、decr 等操作時會轉成數值型進行計算,此時 redisObject 的 encoding 字段為int。

Hash

常用命令:

Hget、hset、hgetall 等。

應用場景:

我們簡單舉個實例來描述下 Hash 的應用場景,比如我們要存儲一個用戶信息對象數據,包含以下信息:

用戶 ID 為查找的 key,存儲的 value 用戶對象包含姓名,年齡,生日等信息,如果用普通的 key/value 結構來存儲,主要有以下2種存儲方式:

***種方式將用戶 ID 作為查找 key,把其它信息封裝成一個對象以序列化的方式存儲,這種方式的缺點是,增加了序列化/反序列化的開銷,并且在需要修改其中一項信息時,需要把整個對象取回,并且修改操作需要對并發進行保護,引入CAS等復雜問題。

第二種方法是這個用戶信息對象有多少成員就存成多少個 key-value 對兒,用用戶 ID +對應屬性的名稱作為唯一標識來取得對應屬性的值,雖然省去了序列化開銷和并發問題,但是用戶 ID 為重復存儲,如果存在大量這樣的數據,內存浪費還是非常可觀的。

那么 Redis 提供的 Hash 很好地解決了這個問題,Redis 的 Hash 實際是內部存儲的 Value 為一個 HashMap,并提供了直接存取這個 Map 成員的接口,如下圖:

也就是說,Key 仍然是用戶 ID,value 是一個 Map,這個 Map 的 key 是成員的屬性名,value 是屬性值,這樣對數據的修改和存取都可以直接通過其內部 Map 的 Key(Redis 里稱內部 Map 的 key 為 field),也就是通過 key(用戶 ID) + field(屬性標簽)就可以操作對應屬性數據了,既不需要重復存儲數據,也不會帶來序列化和并發修改控制的問題,很好地解決了問題。

這里同時需要注意,Redis 提供了接口(hgetall)可以直接取到全部的屬性數據,但是如果內部 Map 的成員很多,那么涉及到遍歷整個內部 Map 的操作,由于 Redis 單線程模型的緣故,這個遍歷操作可能會比較耗時,而另其它客戶端的請求完全不響應,這點需要格外注意。

實現方式:

上面已經說到 Redis Hash 對應 Value 內部實際就是一個 HashMap,實際這里會有2種不同實現,這個 Hash 的成員比較少時 Redis 為了節省內存會采用類似一維數組的方式來緊湊存儲,而不會采用真正的 HashMap 結構,對應的 value redisObject 的 encoding 為 zipmap,當成員數量增大時會自動轉成真正的 HashMap,此時 encoding 為 ht。

List

常用命令:

Lpush、rpush、lpop、rpop、lrange等。

應用場景:

Redis list 的應用場景非常多,也是 Redis 最重要的數據結構之一,比如 twitter 的關注列表,粉絲列表等都可以用 Redis 的 list 結構來實現,比較好理解,這里不再重復。

實現方式:

Redis list 的實現為一個雙向鏈表,即可以支持反向查找和遍歷,更方便操作,不過帶來了部分額外的內存開銷,Redis 內部的很多實現,包括發送緩沖隊列等也都是用的這個數據結構。

Set

常用命令:

Sadd、spop、smembers、sunion 等。

應用場景:

Redis set 對外提供的功能與 list 類似是一個列表的功能,特殊之處在于 set 是可以自動排重的,當你需要存儲一個列表數據,又不希望出現重復數據時,set 是一個很好的選擇,并且 set 提供了判斷某個成員是否在一個 set 集合內的重要接口,這個也是 list 所不能提供的。

實現方式:

set 的內部實現是一個 value 永遠為 null 的 HashMap,實際就是通過計算 hash 的方式來快速排重的,這也是 set 能提供判斷一個成員是否在集合內的原因。

Sorted set

常用命令:

zadd、zrange、zrem、zcard等。

使用場景:

Redis sorted set的使用場景與 set 類似,區別是set不是自動有序的,而 sorted set 可以通過用戶額外提供一個優先級(score)的參數來為成員排序,并且是插入有序的,即自動排序。當你需要一個有序的并且不重復的集合列表,那么可以選擇 sorted set 數據結構,比如 twitter 的 public timeline 可以以發表時間作為 score 來存儲,這樣獲取時就是自動按時間排好序的。

實現方式:

Redis sorted set 的內部使用 HashMap 和跳躍表(SkipList)來保證數據的存儲和有序,HashMap 里放的是成員到 score 的映射,而跳躍表里存放的是所有的成員,排序依據是 HashMap 里存的 score,使用跳躍表的結構可以獲得比較高的查找效率,并且在實現上比較簡單。

常用內存優化手段與參數

通過我們上面的一些實現上的分析可以看出 Redis 實際上的內存管理成本非常高,即占用了過多的內存,作者對這點也非常清楚,所以提供了一系列的參數和手段來控制和節省內存,我們分別來討論下。

首先最重要的一點是不要開啟 Redis 的 VM 選項,即虛擬內存功能,這個本來是作為 Redis 存儲超出物理內存數據的一種數據在內存與磁盤換入換出的一個持久化策略,但是其內存管理成本也非常的高,并且我們后續會分析此種持久化策略并不成熟,所以要關閉 VM 功能,請檢查你的 redis.conf 文件中 vm-enabled 為 no。

其次***設置下 redis.conf 中的 maxmemory 選項,該選項是告訴 Redis 當使用了多少物理內存后就開始拒***續的寫入請求,該參數能很好地保護好你的 Redis 不會因為使用了過多的物理內存而導致 swap,最終嚴重影響性能甚至崩潰。

另外 Redis 為不同數據類型分別提供了一組參數來控制內存使用,我們在前面詳細分析過 Redis Hash 是 value 內部為一個 HashMap,如果該 Map 的成員數比較少,則會采用類似一維線性的緊湊格式來存儲該 Map,即省去了大量指針的內存開銷,這個參數控制對應在 redis.conf 配置文件中下面2項:

  1. hash-max-zipmap-entries 64 
  2. hash-max-zipmap-value 512 
  3. hash-max-zipmap-entries 

含義是當 value 這個 Map 內部不超過多少個成員時會采用線性緊湊格式存儲,默認是64,即 value 內部有64個以下的成員就是使用線性緊湊存儲,超過該值自動轉成真正的 HashMap。

hash-max-zipmap-value 含義是當 value 這個 Map 內部的每個成員值長度不超過多少字節就會采用線性緊湊存儲來節省空間。

以上2個條件任意一個條件超過設置值都會轉換成真正的 HashMap,也就不會再節省內存了,那么這個值是不是設置的越大越好呢,答案當然是否定的,HashMap 的優勢就是查找和操作的時間復雜度都是 O(1) 的,而放棄 Hash 采用一維存儲則是 O(n) 的時間復雜度,如果成員數量很少,則影響不大,否則會嚴重影響性能,所以要權衡好這個值的設置,總體上還是最根本的時間成本和空間成本上的權衡。

同樣類似的參數還有:

  1. list-max-ziplist-entries 512 

說明:list 數據類型多少節點以下會采用去指針的緊湊存儲格式。

  1. list-max-ziplist-value 64 

說明:list 數據類型節點值大小小于多少字節會采用緊湊存儲格式。

  1. set-max-intset-entries 512 

注:set 數據類型內部數據如果全部是數值型,且包含多少節點以下會采用緊湊格式存儲。

***想說的是Redis內部實現沒有對內存分配方面做過多的優化,在一定程度上會存在內存碎片,不過大多數情況下這個不會成為Redis的性能瓶 頸,不過如果在Redis內部存儲的大部分數據是數值型的話,Redis內部采用了一個 shared integer 的方式來省去分配內存的開銷,即在系統啟動時先分配一個從 1~n,那么多個數值對象放在一個池子中,如果存儲的數據恰好是這個數值范圍內的數據,則直接從池子里取出該對象,并且通過引用計數的方式來共享,這樣在系統存儲了大量數值下,也能一定程度上節省內存并且提高性能,這個參數值 n 的設置需要修改源代碼中的一行宏定義 REDIS_SHARED_INTEGERS,該值 默認是 10000,可以根據自己的需要進行修改,修改后重新編譯就可以了。

Redis 的持久化機制

Redis 由于支持非常豐富的內存數據結構類型,如何把這些復雜的內存組織方式持久化到磁盤上是一個難題,所以 Redis 的持久化方式與傳統數據庫的方式有比較多的差別,Redis 一共支持四種持久化方式,分別是:

  • 定時快照方式(snapshot)
  • 基于語句追加文件的方式(aof)
  • 虛擬內存(vm)
  • Diskstore 方式

在設計思路上,前兩種是基于全部數據都在內存中,即小數據量下提供磁盤落地功能,而后兩種方式則是作者在嘗試存儲數據超過物理內存時,即大數據量的數據存儲,截止到本文,后兩種持久化方式仍然是在實驗階段,并且 vm 方式基本已經被作者放棄,所以實際能在生產環境用的只有前兩種,換句話說 Redis 目前還只能作為小數據量存儲(全部數據能夠加載在內存中),海量數據存儲方面并不是 Redis 所擅長的領域。下面分別介紹下這幾種持久化方式:

定時快照方式(snapshot):

該持久化方式實際是在 Redis 內部一個定時器事件,每隔固定時間去檢查當前數據發生的改變次數與時間是否滿足配置的持久化觸發的條件,如果滿足則通過操作系統 fork 調用來創建出一個子進程,這個子進程默認會與父進程共享相同的地址空間,這時就可以通過子進程來遍歷整個內存來進行存儲操作,而主進程則仍然可以提供服務,當有寫入時由操作系統按照內存頁(page)為單位來進行 copy-on-write 保證父子進程之間不會互相影響。

該持久化的主要缺點是定時快照只是代表一段時間內的內存映像,所以系統重啟會丟失上次快照與重啟之間所有的數據。

基于語句追加方式(aof):

aof 方式實際類似MySQL基于語句的 binlog 方式,即每條會使 Redis 內存數據發生改變的命令都會追加到一個 log 文件中,也就是說這個 log 文件就是 Redis 的持久化數據。

aof 的方式的主要缺點是追加 log 文件可能導致體積過大,當系統重啟恢復數據時如果是 aof 的方式則加載數據會非常慢,幾十G的數據可能需要幾小時才能加載完,當然這個耗時并不是因為磁盤文件讀取速度慢,而是由于讀取的所有命令都要在內存中執行一遍。另外由于每條命令都要寫 log,所以使用 aof 的方式,Redis 的讀寫性能也會有所下降。

虛擬內存方式:

虛擬內存方式是 Redis 來進行用戶空間的數據換入換出的一個策略,此種方式在實現的效果上比較差,主要問題是代碼復雜、重啟慢、復制慢等等,目前已經被作者放棄。

diskstore 方式:

diskstore 方式是作者放棄了虛擬內存方式后選擇的一種新的實現方式,也就是傳統的 B-tree 的方式,目前仍在實驗階段,后續是否可用我們可以拭目以待。

Redis持久化磁盤IO方式及其帶來的問題

有 Redis 線上運維經驗的人會發現 Redis 在物理內存使用比較多,但還沒有超過實際物理內存總容量時就會發生不穩定甚至崩潰的問題,有人認為是基于快照方式持久化的 fork 系統調用造成內存占用加倍而導致的,這種觀點是不準確的,因為 fork 調用的 copy-on-write 機制是基于操作系統頁這個單位的,也就是只有有寫入的臟頁會被復制,但是一般你的系統不會在短時間內所有的頁都發生了寫入而導致復制,那是什么原因導致 Redis 崩潰呢?

答案是 Redis 的持久化使用了 Buffer IO 造成的,所謂 Buffer IO 是指 Redis 對持久化文件的寫入和讀取操作都會使用物理內存的 Page Cache,而大多數數據庫系統會使用 Direct IO 來繞過這層 Page Cache 并自行維護一個數據的 Cache,而當 Redis 的持久化文件過大(尤其是快照文件),并對其進行讀寫時,磁盤文件中的數據都會被加載到物理內 存中作為操作系統對該文件的一層 Cache,而這層 Cache 的數據與 Redis 內存中管理的數據實際是重復存儲的,雖然內核在物理內存緊張時會做 Page Cache 的剔除工作,但內核很可能認為某塊 Page Cache 更重要,而讓你的進程開始 Swap,這時你的系統就會開始出現不穩定或者崩潰了。我們的經驗是當你的 Redis 物理內存使用超過內存總容量的3/5時就會開始比較危險了。

下圖是 Redis 在讀取或者寫入快照文件 dump.rdb 后的內存數據圖:

總結

根據業務需要選擇合適的數據類型,并為不同的應用場景設置相應的緊湊存儲參數。

當業務場景不需要數據持久化時,關閉所有的持久化方式可以獲得***的性能以及***的內存使用量。

如果需要使用持久化,根據是否可以容忍重啟丟失部分數據在快照方式與語句追加方式之間選擇其一,不要使用虛擬內存以及 diskstore 方式。

不要讓你的 Redis 所在機器物理內存使用超過實際內存總量的3/5。

責任編輯:武曉燕 來源: DBAplus社群
相關推薦

2015-11-26 17:00:26

ARM

2021-04-15 06:24:50

人工智能AI自動駕駛

2020-07-28 18:03:10

戴爾

2021-04-30 11:44:04

自動駕駛智能化汽車

2018-05-22 13:09:57

網易云信音視頻

2019-11-26 11:14:13

智能歸檔系統

2018-07-03 16:01:53

支付設計

2015-05-27 09:33:26

專家號

2015-07-14 09:08:17

戴爾任意云

2015-04-08 15:40:58

戴爾AnyCloud云計算

2017-06-26 10:23:42

傳統運維京東金融

2015-05-26 10:10:01

中國數字醫療網

2024-06-19 15:24:31

2016-09-24 14:06:13

網易云信IM服務實時通訊

2024-01-23 08:42:27

炎凰數據可視化監測容器云原生

2009-03-25 17:57:45

Linux新版企鵝

2015-05-18 16:47:23

凌銳藍信科博會云計算
點贊
收藏

51CTO技術棧公眾號

a毛片毛片av永久免费| 精品99999| 一级日韩一区在线观看| 91久久精品无码一区二区| 久久久久久久久丰满| 欧美日韩国产中文| 欧美性猛交内射兽交老熟妇| 五月婷婷伊人网| 爽爽淫人综合网网站| 亚洲精品美女在线观看| 在线观看免费视频高清游戏推荐| 日韩在线观看www| 久久99国产精品久久99| 久久久久久久久综合| 30一40一50老女人毛片| va天堂va亚洲va影视| 偷窥少妇高潮呻吟av久久免费| 国产超碰91| 国产精品第六页| 一区二区电影在线观看| 日韩av在线导航| 国产免费中文字幕| 成人小电影网站| 亚洲欧美激情小说另类| 久久99精品久久久久久三级| 波多野结衣黄色网址| 综合国产精品| 精品香蕉一区二区三区| 91香蕉视频免费看| 国产精欧美一区二区三区蓝颜男同| 中文字幕一区免费在线观看| 欧美高清视频一区| 国产成人手机在线| 精品一区二区久久| 国产成人亚洲综合91精品| 国产无码精品在线观看| 国产欧美日韩影院| 精品久久99ma| 无码人妻少妇色欲av一区二区| 播放一区二区| 欧美性猛交xxxx乱大交3| 国产奶头好大揉着好爽视频| 成人免费在线观看| 久久久高清一区二区三区| 97碰碰视频| 91麻豆国产在线| 日本女人一区二区三区| 日韩美女视频中文字幕| 日韩手机在线观看| 欧美日韩精选| 欧美第一淫aaasss性| 麻豆网址在线观看| 欧美日韩老妇| 国产亚洲a∨片在线观看| 蜜臀av一区二区三区有限公司| 欧美久久一区二区三区| 91精品啪在线观看国产60岁| 91高清国产视频| 超碰在线视屏| 香蕉加勒比综合久久| 艳色歌舞团一区二区三区| 亚洲成人影院麻豆| 国产欧美va欧美不卡在线| 久久免费看av| 国产原创av在线| 不卡的av在线| 久久久久久草| 无码精品一区二区三区在线| 成人av在线资源网站| 97自拍视频| 成人午夜福利视频| 成人激情av网| 美女精品国产| 超碰国产在线观看| 综合精品久久久| 日本久久高清视频| av毛片在线播放| 亚洲免费三区一区二区| 久久精品在线免费视频| 丝袜国产在线| 粉嫩av一区二区三区免费野| 狠狠操精品视频| 成人免费网站www网站高清| 欧美日韩一区二区三区不卡| 色播五月综合网| 999精品视频在线观看| 精品一区二区三区国产| 亚洲欧美精品一区| 99热手机在线| 9999精品视频| 亚洲国产另类 国产精品国产免费| 可以看的av网址| 久久动漫网址| 中文字幕欧美亚洲| 9999热视频| 校园激情久久| 91地址最新发布| 99久久久无码国产精品免费蜜柚| 久久精品国产精品亚洲综合| eeuss一区二区三区| 午夜福利视频一区二区| 国产精品美日韩| 高清无码一区二区在线观看吞精| gogo高清午夜人体在线| 欧美日韩视频在线观看一区二区三区| 免费在线观看日韩av| 最新精品在线| 亚洲男人天堂九九视频| 天天躁夜夜躁狠狠是什么心态| 久久一区91| 国语自产在线不卡| 中文字幕网址在线| 久久国产日韩欧美精品| 精品综合久久久| 超碰在线caoporn| 日韩欧美有码在线| 国产综合内射日韩久| 日韩国产综合| 欧洲精品在线视频| 国产精品久久欧美久久一区| 99亚偷拍自图区亚洲| 最新av在线免费观看| 亚洲综合电影| 精品国产欧美一区二区| 成人免费视频入口| 久久精选视频| 国产一区二区三区高清| 久久久久久久久免费视频| 日韩欧美一区视频| 国产精品久久AV无码| 女主播福利一区| 国产日产亚洲精品| 国产高清视频在线| 日韩欧美亚洲综合| 男女一区二区三区| 亚洲午夜视频| 亚洲精品免费网站| 欧美激情午夜| 欧美吞精做爰啪啪高潮| 波多野结衣一二三区| 91视频一区| 国产精品久久久久免费a∨| 国精产品乱码一区一区三区四区| 中文字幕免费一区| 国产精品无码一本二本三本色| 1204国产成人精品视频| 免费成人高清视频| 国产精品视频一区二区三区,| 欧美韩国日本综合| 国产黄色特级片| 欧美人与物videos另类xxxxx| 91精品国产91久久久久久吃药| 男人的天堂a在线| 亚洲最大色网站| 亚洲免费在线播放视频| 国产精品精品国产一区二区| 国产欧美一区二区| 久久bbxx| 日韩一级黄色片| 青青操国产视频| 国产精品一二三四| a天堂资源在线观看| 亚洲1区在线观看| 久久综合电影一区| 亚洲国产精品国自产拍久久| 亚洲一区二区三区四区五区中文| www.四虎精品| 亚洲一区二区毛片| 日本午夜精品一区二区三区| 午夜av成人| 日日噜噜噜夜夜爽亚洲精品| 一区二区的视频| 亚洲精品视频在线| 丰满人妻一区二区三区免费视频棣| 欧美日韩一区二区三区四区在线观看| 91久久精品国产91久久| av大大超碰在线| 精品久久一二三区| 啦啦啦免费高清视频在线观看| 黄网站免费久久| 日韩精品视频在线观看视频| 日韩欧美ww| 国产精品美女主播| 18网站在线观看| 日韩精品中文字| 中文字幕在线观看高清| 亚洲蜜臀av乱码久久精品蜜桃| 欧美xxxx日本和非洲| 在线一区欧美| 亚洲国产一区二区三区在线| 国产精品.xx视频.xxtv| 欧美激情xxxx性bbbb| 看电影就来5566av视频在线播放| 欧美精品电影在线播放| 国产性xxxx高清| 国产精品乱子久久久久| 色哟哟视频在线| 日韩国产一区二| 免费cad大片在线观看| 欧美理论电影在线精品| 国产精品一区专区欧美日韩| 人妖欧美1区| 国产一区二区美女视频| 亚洲成熟女性毛茸茸| 色婷婷久久综合| 久久黄色小视频| 欧美国产精品一区| 好男人香蕉影院| 久久91精品国产91久久小草| 国产av熟女一区二区三区| 一本久久青青| 成人91视频| 久久久久伊人| 日本欧美一级片| 97影院秋霞午夜在线观看| 亚洲欧美成人精品| 国产深喉视频一区二区| 色综合天天做天天爱| 老熟妇高潮一区二区三区| 国产综合成人久久大片91| 黄色成人在线看| 亚洲乱码电影| 欧美一区二区视频17c| 99精品国产一区二区三区2021| 国产色视频一区| 丁香高清在线观看完整电影视频| 日韩在线视频国产| 国产尤物视频在线| 亚洲欧美一区二区三区四区| 亚洲国产精品久久久久久久| 91精品国产免费| 综合久久中文字幕| 一本色道久久综合狠狠躁的推荐| 国产在线拍揄自揄拍| 亚洲人成人一区二区在线观看| 手机毛片在线观看| 久久久亚洲精品一区二区三区| 催眠调教后宫乱淫校园| 国产精品99久久久久久宅男| 手机免费av片| 久草热8精品视频在线观看| 男人靠女人免费视频网站| 91成人精品视频| 国产a级片免费看| 久久亚洲国产| 中文字幕免费在线不卡| 九九精品久久| 青青草原亚洲| 精品国产精品| 亚洲福利av在线| 四季av在线一区二区三区| 亚洲精品国产一区| 久久亚洲影视| 四虎免费在线观看视频| 欧美成人综合| 欧美 国产 精品| 欧美一区影院| 大胆欧美熟妇xx| 国产精品地址| 国产综合中文字幕| 一区二区三区国产在线| av免费看网址| 亚洲视频成人| 亚洲中文字幕久久精品无码喷水| 日韩电影在线观看电影| 蜜臀av免费观看| 久久se精品一区精品二区| 黄色一级片免费的| 国产一区二区三区免费| 8x8x成人免费视频| 国产一区二区三区av电影| 欧美成人乱码一二三四区免费| 精品一区二区三区久久| 日本久久精品一区二区| 久久99久久久久久久久久久| 国产乱女淫av麻豆国产| 国产成人日日夜夜| 一级做a爰片毛片| 91麻豆123| 亚洲一级理论片| 尤物在线观看一区| 免费在线黄色片| 精品久久久久久亚洲国产300| 在线观看日本网站| 91麻豆精品国产91久久久资源速度| 国产女人爽到高潮a毛片| 日韩一区二区三区三四区视频在线观看 | 日本久久一级片| 亚洲美女av网站| 欧美边添边摸边做边爱免费| 久久久久久久91| 亚洲v.com| 亚洲综合中文字幕在线| 少妇一区二区三区| 中文字幕一区二区三区四区五区人 | 国产乱码精品一品二品| 中文字幕一二三| 国产午夜三级一区二区三| 日韩va亚洲va欧美va清高| 一区二区日韩电影| 欧美在线视频精品| 精品av久久707| 免费高清在线观看| 国产91精品不卡视频| 久久野战av| 成人在线看片| 四季av一区二区三区免费观看| 男女日批视频在线观看| 蜜乳av一区二区三区| 完美搭档在线观看| 国产欧美视频一区二区| 国产亚洲精品久久777777| 色综合色狠狠天天综合色| a级片在线视频| 中文字幕欧美专区| 国产调教在线| 成人免费看黄网站| 国产va免费精品观看精品视频| 好吊色视频988gao在线观看| 丝瓜av网站精品一区二区| yy6080午夜| 亚洲成人动漫一区| 99精品在线视频观看| 日韩精品免费电影| www久久日com| 欧美一区二区三区……| 999久久久精品一区二区| 正在播放精油久久| 日本不卡123| 欧洲av一区二区三区| 亚洲va国产天堂va久久en| 精品人妻一区二区三区换脸明星 | 国产成人l区| 国产精品成人一区二区| 伊人久久大香线蕉| 蜜桃视频一区二区在线观看| 久久亚洲图片| 四虎永久免费影院| 亚洲国产婷婷综合在线精品| 国产a级免费视频| 日韩中文综合网| 婷婷久久综合九色综合99蜜桃| 少妇特黄a一区二区三区| 欧美资源在线| 欧美亚一区二区三区| 日韩欧美国产一区二区| 日韩国产福利| 久久久亚洲精品视频| 91综合久久爱com| 亚洲理论电影在线观看| 国产成人综合在线观看| 色婷婷粉嫩av| 91精品国产欧美日韩| 成人免费网址| 国产精品69久久久久| 国产精品探花在线观看| 欧美激情成人网| 波波电影院一区二区三区| 久久免费视频6| 亚洲精品久久7777777| a√中文在线观看| 国产日韩欧美综合精品 | 国产精品理论片在线观看| 中文字幕在线天堂| 在线精品高清中文字幕| 亚洲男人在线| 人妻互换免费中文字幕| 成人深夜在线观看| 天天爽夜夜爽夜夜爽精品| 亚洲欧美一区二区激情| 中文字幕系列一区| 中文字幕日韩一区二区三区不卡 | 在线精品视频在线观看高清| a级大片免费看| 精品久久久一区| 国产中文在线视频| 国产精品69久久| 中国成人一区| 日韩精品人妻中文字幕有码| 欧美午夜宅男影院在线观看| 永久免费av在线| 成人av影视在线| 久久精品伊人| 亚洲欧美一区二区三区四区五区| 精品国产一二三区| 精品视频在线一区二区在线| 中文字幕の友人北条麻妃| 成人aa视频在线观看| 国产亚洲精品女人久久久久久| 亚洲精品国产福利| 久久精品97| 国产玉足脚交久久欧美| 国产欧美一区二区精品久导航| 中文字幕第2页| 久久久久久久久亚洲| 日韩欧美一区免费| 成人免费毛片日本片视频| 欧美中文字幕不卡| 国精产品一区一区三区mba下载| 蜜桃传媒视频麻豆第一区免费观看 |