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

吃透了這些Redis知識點,面試官一定覺得你很NB

開發(fā) 后端 其他數(shù)據(jù)庫 Redis
redis里存的都是二進制數(shù)據(jù),其實就是字節(jié)數(shù)組(byte[]),這些字節(jié)數(shù)據(jù)是沒有數(shù)據(jù)類型的,只有把它們按照合理的格式解碼后,可以變成一個字符串,整數(shù)或對象,此時才具有數(shù)據(jù)類型。

 [[263444]]

是數(shù)據(jù)結構而非類型

很多文章都會說,redis支持5種常用的數(shù)據(jù)類型,這其實是存在很大的歧義。redis里存的都是二進制數(shù)據(jù),其實就是字節(jié)數(shù)組(byte[]),這些字節(jié)數(shù)據(jù)是沒有數(shù)據(jù)類型的,只有把它們按照合理的格式解碼后,可以變成一個字符串,整數(shù)或對象,此時才具有數(shù)據(jù)類型。

這一點必須要記住。所以任何東西只要能轉化成字節(jié)數(shù)組(byte[])的,都可以存到redis里。管你是字符串、數(shù)字、對象、圖片、聲音、視頻、還是文件,只要變成byte數(shù)組。

因此redis里的String指的并不是字符串,它其實表示的是一種最簡單的數(shù)據(jù)結構,即一個key只能對應一個value。這里的key和value都是byte數(shù)組,只不過key一般是由一個字符串轉換成的byte數(shù)組,value則根據(jù)實際需要而定。

在特定情況下,對value也會有一些要求,比如要進行自增或自減操作,那value對應的byte數(shù)組必須要能被解碼成一個數(shù)字才行,否則會報錯。

那么List這種數(shù)據(jù)結構,其實表示一個key可以對應多個value,且value之間是有先后順序的,value值可以重復。

Set這種數(shù)據(jù)結構,表示一個key可以對應多個value,且value之間是沒有先后順序的,value值也不可以重復。

Hash這種數(shù)據(jù)結構,表示一個key可以對應多個key-value對,此時這些key-value對之間的先后順序一般意義不大,這是一個按照名稱語義來訪問的數(shù)據(jù)結構,而非位置語義。

Sorted Set這種數(shù)據(jù)結構,表示一個key可以對應多個value,value之間是有大小排序的,value值不可以重復。每個value都和一個浮點數(shù)相關聯(lián),該浮點數(shù)叫score。元素排序規(guī)則是:先按score排序,再按value排序。

相信現(xiàn)在你對這5種數(shù)據(jù)結構有了更清晰的認識,那它們的對應命令對你來說就是小case了。

集群帶來的問題與解決思路

集群帶來的好處是顯而易見的,比如容量增加、處理能力增強,還可以按需要進行動態(tài)的擴容、縮容。但同時也會引入一些新的問題,至少會有下面這兩個。

一是數(shù)據(jù)分配:存數(shù)據(jù)時應該放到哪個節(jié)點上,取數(shù)據(jù)時應該去哪個節(jié)點上找。二是數(shù)據(jù)移動:集群擴容,新增加節(jié)點時,該節(jié)點上的數(shù)據(jù)從何處來;集群縮容,要剔除節(jié)點時,該節(jié)點上的數(shù)據(jù)往何處去。

上面這兩個問題有一個共同點就是,如何去描述和存儲數(shù)據(jù)與節(jié)點的映射關系。又因為數(shù)據(jù)的位置是由key決定的,所以問題就演變?yōu)槿绾谓⑵鸶鱾€key和集群所有節(jié)點的關聯(lián)關系。

集群的節(jié)點是相對固定和少數(shù)的,雖然有增加節(jié)點和剔除節(jié)點。但集群里存儲的key,則是完全隨機、沒有規(guī)律、不可預測、數(shù)量龐多,還非?,嵥?。

這就好比一所大學和它的所有學生之間的關系。如果大學和學生直接掛鉤的話,一定會比較混亂?,F(xiàn)實是它們之間又加入了好幾層,首先有院系,其次有專業(yè),再者有年級,***還有班級。經過這四層映射之后,關系就清爽很多了。

這其實是一個非常重要的結論,這個世界上沒有什么問題是不能通過加入一層來解決的。如果有,那就再加入一層。計算機里也是這樣的。

