精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美在线免费| 欧美一级在线| 久久免费午夜影院| 国产精品狼人色视频一区| 日韩一卡二卡在线观看| 国产精品亚洲综合在线观看| 亚洲一区二区欧美| 欧美主播一区二区三区美女 久久精品人 | 欧美一区二区三区四区五区六区| 中文字幕乱码无码人妻系列蜜桃| 一区二区三区网站| 亚洲免费小视频| 亚洲一区二区三区三州| 欧美裸体视频| 1区2区3区精品视频| 国模一区二区三区私拍视频| 在线观看国产小视频| 在线成人av| 日韩三级影视基地| 国产福利短视频| 9999精品| 91久久线看在观草草青青 | 亚洲视频高清| 自拍视频国产精品| 99久久人妻无码中文字幕系列| 欧美一区二区三区婷婷| 欧美性极品xxxx做受| av磁力番号网| 成年人免费在线视频| 成人免费视频视频在线观看免费| 国产精品国模在线| 日韩特级黄色片| 国产一区二区三区自拍| 中文欧美在线视频| 免费看污黄网站在线观看| 日韩精品视频中文字幕| 欧美视频自拍偷拍| 2022亚洲天堂| 国产精品13p| 亚洲制服丝袜一区| 国产日产欧美一区二区| 超碰国产在线| 久久老女人爱爱| 国产亚洲二区| 日韩一级免费视频| 国产99久久久国产精品| 91亚洲精品久久久| 亚洲一区二区激情| 蜜臀av国产精品久久久久 | 欧美成人毛片| 欧美日韩一区久久| 免费看国产黄色片| 亚洲精品555| 在线观看不卡视频| 日本熟妇人妻中出| 高清av一区| 欧美丝袜丝交足nylons图片| 在线观看av日韩| a成人v在线| 欧美日韩精品三区| 国产精品一区二区小说| 草民电影神马电影一区二区| 欧美性猛片xxxx免费看久爱| 亚洲少妇第一页| 国产麻豆久久| 欧美日韩一级片网站| 少妇网站在线观看| 四虎国产精品免费久久5151| 欧美精品色综合| 天天干天天曰天天操| 中文字幕一区二区三区四区久久 | 一级片免费在线观看视频| 国产精品3区| 日韩免费视频一区| 日本一卡二卡在线| 精品美女视频| 久久亚洲精品国产亚洲老地址| 欧美精品入口蜜桃| 一本久久综合| 国产精品盗摄久久久| 夜夜爽8888| 成人免费三级在线| 欧美一区二区三区四区五区六区| 成人影视在线播放| 亚洲精品国产第一综合99久久 | 亚洲影视综合| 国产精品视频区| 精品国产av一区二区| 成人黄色a**站在线观看| 欧美不卡福利| 精品国产99久久久久久| 亚洲18色成人| 99热一区二区| 荡女精品导航| 中文字幕在线视频日韩| 久久久久黄色片| 久久婷婷亚洲| 岛国视频一区免费观看| 成人在线免费观看| 亚洲一二三四区| 黑人粗进入欧美aaaaa| 日韩一区二区三区色| 日韩精品免费电影| 亚洲av毛片基地| 尤物在线精品| 91精品久久久久久久久久入口| 免费a视频在线观看| 亚洲国产精品av| 欧美精品v国产精品v日韩精品 | 九一国产在线| 成人欧美一区二区三区白人| 日韩欧美国产综合在线| 日本国产一区| 亚洲欧美福利视频| 欧美黄色免费观看| 理论电影国产精品| 久久偷窥视频| 暖暖在线中文免费日本| 欧洲亚洲国产日韩| 日本一区二区三区网站| 亚洲影视一区| 国产精品永久免费视频| 亚洲欧洲精品视频| 亚洲一级不卡视频| 久久艹这里只有精品| 欧美另类69xxxxx| 97人人模人人爽人人喊中文字 | 国产在线视频一区二区| 欧美日韩精品久久| 91福利区在线观看| 久久精品系列| 亚洲精品理论电影| 欧美自拍偷拍网| 巨乳诱惑日韩免费av| 好吊妞www.84com只有这里才有精品| 欧美日韩在线看片| 欧美性猛交xxxx黑人交| 国产又爽又黄无码无遮挡在线观看| 欧美久久综合| 成人女保姆的销魂服务| 高清日韩av电影| 精品国产精品国产偷麻豆| 久久视频在线播放| 精品国产青草久久久久96| www.av精品| 欧美在线观看视频免费| 97色婷婷成人综合在线观看| 亚洲人高潮女人毛茸茸| 特一级黄色大片| 成人黄色一级视频| 久久这里只有精品18| 精品视频在线一区| 久久成人这里只有精品| 国产尤物在线观看| 成人欧美一区二区三区在线播放| 天堂av在线网站| 国产一区三区在线播放| 日本三级久久久| 精品久久久久一区二区三区| 欧美日韩在线视频一区| 水蜜桃av无码| 亚洲欧美网站| 欧美午夜视频在线| jizzyou欧美16| 综合激情国产一区| 国产情侣自拍小视频| 亚洲激情网站免费观看| 动漫av在线免费观看| 亚洲大胆av| 免费久久久一本精品久久区| 亚洲第一影院| 综合av色偷偷网| 亚洲av无码国产精品永久一区| 亚洲综合色区另类av| 无码国产精品一区二区免费式直播| 亚洲激情网站| 久久久久久久久久久久久久久久av| 亚洲成人短视频| 北条麻妃在线一区二区| 性一交一乱一透一a级| 精品日本高清在线播放| 五月激情四射婷婷| 国产成人免费视频网站| 激情综合在线观看| 色综合久久网| 国产欧美一区二区在线播放| 成人免费影院| 久久精品成人欧美大片| 好男人www在线视频| 91高清在线观看| 欧美精品一级片| 久久影院视频免费| 亚洲天堂网站在线| 亚洲影院在线| 国产一区一区三区| 亚洲a级精品| 91色在线视频| 不卡av播放| 久久成人国产精品| 久久99久久| 欧美成人精品二区三区99精品| 色一情一乱一伦| 亚洲精品国产品国语在线app| 日本黄色网址大全| 国产一区二区在线影院| 逼特逼视频在线| 中文字幕一区二区av| 久久青青草综合| 日韩欧美中文字幕在线视频| 国产成人亚洲精品| 黄页网站在线| 日韩中文字幕国产| 黄网站在线观看| 精品日韩av一区二区| 中文字幕第一页在线播放| 亚洲二区在线视频| 黄视频网站免费看| 日本一区二区高清| 国产艳俗歌舞表演hd| 高清成人免费视频| 天天色天天综合网| 日本va欧美va欧美va精品| 阿v天堂2017| 欧美日韩 国产精品| 亚洲精品成人a8198a| 婷婷精品在线| 国产综合精品一区二区三区| 日韩欧美高清一区二区三区| 91精品久久久久久久久| 精品国产欧美日韩一区二区三区| 欧美一级淫片aaaaaaa视频| 美女91在线| 久热爱精品视频线路一| 亚洲成人三级| 一道本无吗dⅴd在线播放一区 | 国产一区二区三区免费不卡| 欧美电影在线观看一区| 国产欧美日韩专区发布| 深夜视频一区二区| 国产99久久精品一区二区永久免费 | 久久精品国产sm调教网站演员| 亚洲精品网址| 992tv成人免费观看| 天天做天天爱天天爽综合网| 色视频一区二区三区| 精品美女久久久| 日韩不卡av| 区一区二视频| 亚洲制服欧美久久| 欧美mv日韩| 日本xxx免费| 伊人久久大香线蕉精品组织观看| 在线不卡视频一区二区| 我不卡手机影院| 91成人在线视频观看| 欧美三级在线| 欧美在线一区视频| 亚洲免费网站| 无码少妇一区二区三区芒果| 日韩二区三区四区| 亚洲欧美在线精品| 韩国v欧美v日本v亚洲v| 樱花草www在线| 国产成人免费高清| 在线观看国产网站| 国产欧美日韩另类视频免费观看| 欧美日韩生活片| 亚洲欧洲精品一区二区三区| 日韩在线观看视频一区二区| 亚洲在线视频一区| 欧美videossex极品| 欧美性大战xxxxx久久久| 一区二区 亚洲| 日韩精品一区二区三区视频播放| 丰满人妻一区二区三区免费视频| 亚洲黄色有码视频| 美国成人毛片| 日韩一中文字幕| 污污影院在线观看| 欧美一级片免费在线| 日本综合视频| 99久久精品无码一区二区毛片| 高清精品视频| 色噜噜狠狠一区二区三区| 97精品国产一区二区三区| 欧美极品少妇无套实战| 国产精品久久久亚洲一区| 亚洲天堂网一区| 国产999精品久久| 中文字幕免费视频| 伊人夜夜躁av伊人久久| 久久久精品免费看| 制服丝袜激情欧洲亚洲| 婷婷五月综合激情| 日韩中文字幕在线| 在线观看福利电影| 91手机视频在线观看| 欧美大片网址| 日韩中文在线字幕| 日韩一区精品视频| 亚洲色图欧美另类| 国产精品久久久一区麻豆最新章节| 久视频在线观看| 欧美中文字幕亚洲一区二区va在线| 精品美女www爽爽爽视频| 亚洲人成在线观| heyzo在线| 成人精品一区二区三区| 妖精一区二区三区精品视频| 亚洲激情免费视频| 日本vs亚洲vs韩国一区三区二区 | 中文字幕一区二区三区中文字幕| 欧美日韩在线播放一区二区| 韩国一区二区三区在线观看| 国内自拍视频网| 99精品视频在线观看免费| 国产又黄又爽又无遮挡| 欧美视频在线观看一区二区| 午夜小视频在线播放| 色中色综合影院手机版在线观看| 国语自产精品视频在线看抢先版结局| 国内精品久久国产| 国产精品豆花视频| 亚洲一级片免费观看| 国产精品无码永久免费888| 亚洲天堂男人av| 亚洲精品99999| 欧洲在线视频| 91天堂在线视频| 欧美色婷婷久久99精品红桃| jizzjizzxxxx| 99国产精品久| 日本少妇毛茸茸高潮| 精品国产一二三| 欧美videos另类精品| 18成人在线| 91精品国偷自产在线电影 | 国产精品1区2区| 91日韩中文字幕| 欧美一区二区三区婷婷月色 | 国产精品人人做人人爽人人添| 黄色片中文字幕| 精品亚洲一区二区| 不卡av影片| 日本日本精品二区免费| 视频在线观看91| 东方伊人免费在线观看| 在线观看国产91| 91大神在线网站| 国产在线高清精品| 亚洲综合中文| 久久久久亚洲AV成人网人人小说| 一区二区三区四区乱视频| 亚洲精品国产片| 国外成人在线直播| 久久男人av| 中文字幕乱码人妻综合二区三区| 91丨porny丨户外露出| 亚洲天堂一区在线| 亚洲人成77777在线观看网| 国产一区一一区高清不卡| 欧洲久久久久久| 美女性感视频久久| 尤物在线免费视频| 欧美精品一区二区三区蜜桃| aa国产成人| 欧美久久久久久久| 另类成人小视频在线| 紧身裙女教师波多野结衣| 精品国产一区二区三区不卡| а_天堂中文在线| 欧美日韩在线一区二区三区| 男男视频亚洲欧美| 亚洲成人生活片| 日韩电影大全免费观看2023年上| 波多野结衣亚洲| 精品一区二区成人免费视频| 成人一区二区三区视频在线观看| 久久久久99精品成人片三人毛片| 国产亚洲欧美日韩精品| 国产色99精品9i| 内射国产内射夫妻免费频道| 国产农村妇女毛片精品久久麻豆 | 免费人成视频在线| 日韩精品在线播放| 日韩毛片免费视频一级特黄| 亚洲精品天堂成人片av在线播放| 成人18精品视频| 欧美性受xxx黑人xyx性爽| 久久中文字幕视频| 三级小说欧洲区亚洲区| 中文字幕在线综合| 亚洲高清三级视频| 8888四色奇米在线观看| 国产91亚洲精品一区二区三区| 蜜桃av综合| 欧美精品一区二区成人| 宅男66日本亚洲欧美视频| 99久久人爽人人添人人澡| 午夜激情在线观看视频|