redis在數(shù)據(jù)和節(jié)點之間又加入了一層,把這層稱為槽(slot),因該槽主要和哈希有關,又叫哈希槽。

***變成了,節(jié)點上放的是槽,槽里放的是數(shù)據(jù)。槽解決的是粒度問題,相當于把粒度變大了,這樣便于數(shù)據(jù)移動。哈希解決的是映射問題,使用key的哈希值來計算所在的槽,便于數(shù)據(jù)分配。

可以這樣來理解,你的學習桌子上堆滿了書,亂的很,想找到某本書非常困難。于是你買了幾個大的收納箱,把這些書按照書名的長度放入不同的收納箱,然后把這些收納箱放到桌子上。

這樣就變成了,桌子上是收納箱,收納箱里是書籍。這樣書籍移動很方便,搬起一個箱子就走了。尋找書籍也很方便,只要數(shù)一數(shù)書名的長度,去對應的箱子里找就行了。

其實我們也沒做什么,只是買了幾個箱子,按照某種規(guī)則把書裝入箱子。就這么簡單的舉動,就徹底改變了原來一盤散沙的狀況。是不是有點小小的神奇呢。

一個集群只能有16384個槽,編號0-16383。這些槽會分配給集群中的所有主節(jié)點,分配策略沒有要求。可以指定哪些編號的槽分配給哪個主節(jié)點。集群會記錄節(jié)點和槽的對應關系。

接下來就需要對key求哈希值,然后對16384取余,余數(shù)是幾key就落入對應的槽里。slot = CRC16(key) % 16384。

以槽為單位移動數(shù)據(jù),因為槽的數(shù)目是固定的,處理起來比較容易,這樣數(shù)據(jù)移動問題就解決了。

使用哈希函數(shù)計算出key的哈希值,這樣就可以算出它對應的槽,然后利用集群存儲的槽和節(jié)點的映射關系查詢出槽所在的節(jié)點,于是數(shù)據(jù)和節(jié)點就映射起來了,這樣數(shù)據(jù)分配問題就解決了。

我想說的是,一般的人只會去學習各種技術,高手更在乎如何跳出技術,尋求一種解決方案或思路方向,順著這個方向走下去,八九不離十能找到你想要的答案。

集群對命令操作的取舍

客戶端只要和集群中的一個節(jié)點建立鏈接后,就可以獲取到整個集群的所有節(jié)點信息。此外還會獲取所有哈希槽和節(jié)點的對應關系信息,這些信息數(shù)據(jù)都會在客戶端緩存起來,因為這些信息相當有用。

客戶端可以向任何節(jié)點發(fā)送請求,那么拿到一個key后到底該向哪個節(jié)點發(fā)請求呢?其實就是把集群里的那套key和節(jié)點的映射關系理論搬到客戶端來就行了。

所以客戶端需要實現(xiàn)一個和集群端一樣的哈希函數(shù),先計算出key的哈希值,然后再對16384取余,這樣就找到了該key對應的哈希槽,利用客戶端緩存的槽和節(jié)點的對應關系信息,就可以找到該key對應的節(jié)點了。

接下來發(fā)送請求就可以了。還可以把key和節(jié)點的映射關系緩存起來,下次再請求該key時,直接就拿到了它對應的節(jié)點,不用再計算一遍了。

理論和現(xiàn)實總是有差距的,集群已經發(fā)生了變化,客戶端的緩存還沒來得及更新??隙〞霈F(xiàn)拿到一個key向對應的節(jié)點發(fā)請求,其實這個key已經不在那個節(jié)點上了。此時這個節(jié)點應該怎么辦?

這個節(jié)點可以去key實際所在的節(jié)點上拿到數(shù)據(jù)再返回給客戶端,也可以直接告訴客戶端key已經不在我這里了,同時附上key現(xiàn)在所在的節(jié)點信息,讓客戶端再去請求一次,類似于HTTP的302重定向。

這其實是個選擇問題,也是個哲學問題。結果就是redis集群選擇了后者。因此,節(jié)點只處理自己擁有的key,對于不擁有的key將返回重定向錯誤,即-MOVED key 127.0.0.1:6381,客戶端重新向這個新節(jié)點發(fā)送請求。

所以說選擇是一種哲學,也是個智慧。稍后再談這個問題。先來看看另一個情況,和這個問題有些相同點。

redis有一種命令可以一次帶多個key,如MGET,我把這些稱為多key命令。這個多key命令的請求被發(fā)送到一個節(jié)點上,這里有一個潛在的問題,不知道大家有沒有想到,就是這個命令里的多個key一定都位于那同一個節(jié)點上嗎?

就分為兩種情況了,如果多個key不在同一個節(jié)點上,此時節(jié)點只能返回重定向錯誤了,但是多個key完全可能位于多個不同的節(jié)點上,此時返回的重定向錯誤就會非常亂,所以redis集群選擇不支持此種情況。

如果多個key位于同一個節(jié)點上呢,理論上是沒有問題的,redis集群是否支持就和redis的版本有關系了,具體使用時自己測試一下就行了。

在這個過程中我們發(fā)現(xiàn)了一件頗有意義的事情,就是讓一組相關的key映射到同一個節(jié)點上是非常有必要的,這樣可以提高效率,通過多key命令一次獲取多個值。

那么問題來了,如何給這些key起名字才能讓他們落到同一個節(jié)點上,難不成都要先計算個哈希值,再取個余數(shù),太麻煩了吧。當然不是這樣了,redis已經幫我們想好了。

可以來簡單推理下,要想讓兩個key位于同一個節(jié)點上,它們的哈希值必須要一樣。要想哈希值一樣,傳入哈希函數(shù)的字符串必須一樣。那我們只能傳進去兩個一模一樣的字符串了,那不就變成同一個key了,后面的會覆蓋前面的數(shù)據(jù)。

這里的問題是我們都是拿整個key去計算哈希值,這就導致key和參與計算哈希值的字符串耦合了,需要將它們解耦才行,就是key和參與計算哈希值的字符串有關但是又不一樣。

redis基于這個原理為我們提供了方案,叫做key哈希標簽。先看例子,{user1000}.following,{user1000}.followers,相信你已經看出了門道,就是僅使用Key中的位于{和}間的字符串參與計算哈希值。

這樣可以保證哈希值相同,落到相同的節(jié)點上。但是key又是不同的,不會互相覆蓋。使用哈希標簽把一組相關的key關聯(lián)了起來,問題就這樣被輕松愉快地解決了。

相信你已經發(fā)現(xiàn)了,要解決問題靠的是巧妙的奇思妙想,而不是非要用牛逼的技術牛逼的算法。這就是小強,小而強大。

***再來談選擇的哲學。redis的核心就是以最快的速度進行常用數(shù)據(jù)結構的key/value存取,以及圍繞這些數(shù)據(jù)結構的運算。對于與核心無關的或會拖累核心的都選擇弱化處理或不處理,這樣做是為了保證核心的簡單、快速和穩(wěn)定。

其實就是在廣度和深度面前,redis選擇了深度。所以節(jié)點不去處理自己不擁有的key,集群不去支持多key命令。這樣一方面可以快速地響應客戶端,另一方面可以避免在集群內部有大量的數(shù)據(jù)傳輸與合并。

單線程模型

redis集群的每個節(jié)點里只有一個線程負責接受和執(zhí)行所有客戶端發(fā)送的請求。技術上使用多路復用I/O,使用Linux的epoll函數(shù),這樣一個線程就可以管理很多socket連接。

除此之外,選擇單線程還有以下這些原因:

1、redis都是對內存的操作,速度極快(10W+QPS)

2、整體的時間主要都是消耗在了網(wǎng)絡的傳輸上

3、如果使用了多線程,則需要多線程同步,這樣實現(xiàn)起來會變的復雜

4、線程的加鎖時間甚至都超過了對內存操作的時間

5、多線程上下文頻繁的切換需要消耗更多的CPU時間

6、還有就是單線程天然支持原子操作,而且單線程的代碼寫起來更簡單

事務

事務大家都知道,就是把多個操作捆綁在一起,要么都執(zhí)行(成功了),要么一個也不執(zhí)行(回滾了)。redis也是支持事務的,但可能和你想要的不太一樣,一起來看看吧。

redis的事務可以分為兩步,定義事務和執(zhí)行事務。使用multi命令開啟一個事務,然后把要執(zhí)行的所有命令都依次排上去。這就定義好了一個事務。此時使用exec命令來執(zhí)行這個事務,或使用discard命令來放棄這個事務。

你可能希望在你的事務開始前,你關心的key不想被別人操作,那么可以使用watch命令來監(jiān)視這些key,如果開始執(zhí)行前這些key被其它命令操作了則會取消事務的。也可以使用unwatch命令來取消對這些key的監(jiān)視。

redis事務具有以下特點:

1、如果開始執(zhí)行事務前出錯,則所有命令都不執(zhí)行

2、一旦開始,則保證所有命令一次性按順序執(zhí)行完而不被打斷

3、如果執(zhí)行過程中遇到錯誤,會繼續(xù)執(zhí)行下去,不會停止的

4、對于執(zhí)行過程中遇到錯誤,是不會進行回滾的

看完這些,真想問一句話,你這能叫事務嗎?很顯然,這并不是我們通常認為的事務,因為它連原子性都保證不了。保證不了原子性是因為redis不支持回滾,不過它也給出了不支持的理由。

不支持回滾的理由:

1、redis認為,失敗都是由命令使用不當造成

2、redis這樣做,是為了保持內部實現(xiàn)簡單快速

3、redis還認為,回滾并不能解決所有問題

哈哈,這就是霸王條款,因此,好像使用redis事務的不太多

管道

客戶端和集群的交互過程是串行化阻塞式的,即客戶端發(fā)送了一個命令后必須等到響應回來后才能發(fā)第二個命令,這一來一回就是一個往返時間。如果你有很多的命令,都這樣一個一個的來進行,會變得很慢。

redis提供了一種管道技術,可以讓客戶端一次發(fā)送多個命令,期間不需要等待服務器端的響應,等所有的命令都發(fā)完了,再依次接收這些命令的全部響應。這就極大地節(jié)省了許多時間,提升了效率。

聰明的你是不是意識到了另外一個問題,多個命令就是多個key啊,這不就是上面提到的多key操作嘛,那么問題來了,你如何保證這多個key都是同一個節(jié)點上的啊,哈哈,redis集群又放棄了對管道的支持。

不過可以在客戶端模擬實現(xiàn),就是使用多個連接往多個節(jié)點同時發(fā)送命令,然后等待所有的節(jié)點都返回了響應,再把它們按照發(fā)送命令的順序整理好,返回給用戶代碼。哎呀,好麻煩呀。

協(xié)議

簡單了解下redis的協(xié)議,知道redis的數(shù)據(jù)傳輸格式。

發(fā)送請求的協(xié)議:

*參數(shù)個數(shù)CRLF$參數(shù)1的字節(jié)數(shù)CRLF參數(shù)1的數(shù)據(jù)CRLF...$參數(shù)N的字節(jié)數(shù)CRLF參數(shù)N的數(shù)據(jù)CRLF

例如,SET name lixinjie,實際發(fā)送的數(shù)據(jù)是:

*3\r\n$3\r\nSET\r\n$4\r\nname\r\n$8\r\nlixinjie\r\n

接受響應的協(xié)議:

單行回復,***個字節(jié)是+

錯誤消息,***個字節(jié)是-

整型數(shù)字,***個字節(jié)是:

批量回復,***個字節(jié)是$

多個批量回復,***個字節(jié)是*

例如,

+OK\r\n

-ERR Operation against\r\n

:1000\r\n

$6\r\nfoobar\r\n

*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n

可見redis的協(xié)議設計的非常簡單。

責任編輯:龐桂玉 來源: Java團長
相關推薦

2019-11-21 10:59:16

IPv4IPv6網(wǎng)絡

2019-10-24 09:09:28

MySQLACIDJava

2019-11-25 21:46:12

數(shù)據(jù)湖云計算數(shù)據(jù)倉庫

2024-02-26 08:19:00

WebSpring容器

2024-09-26 00:00:05

2015-08-13 10:29:12

面試面試官

2021-11-16 07:31:59

JavaJDK 7 String

2023-02-15 08:12:19

http超時過濾器

2025-01-09 12:15:16

2020-05-09 08:31:16

IPv4IPv6網(wǎng)絡

2021-05-17 06:02:58

Css前端CSS 特效

2022-08-23 09:48:13

面試JavaScriptoffer

2021-03-02 12:27:55

操作系統(tǒng)面試

2020-12-23 13:29:15

微服務架構面試官

2020-08-04 14:00:17

分庫分表數(shù)據(jù)庫MySQL

2020-04-20 08:35:48

HTTP HTTPS網(wǎng)絡協(xié)議

2021-12-13 11:54:13

SetEs6接口

2021-11-02 09:05:25

Redis

2010-08-18 10:52:46

Linux筆試

2024-04-03 00:00:00

Redis集群代碼
點贊
收藏

51CTO技術棧公眾號

国产一卡二卡三卡四卡| 国产日产欧美一区| 亚洲综合一二区| 精品国产电影一区二区| 日韩欧美亚洲v片| 91视频免费在线看| 激情开心成人网| 成人永久看片免费视频天堂| 国产一区二区三区在线视频| 97免费视频观看| 一本到在线视频| 亚洲警察之高压线| 夜夜精品视频一区二区 | 精品一区二区三区日本| 一二三四国产精品| 欧产日产国产精品视频| 国产精品一区二区在线播放| 中文字幕无线精品亚洲乱码一区 | 久久一二三四| 欧美va亚洲va| 在线观看成人av电影| 亚洲自拍一区在线观看| 啪啪国产精品| 精品久久久久人成| 国产精品免费区二区三区观看| 午夜爽爽爽男女免费观看| 国产精品99久久久久久董美香 | 不卡视频一区二区| 国产精品麻豆一区| 黑人一区二区三区| 欧美经典一区二区三区| 国产精品久久久av久久久| 丰满少妇一区二区| 欧美xx视频| 亚洲制服丝袜av| 亚洲福利av在线| 亚洲影视一区二区| 亚洲一区欧美二区| 亚洲免费视频网站| 激情五月开心婷婷| 九色在线视频| 久9久9色综合| 91极品视觉盛宴| 日本一区视频在线播放| 亚洲精品成人区在线观看| 国产精品大片免费观看| 精品成人a区在线观看| 性欧美1819| 超碰在线caoporn| 成人av先锋影音| 欧美孕妇与黑人孕交| 日本二区在线观看| 伦一区二区三区中文字幕v亚洲| 午夜精品久久久久久久99水蜜桃| 麻豆精品视频| 一区二区不卡视频在线观看| 欧美在线亚洲综合一区| 亚洲第一精品福利| 999精品网站| h片在线观看网站| 国产精品免费人成网站| 国产91视觉| 亚洲乱码国产乱码精品| 国产精品毛片久久| 欧美精品一区男女天堂| 一级黄色在线播放| aa视频在线观看| 亚洲国产激情av| wwwxx欧美| 成 人 黄 色 片 在线播放| 亚洲女人av| 欧美在线视频一二三| 91动漫免费网站| 国产成人av毛片| 欧美日韩另类一区| av免费看网址| 日本在线观看免费| 波多野结衣中文字幕一区| 好吊色欧美一区二区三区 | 久久99久久98精品免观看软件| 巨人精品**| 在线播放亚洲一区| 成人在线免费观看av| 国产激情在线| 亚洲综合在线第一页| 黄色一级视频在线播放| 密臀av在线播放| 在线看一区二区| 精品国偷自产一区二区三区| 一级日本在线| 亚洲女同一区二区| 婷婷久久青草热一区二区| 亚洲国产www| 成人av在线一区二区| 欧美国产二区| 天堂中文在线看| 激情图区综合网| 国产精品99久久久久久白浆小说| 国产精彩视频在线| 亚洲激情五月| 中文字幕日本精品| 澳门黄色一级片| 亚洲资源av| 国产日韩综合一区二区性色av| 黄色av一级片| 久久99在线观看| 国产精品女主播视频| 一区二区三区福利视频| 亚洲欧洲一级| 久久久久久久久久久人体| 成人无码精品1区2区3区免费看| 伊人色**天天综合婷婷| 日韩在线视频免费观看| 国产黄色片在线| 国内自拍一区| 国产精品爽爽爽爽爽爽在线观看| 日日夜夜操视频| 国产精品69毛片高清亚洲| 91精品视频专区| 国产又粗又猛又爽又黄的| 美女精品一区二区| 久久久最新网址| 久久国产精品二区| 日韩国产精品大片| 国产精品极品尤物在线观看| 亚洲美女性生活| 成人午夜电影久久影院| 亚洲7777| 性孕妇free特大另类| 欧美色另类天堂2015| 妺妺窝人体色www在线小说| www.欧美| 日韩精品资源二区在线| 无码av免费精品一区二区三区| 99ri日韩精品视频| 亚洲第一福利网站| 久久中文免费视频| 激情久久久久久| 97精品在线观看| 亚洲影院在线播放| 国产aⅴ综合色| 精品欧美一区二区在线观看视频| 黄色网页在线免费观看| 亚洲自拍偷拍麻豆| 欧美视频国产视频| 日韩.com| 欧美福利视频在线观看| 日本少妇吞精囗交| 日韩va亚洲va欧美va久久| 精品国产日本| 岛国在线视频网站| 欧美午夜理伦三级在线观看| 热久久久久久久久| 不卡一区综合视频| 美女福利视频一区| 免费观看一区二区三区毛片 | 国产精品传媒视频| 日韩视频在线观看视频| 免费看电影在线| 欧美日韩一区免费| 日韩欧美不卡在线| 97精品国产99久久久久久免费| 亚洲欧美日韩天堂| 国产又黄又猛又粗又爽| 91网站在线观看视频| 丝袜美腿玉足3d专区一区| 国产美女高潮在线观看| 亚洲国产一区自拍| 91狠狠综合久久久久久| 丝袜美腿成人在线| 日韩三级电影| 九九久久国产| 美日韩在线视频| 性猛交xxxx乱大交孕妇印度| 一区二区三区在线视频免费| 成人在线观看a| 教室别恋欧美无删减版| 欧美黑人一区二区三区| 狠狠综合久久av一区二区| 性感美女久久精品| 丝袜美腿中文字幕| 人人狠狠综合久久亚洲| 国产伦精品一区二区三区视频黑人| 蜜臀av在线| 亚洲日韩中文字幕| 精品在线免费观看视频| 久久成人综合网| 国产精品无码乱伦| av日韩精品| 国产aⅴ夜夜欢一区二区三区 | 男女男精品视频网| 亚洲综合第一| 欧美电影免费观看| 日韩中文视频免费在线观看| xxxx18国产| 色94色欧美sute亚洲线路一久| 北条麻妃在线观看视频| 视频一区中文字幕| 一区国产精品| 农村少妇一区二区三区四区五区| 国产精品久久久久久久久久久久久久| 日韩子在线观看| 精品国产精品一区二区夜夜嗨| aaaaaa毛片| 悠悠色在线精品| 国产肥白大熟妇bbbb视频| 国产精品啊v在线| 欧美精品v日韩精品v国产精品| 欧美一级做一级爱a做片性| 国产午夜精品全部视频在线播放| 久久久精品免费看| 中文字幕欧美一| 爱爱爱爱免费视频| 波多野结衣一区| 国产精华一区| 欧美极品在线| 日本一区二区在线播放| 午夜伦理在线视频| 日韩色在线观看| 永久免费看黄网站| 久久精品亚洲精品国产欧美kt∨| 国产亚洲天堂网| 欧美在线不卡| 无码免费一区二区三区免费播放| 91精品啪在线观看国产爱臀| 欧美高清视频在线播放| 二区在线观看| 欧美性猛交xxxxxx富婆| 日本熟伦人妇xxxx| 最新热久久免费视频| a级片在线观看| 97精品视频在线观看自产线路二 | 国产日韩一区| 免费久久99精品国产自| 亚洲一区二区电影| 91精品久久久久久久久久另类| 国产三级在线免费观看| 亚洲精品456在线播放狼人| 国产人妖在线播放| 亚洲一区二区av在线| 国产精品无码专区| 久久久久在线| 一区二区三区我不卡| 亚州精品视频| 国产精品亚洲片夜色在线| 美女高潮在线观看| 韩国美女主播一区| 色黄网站在线观看| 久久久成人精品视频| 丰满人妻一区二区三区无码av| 欧美久久久久中文字幕| 久久久久久久九九九九| 最新国产精品久久精品| 五月激情四射婷婷| 26uuu色噜噜精品一区| 黄色a一级视频| 久久99精品久久久久久| wwwwww.色| 午夜精品免费| 视色,视色影院,视色影库,视色网 日韩精品福利片午夜免费观看 | 久久综合伊人77777| 亚洲成熟女性毛茸茸| 91精品国产美女浴室洗澡无遮挡| 日韩精品乱码久久久久久| 亚洲最色的网站| av资源吧首页| 欧美日韩黄色大片| 国产伦精品一区二区三区视频我| 日韩欧美在线中文字幕| 一二三区免费视频| 欧美亚一区二区| 91成人在线免费| 欧美一区二区三区日韩| 精品国产乱码一区二区三| 日韩精品一区二区三区视频播放| 亚洲欧美激情另类| 一级做a爱片性色毛片| 91精品国产高清一区二区三区| а√天堂资源在线| 亚洲精品xxx| 国产三级在线看| 久久久成人精品视频| 6699嫩草久久久精品影院| 青青a在线精品免费观看| 91p九色成人| 97se国产在线视频| 91成人抖音| 亚洲自拍欧美色图| 欧美日韩国产网站| 91成人在线视频| 亚洲欧美成人影院| 68精品久久久久久欧美| 久久xxx视频| 国产精品对白刺激久久久| 亚洲小说图片视频| 9999在线观看| 亚洲精品1区| 亚洲欧美久久久久| 波多野结衣91| 国精品人伦一区二区三区蜜桃| 亚洲一区二区三区美女| 少妇久久久久久久| 日韩欧美久久久| 国产福利电影在线| 欧美激情视频一区| 福利一区和二区| 国产在线视频欧美一区二区三区| 午夜视频一区二区在线观看| 91午夜理伦私人影院| 狼人精品一区二区三区在线| 尤物国产精品| 久久精品二区三区| 91丨porny丨九色| 国产一区二区三区在线看麻豆| 99re精彩视频| 99精品久久免费看蜜臀剧情介绍| 欧美特黄一级片| 91久久一区二区| 神马午夜电影一区二区三区在线观看| 日韩在线免费视频| jk漫画禁漫成人入口| 欧美在线一级视频| 精品视频在线观看网站| 亚洲在线免费观看| 成人女性视频| 看av免费毛片手机播放| 国产成人精品一区二区三区四区| 欧美性受xxxx黑人| 日韩欧美一区二区在线| 日韩在线视频观看免费| 亚洲精品电影在线观看| 大地资源网3页在线观看| 国产精品第三页| 亚洲精品一级二级三级| 国产美女在线一区| 丁香婷婷深情五月亚洲| 国产人妻精品一区二区三区不卡| 欧美三级一区二区| 国产精品自拍电影| 一区二区欧美日韩视频| 国产免费不卡| 国严精品久久久久久亚洲影视| 欧美精品导航| 国产欧美在线一区| 成人av在线一区二区| 国产无码精品在线观看| 欧美videofree性高清杂交| 2024最新电影免费在线观看 | 超碰aⅴ人人做人人爽欧美| 国产在线播放一区二区| 国产欧美高清| 女尊高h男高潮呻吟| 欧美日韩美女在线观看| 日韩一区二区三区中文字幕| 中文字幕av一区二区| 日韩精品影院| 91嫩草免费看| 欧美在线网站| 95视频在线观看| 婷婷丁香久久五月婷婷| 天堂a√在线| 操日韩av在线电影| av一级久久| 精品国偷自产一区二区三区| 97se亚洲国产综合自在线观| 国产精品久久久久久久久久久久久久久久久 | 性色av一区二区三区在线观看| 久久99国产精品久久99大师| 阿v天堂2017| 久久91精品久久久久久秒播| 尤物在线免费视频| 精品人伦一区二区色婷婷| 国产精品xx| 日韩av一区二区三区在线观看 | 久久久久无码精品| 一区二区国产视频| 亚洲人妻一区二区三区| 日韩在线观看精品| 在线天堂中文资源最新版| 欧美日韩电影一区二区| 麻豆91精品91久久久的内涵| 欧美激情精品久久| 日韩av在线一区二区| 日本动漫理论片在线观看网站| 国产美女精品在线观看| 久久午夜视频| 欧美偷拍第一页| 日韩激情视频在线| 国产成人福利夜色影视| 成人在线免费高清视频| 九九九久久久精品| 久久精品99国产精| 亚洲人在线视频| 国产精品白丝久久av网站| 亚洲精品成人自拍| 国产成人午夜视频| 销魂美女一区二区| 欧美乱妇高清无乱码| 亚洲资源在线| 欧美 日韩 激情|