国产熟女一区二区91,人妻少妇精品久久久久久蜜臀av,99re国产在线观看,婷婷午夜av天堂,日本东京热久久久a,日本欧美一级二级三级,欧美另类丝袜一区在线,国产精品白浆久久久久久久,久99re在线播放

20個(gè)Redis經(jīng)典面試題匯總及答案(分享)-焦點(diǎn)速訊

來(lái)源:php中文網(wǎng) | 2023-03-07 18:58:55 |

本篇文章給大家整理了20道經(jīng)典Redis面試題,希望對(duì)大家有幫助。

1. 什么是Redis?它主要用來(lái)什么的?

Redis,英文全稱是Remote Dictionary Server(遠(yuǎn)程字典服務(wù)),是一個(gè)開源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API。

與MySQL數(shù)據(jù)庫(kù)不同的是,Redis的數(shù)據(jù)是存在內(nèi)存中的。它的讀寫速度非???,每秒可以處理超過(guò)10萬(wàn)次讀寫操作。因此redis被廣泛應(yīng)用于緩存,另外,Redis也經(jīng)常用來(lái)做分布式鎖。除此之外,Redis支持事務(wù)、持久化、LUA 腳本、LRU 驅(qū)動(dòng)事件、多種集群方案。


(資料圖片)

2.說(shuō)說(shuō)Redis的基本數(shù)據(jù)結(jié)構(gòu)類型

大多數(shù)小伙伴都知道,Redis有以下這五種基本類型:

String(字符串)Hash(哈希)List(列表)Set(集合)zset(有序集合)

它還有三種特殊的數(shù)據(jù)結(jié)構(gòu)類型

GeospatialHyperloglogBitmap

2.1 Redis 的五種基本數(shù)據(jù)類型

String(字符串)

簡(jiǎn)介:String是Redis最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu)類型,它是二進(jìn)制安全的,可以存儲(chǔ)圖片或者序列化的對(duì)象,值最大存儲(chǔ)為512M簡(jiǎn)單使用舉例: set key valueget key等應(yīng)用場(chǎng)景:共享session、分布式鎖,計(jì)數(shù)器、限流。內(nèi)部編碼有3種,int(8字節(jié)長(zhǎng)整型)/embstr(小于等于39字節(jié)字符串)/raw(大于39個(gè)字節(jié)字符串)

C語(yǔ)言的字符串是char[]實(shí)現(xiàn)的,而Redis使用SDS(simple dynamic string)封裝,sds源碼如下:

struct sdshdr{  unsigned int len; // 標(biāo)記buf的長(zhǎng)度  unsigned int free; //標(biāo)記buf中未使用的元素個(gè)數(shù)  char buf[]; // 存放元素的坑}

SDS 結(jié)構(gòu)圖如下:

Redis為什么選擇SDS結(jié)構(gòu),而C語(yǔ)言原生的char[]不香嗎?

Hash(哈希)

簡(jiǎn)介:在Redis中,哈希類型是指v(值)本身又是一個(gè)鍵值對(duì)(k-v)結(jié)構(gòu)簡(jiǎn)單使用舉例:hset key field value、hget key field內(nèi)部編碼:ziplist(壓縮列表)、hashtable(哈希表)應(yīng)用場(chǎng)景:緩存用戶信息等。注意點(diǎn):如果開發(fā)使用hgetall,哈希元素比較多的話,可能導(dǎo)致Redis阻塞,可以使用hscan。而如果只是獲取部分field,建議使用hmget。

字符串和哈希類型對(duì)比如下圖:

List(列表)

簡(jiǎn)介:列表(list)類型是用來(lái)存儲(chǔ)多個(gè)有序的字符串,一個(gè)列表最多可以存儲(chǔ)2^32-1個(gè)元素。簡(jiǎn)單實(shí)用舉例:lpush key value [value ...]、lrange key start end內(nèi)部編碼:ziplist(壓縮列表)、linkedlist(鏈表)應(yīng)用場(chǎng)景:消息隊(duì)列,文章列表,

一圖看懂list類型的插入與彈出:

list應(yīng)用場(chǎng)景參考以下:

lpush+lpop=Stack(棧)lpush+rpop=Queue(隊(duì)列)lpsh+ltrim=Capped Collection(有限集合)lpush+brpop=Message Queue(消息隊(duì)列)

Set(集合)

簡(jiǎn)介:集合(set)類型也是用來(lái)保存多個(gè)的字符串元素,但是不允許重復(fù)元素簡(jiǎn)單使用舉例:sadd key element [element ...]、smembers key內(nèi)部編碼:intset(整數(shù)集合)hashtable(哈希表)注意點(diǎn):smembers和lrange、hgetall都屬于比較重的命令,如果元素過(guò)多存在阻塞Redis的可能性,可以使用sscan來(lái)完成。應(yīng)用場(chǎng)景:用戶標(biāo)簽,生成隨機(jī)數(shù)抽獎(jiǎng)、社交需求。

有序集合(zset)

簡(jiǎn)介:已排序的字符串集合,同時(shí)元素不能重復(fù)簡(jiǎn)單格式舉例:zadd key score member [score member ...],zrank key member底層內(nèi)部編碼:ziplist(壓縮列表)、skiplist(跳躍表)應(yīng)用場(chǎng)景:排行榜,社交需求(如用戶點(diǎn)贊)。

2.2 Redis 的三種特殊數(shù)據(jù)類型

Geo:Redis3.2推出的,地理位置定位,用于存儲(chǔ)地理位置信息,并對(duì)存儲(chǔ)的信息進(jìn)行操作。HyperLogLog:用來(lái)做基數(shù)統(tǒng)計(jì)算法的數(shù)據(jù)結(jié)構(gòu),如統(tǒng)計(jì)網(wǎng)站的UV。Bitmaps :用一個(gè)比特位來(lái)映射某個(gè)元素的狀態(tài),在Redis中,它的底層是基于字符串類型實(shí)現(xiàn)的,可以把bitmaps成作一個(gè)以比特位為單位的數(shù)組

3. Redis為什么這么快?

Redis為什么這么快

3.1 基于內(nèi)存存儲(chǔ)實(shí)現(xiàn)

我們都知道內(nèi)存讀寫是比在磁盤快很多的,Redis基于內(nèi)存存儲(chǔ)實(shí)現(xiàn)的數(shù)據(jù)庫(kù),相對(duì)于數(shù)據(jù)存在磁盤的MySQL數(shù)據(jù)庫(kù),省去磁盤I/O的消耗。

3.2 高效的數(shù)據(jù)結(jié)構(gòu)

我們知道,Mysql索引為了提高效率,選擇了B+樹的數(shù)據(jù)結(jié)構(gòu)。其實(shí)合理的數(shù)據(jù)結(jié)構(gòu),就是可以讓你的應(yīng)用/程序更快。先看下Redis的數(shù)據(jù)結(jié)構(gòu)&內(nèi)部編碼圖:

SDS簡(jiǎn)單動(dòng)態(tài)字符串

字符串長(zhǎng)度處理:Redis獲取字符串長(zhǎng)度,時(shí)間復(fù)雜度為O(1),而C語(yǔ)言中,需要從頭開始遍歷,復(fù)雜度為O(n);空間預(yù)分配:字符串修改越頻繁的話,內(nèi)存分配越頻繁,就會(huì)消耗性能,而SDS修改和空間擴(kuò)充,會(huì)額外分配未使用的空間,減少性能損耗。惰性空間釋放:SDS 縮短時(shí),不是回收多余的內(nèi)存空間,而是free記錄下多余的空間,后續(xù)有變更,直接使用free中記錄的空間,減少分配。二進(jìn)制安全:Redis可以存儲(chǔ)一些二進(jìn)制數(shù)據(jù),在C語(yǔ)言中字符串遇到"\0"會(huì)結(jié)束,而 SDS中標(biāo)志字符串結(jié)束的是len屬性。

字典

Redis 作為 K-V 型內(nèi)存數(shù)據(jù)庫(kù),所有的鍵值就是用字典來(lái)存儲(chǔ)。字典就是哈希表,比如HashMap,通過(guò)key就可以直接獲取到對(duì)應(yīng)的value。而哈希表的特性,在O(1)時(shí)間復(fù)雜度就可以獲得對(duì)應(yīng)的值。

跳躍表

跳躍表是Redis特有的數(shù)據(jù)結(jié)構(gòu),就是在鏈表的基礎(chǔ)上,增加多級(jí)索引提升查找效率。跳躍表支持平均 O(logN),最壞 O(N)復(fù)雜度的節(jié)點(diǎn)查找,還可以通過(guò)順序性操作批量處理節(jié)點(diǎn)。

3.3 合理的數(shù)據(jù)編碼

Redis 支持多種數(shù)據(jù)數(shù)據(jù)類型,每種基本類型,可能對(duì)多種數(shù)據(jù)結(jié)構(gòu)。什么時(shí)候,使用什么樣數(shù)據(jù)結(jié)構(gòu),使用什么樣編碼,是redis設(shè)計(jì)者總結(jié)優(yōu)化的結(jié)果。

String:如果存儲(chǔ)數(shù)字的話,是用int類型的編碼;如果存儲(chǔ)非數(shù)字,小于等于39字節(jié)的字符串,是embstr;大于39個(gè)字節(jié),則是raw編碼。List:如果列表的元素個(gè)數(shù)小于512個(gè),列表每個(gè)元素的值都小于64字節(jié)(默認(rèn)),使用ziplist編碼,否則使用linkedlist編碼Hash:哈希類型元素個(gè)數(shù)小于512個(gè),所有值小于64字節(jié)的話,使用ziplist編碼,否則使用hashtable編碼。Set:如果集合中的元素都是整數(shù)且元素個(gè)數(shù)小于512個(gè),使用intset編碼,否則使用hashtable編碼。Zset:當(dāng)有序集合的元素個(gè)數(shù)小于128個(gè),每個(gè)元素的值小于64字節(jié)時(shí),使用ziplist編碼,否則使用skiplist(跳躍表)編碼

3.4 合理的線程模型

I/O 多路復(fù)用

I/O 多路復(fù)用

多路I/O復(fù)用技術(shù)可以讓單個(gè)線程高效的處理多個(gè)連接請(qǐng)求,而Redis使用用epoll作為I/O多路復(fù)用技術(shù)的實(shí)現(xiàn)。并且,Redis自身的事件處理模型將epoll中的連接、讀寫、關(guān)閉都轉(zhuǎn)換為事件,不在網(wǎng)絡(luò)I/O上浪費(fèi)過(guò)多的時(shí)間。

什么是I/O多路復(fù)用?

I/O :網(wǎng)絡(luò) I/O多路 :多個(gè)網(wǎng)絡(luò)連接復(fù)用:復(fù)用同一個(gè)線程。IO多路復(fù)用其實(shí)就是一種同步IO模型,它實(shí)現(xiàn)了一個(gè)線程可以監(jiān)視多個(gè)文件句柄;一旦某個(gè)文件句柄就緒,就能夠通知應(yīng)用程序進(jìn)行相應(yīng)的讀寫操作;而沒(méi)有文件句柄就緒時(shí),就會(huì)阻塞應(yīng)用程序,交出cpu。

單線程模型

Redis是單線程模型的,而單線程避免了CPU不必要的上下文切換和競(jìng)爭(zhēng)鎖的消耗。也正因?yàn)槭菃尉€程,如果某個(gè)命令執(zhí)行過(guò)長(zhǎng)(如hgetall命令),會(huì)造成阻塞。Redis是面向快速執(zhí)行場(chǎng)景的數(shù)據(jù)庫(kù)。,所以要慎用如smembers和lrange、hgetall等命令。Redis 6.0 引入了多線程提速,它的執(zhí)行命令操作內(nèi)存的仍然是個(gè)單線程。

3.5 虛擬內(nèi)存機(jī)制

Redis直接自己構(gòu)建了VM機(jī)制 ,不會(huì)像一般的系統(tǒng)會(huì)調(diào)用系統(tǒng)函數(shù)處理,會(huì)浪費(fèi)一定的時(shí)間去移動(dòng)和請(qǐng)求。

Redis的虛擬內(nèi)存機(jī)制是啥呢?

虛擬內(nèi)存機(jī)制就是暫時(shí)把不經(jīng)常訪問(wèn)的數(shù)據(jù)(冷數(shù)據(jù))從內(nèi)存交換到磁盤中,從而騰出寶貴的內(nèi)存空間用于其它需要訪問(wèn)的數(shù)據(jù)(熱數(shù)據(jù))。通過(guò)VM功能可以實(shí)現(xiàn)冷熱數(shù)據(jù)分離,使熱數(shù)據(jù)仍在內(nèi)存中、冷數(shù)據(jù)保存到磁盤。這樣就可以避免因?yàn)閮?nèi)存不足而造成訪問(wèn)速度下降的問(wèn)題。

4. 什么是緩存擊穿、緩存穿透、緩存雪崩?

4.1 緩存穿透問(wèn)題

先來(lái)看一個(gè)常見(jiàn)的緩存使用方式:讀請(qǐng)求來(lái)了,先查下緩存,緩存有值命中,就直接返回;緩存沒(méi)命中,就去查數(shù)據(jù)庫(kù),然后把數(shù)據(jù)庫(kù)的值更新到緩存,再返回。

讀取緩存

緩存穿透:指查詢一個(gè)一定不存在的數(shù)據(jù),由于緩存是不命中時(shí)需要從數(shù)據(jù)庫(kù)查詢,查不到數(shù)據(jù)則不寫入緩存,這將導(dǎo)致這個(gè)不存在的數(shù)據(jù)每次請(qǐng)求都要到數(shù)據(jù)庫(kù)去查詢,進(jìn)而給數(shù)據(jù)庫(kù)帶來(lái)壓力。

通俗點(diǎn)說(shuō),讀請(qǐng)求訪問(wèn)時(shí),緩存和數(shù)據(jù)庫(kù)都沒(méi)有某個(gè)值,這樣就會(huì)導(dǎo)致每次對(duì)這個(gè)值的查詢請(qǐng)求都會(huì)穿透到數(shù)據(jù)庫(kù),這就是緩存穿透。

緩存穿透一般都是這幾種情況產(chǎn)生的:

業(yè)務(wù)不合理的設(shè)計(jì),比如大多數(shù)用戶都沒(méi)開守護(hù),但是你的每個(gè)請(qǐng)求都去緩存,查詢某個(gè)userid查詢有沒(méi)有守護(hù)。業(yè)務(wù)/運(yùn)維/開發(fā)失誤的操作,比如緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)都被誤刪除了。黑客非法請(qǐng)求攻擊,比如黑客故意捏造大量非法請(qǐng)求,以讀取不存在的業(yè)務(wù)數(shù)據(jù)。

如何避免緩存穿透呢?一般有三種方法。

1.如果是非法請(qǐng)求,我們?cè)贏PI入口,對(duì)參數(shù)進(jìn)行校驗(yàn),過(guò)濾非法值。2.如果查詢數(shù)據(jù)庫(kù)為空,我們可以給緩存設(shè)置個(gè)空值,或者默認(rèn)值。但是如有有寫請(qǐng)求進(jìn)來(lái)的話,需要更新緩存哈,以保證緩存一致性,同時(shí),最后給緩存設(shè)置適當(dāng)?shù)倪^(guò)期時(shí)間。(業(yè)務(wù)上比較常用,簡(jiǎn)單有效)3.使用布隆過(guò)濾器快速判斷數(shù)據(jù)是否存在。即一個(gè)查詢請(qǐng)求過(guò)來(lái)時(shí),先通過(guò)布隆過(guò)濾器判斷值是否存在,存在才繼續(xù)往下查。

布隆過(guò)濾器原理:它由初始值為0的位圖數(shù)組和N個(gè)哈希函數(shù)組成。一個(gè)對(duì)一個(gè)key進(jìn)行N個(gè)hash算法獲取N個(gè)值,在比特?cái)?shù)組中將這N個(gè)值散列后設(shè)定為1,然后查的時(shí)候如果特定的這幾個(gè)位置都為1,那么布隆過(guò)濾器判斷該key存在。

4.2 緩存雪奔問(wèn)題

緩存雪奔:指緩存中數(shù)據(jù)大批量到過(guò)期時(shí)間,而查詢數(shù)據(jù)量巨大,請(qǐng)求都直接訪問(wèn)數(shù)據(jù)庫(kù),引起數(shù)據(jù)庫(kù)壓力過(guò)大甚至down機(jī)。

緩存雪奔一般是由于大量數(shù)據(jù)同時(shí)過(guò)期造成的,對(duì)于這個(gè)原因,可通過(guò)均勻設(shè)置過(guò)期時(shí)間解決,即讓過(guò)期時(shí)間相對(duì)離散一點(diǎn)。如采用一個(gè)較大固定值+一個(gè)較小的隨機(jī)值,5小時(shí)+0到1800秒醬紫。Redis 故障宕機(jī)也可能引起緩存雪奔。這就需要構(gòu)造Redis高可用集群啦。

4.3 緩存擊穿問(wèn)題

緩存擊穿:指熱點(diǎn)key在某個(gè)時(shí)間點(diǎn)過(guò)期的時(shí)候,而恰好在這個(gè)時(shí)間點(diǎn)對(duì)這個(gè)Key有大量的并發(fā)請(qǐng)求過(guò)來(lái),從而大量的請(qǐng)求打到db。

緩存擊穿看著有點(diǎn)像,其實(shí)它兩區(qū)別是,緩存雪奔是指數(shù)據(jù)庫(kù)壓力過(guò)大甚至down機(jī),緩存擊穿只是大量并發(fā)請(qǐng)求到了DB數(shù)據(jù)庫(kù)層面??梢哉J(rèn)為擊穿是緩存雪奔的一個(gè)子集吧。有些文章認(rèn)為它倆區(qū)別,是區(qū)別在于擊穿針對(duì)某一熱點(diǎn)key緩存,雪奔則是很多key。

解決方案就有兩種:

1.使用互斥鎖方案。緩存失效時(shí),不是立即去加載db數(shù)據(jù),而是先使用某些帶成功返回的原子操作命令,如(Redis的setnx)去操作,成功的時(shí)候,再去加載db數(shù)據(jù)庫(kù)數(shù)據(jù)和設(shè)置緩存。否則就去重試獲取緩存。2. “永不過(guò)期”,是指沒(méi)有設(shè)置過(guò)期時(shí)間,但是熱點(diǎn)數(shù)據(jù)快要過(guò)期時(shí),異步線程去更新和設(shè)置過(guò)期時(shí)間。

5. 什么是熱Key問(wèn)題,如何解決熱key問(wèn)題

什么是熱Key呢?在Redis中,我們把訪問(wèn)頻率高的key,稱為熱點(diǎn)key。

如果某一熱點(diǎn)key的請(qǐng)求到服務(wù)器主機(jī)時(shí),由于請(qǐng)求量特別大,可能會(huì)導(dǎo)致主機(jī)資源不足,甚至宕機(jī),從而影響正常的服務(wù)。

而熱點(diǎn)Key是怎么產(chǎn)生的呢?主要原因有兩個(gè):

用戶消費(fèi)的數(shù)據(jù)遠(yuǎn)大于生產(chǎn)的數(shù)據(jù),如秒殺、熱點(diǎn)新聞等讀多寫少的場(chǎng)景。請(qǐng)求分片集中,超過(guò)單Redi服務(wù)器的性能,比如固定名稱key,Hash落入同一臺(tái)服務(wù)器,瞬間訪問(wèn)量極大,超過(guò)機(jī)器瓶頸,產(chǎn)生熱點(diǎn)Key問(wèn)題。

那么在日常開發(fā)中,如何識(shí)別到熱點(diǎn)key呢?

憑經(jīng)驗(yàn)判斷哪些是熱Key;客戶端統(tǒng)計(jì)上報(bào);服務(wù)代理層上報(bào)

如何解決熱key問(wèn)題?

Redis集群擴(kuò)容:增加分片副本,均衡讀流量;將熱key分散到不同的服務(wù)器中;使用二級(jí)緩存,即JVM本地緩存,減少Redis的讀請(qǐng)求。

6. Redis 過(guò)期策略和內(nèi)存淘汰策略

6.1 Redis的過(guò)期策略

我們?cè)?code>set key的時(shí)候,可以給它設(shè)置一個(gè)過(guò)期時(shí)間,比如expire key 60。指定這key60s后過(guò)期,60s后,redis是如何處理的嘛?我們先來(lái)介紹幾種過(guò)期策略:

定時(shí)過(guò)期

每個(gè)設(shè)置過(guò)期時(shí)間的key都需要?jiǎng)?chuàng)建一個(gè)定時(shí)器,到過(guò)期時(shí)間就會(huì)立即對(duì)key進(jìn)行清除。該策略可以立即清除過(guò)期的數(shù)據(jù),對(duì)內(nèi)存很友好;但是會(huì)占用大量的CPU資源去處理過(guò)期的數(shù)據(jù),從而影響緩存的響應(yīng)時(shí)間和吞吐量。

惰性過(guò)期

只有當(dāng)訪問(wèn)一個(gè)key時(shí),才會(huì)判斷該key是否已過(guò)期,過(guò)期則清除。該策略可以最大化地節(jié)省CPU資源,卻對(duì)內(nèi)存非常不友好。極端情況可能出現(xiàn)大量的過(guò)期key沒(méi)有再次被訪問(wèn),從而不會(huì)被清除,占用大量?jī)?nèi)存。

定期過(guò)期

每隔一定的時(shí)間,會(huì)掃描一定數(shù)量的數(shù)據(jù)庫(kù)的expires字典中一定數(shù)量的key,并清除其中已過(guò)期的key。該策略是前兩者的一個(gè)折中方案。通過(guò)調(diào)整定時(shí)掃描的時(shí)間間隔和每次掃描的限定耗時(shí),可以在不同情況下使得CPU和內(nèi)存資源達(dá)到最優(yōu)的平衡效果。

expires字典會(huì)保存所有設(shè)置了過(guò)期時(shí)間的key的過(guò)期時(shí)間數(shù)據(jù),其中,key是指向鍵空間中的某個(gè)鍵的指針,value是該鍵的毫秒精度的UNIX時(shí)間戳表示的過(guò)期時(shí)間。鍵空間是指該Redis集群中保存的所有鍵。

Redis中同時(shí)使用了惰性過(guò)期和定期過(guò)期兩種過(guò)期策略。

假設(shè)Redis當(dāng)前存放30萬(wàn)個(gè)key,并且都設(shè)置了過(guò)期時(shí)間,如果你每隔100ms就去檢查這全部的key,CPU負(fù)載會(huì)特別高,最后可能會(huì)掛掉。因此,redis采取的是定期過(guò)期,每隔100ms就隨機(jī)抽取一定數(shù)量的key來(lái)檢查和刪除的。但是呢,最后可能會(huì)有很多已經(jīng)過(guò)期的key沒(méi)被刪除。這時(shí)候,redis采用惰性刪除。在你獲取某個(gè)key的時(shí)候,redis會(huì)檢查一下,這個(gè)key如果設(shè)置了過(guò)期時(shí)間并且已經(jīng)過(guò)期了,此時(shí)就會(huì)刪除。

但是呀,如果定期刪除漏掉了很多過(guò)期的key,然后也沒(méi)走惰性刪除。就會(huì)有很多過(guò)期key積在內(nèi)存內(nèi)存,直接會(huì)導(dǎo)致內(nèi)存爆的?;蛘哂行r(shí)候,業(yè)務(wù)量大起來(lái)了,redis的key被大量使用,內(nèi)存直接不夠了,運(yùn)維小哥哥也忘記加大內(nèi)存了。難道redis直接這樣掛掉?不會(huì)的!Redis用8種內(nèi)存淘汰策略保護(hù)自己~

6.2 Redis 內(nèi)存淘汰策略

volatile-lru:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),從設(shè)置了過(guò)期時(shí)間的key中使用LRU(最近最少使用)算法進(jìn)行淘汰;allkeys-lru:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),從所有key中使用LRU(最近最少使用)算法進(jìn)行淘汰。volatile-lfu:4.0版本新增,當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),在過(guò)期的key中,使用LFU算法進(jìn)行刪除key。allkeys-lfu:4.0版本新增,當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),從所有key中使用LFU算法進(jìn)行淘汰;volatile-random:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),從設(shè)置了過(guò)期時(shí)間的key中,隨機(jī)淘汰數(shù)據(jù);。allkeys-random:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),從所有key中隨機(jī)淘汰數(shù)據(jù)。volatile-ttl:當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),在設(shè)置了過(guò)期時(shí)間的key中,根據(jù)過(guò)期時(shí)間進(jìn)行淘汰,越早過(guò)期的優(yōu)先被淘汰;noeviction:默認(rèn)策略,當(dāng)內(nèi)存不足以容納新寫入數(shù)據(jù)時(shí),新寫入操作會(huì)報(bào)錯(cuò)。

7.說(shuō)說(shuō)Redis的常用應(yīng)用場(chǎng)景

緩存排行榜計(jì)數(shù)器應(yīng)用共享Session分布式鎖社交網(wǎng)絡(luò)消息隊(duì)列位操作

7.1 緩存

我們一提到redis,自然而然就想到緩存,國(guó)內(nèi)外中大型的網(wǎng)站都離不開緩存。合理的利用緩存,比如緩存熱點(diǎn)數(shù)據(jù),不僅可以提升網(wǎng)站的訪問(wèn)速度,還可以降低數(shù)據(jù)庫(kù)DB的壓力。并且,Redis相比于memcached,還提供了豐富的數(shù)據(jù)結(jié)構(gòu),并且提供RDB和AOF等持久化機(jī)制,強(qiáng)的一批。

7.2 排行榜

當(dāng)今互聯(lián)網(wǎng)應(yīng)用,有各種各樣的排行榜,如電商網(wǎng)站的月度銷量排行榜、社交APP的禮物排行榜、小程序的投票排行榜等等。Redis提供的zset數(shù)據(jù)類型能夠?qū)崿F(xiàn)這些復(fù)雜的排行榜。

比如,用戶每天上傳視頻,獲得點(diǎn)贊的排行榜可以這樣設(shè)計(jì):

1.用戶Jay上傳一個(gè)視頻,獲得6個(gè)贊,可以醬紫:
zadd user:ranking:2021-03-03 Jay 3
2.過(guò)了一段時(shí)間,再獲得一個(gè)贊,可以這樣:
zincrby user:ranking:2021-03-03 Jay 1
3.如果某個(gè)用戶John作弊,需要?jiǎng)h除該用戶:
zrem user:ranking:2021-03-03 John
4.展示獲取贊數(shù)最多的3個(gè)用戶
zrevrangebyrank user:ranking:2021-03-03 0 2

7.3 計(jì)數(shù)器應(yīng)用

各大網(wǎng)站、APP應(yīng)用經(jīng)常需要計(jì)數(shù)器的功能,如短視頻的播放數(shù)、電商網(wǎng)站的瀏覽數(shù)。這些播放數(shù)、瀏覽數(shù)一般要求實(shí)時(shí)的,每一次播放和瀏覽都要做加1的操作,如果并發(fā)量很大對(duì)于傳統(tǒng)關(guān)系型數(shù)據(jù)的性能是一種挑戰(zhàn)。Redis天然支持計(jì)數(shù)功能而且計(jì)數(shù)的性能也非常好,可以說(shuō)是計(jì)數(shù)器系統(tǒng)的重要選擇。

7.4 共享Session

如果一個(gè)分布式Web服務(wù)將用戶的Session信息保存在各自服務(wù)器,用戶刷新一次可能就需要重新登錄了,這樣顯然有問(wèn)題。實(shí)際上,可以使用Redis將用戶的Session進(jìn)行集中管理,每次用戶更新或者查詢登錄信息都直接從Redis中集中獲取。

7.5 分布式鎖

幾乎每個(gè)互聯(lián)網(wǎng)公司中都使用了分布式部署,分布式服務(wù)下,就會(huì)遇到對(duì)同一個(gè)資源的并發(fā)訪問(wèn)的技術(shù)難題,如秒殺、下單減庫(kù)存等場(chǎng)景。

用synchronize或者reentrantlock本地鎖肯定是不行的。如果是并發(fā)量不大話,使用數(shù)據(jù)庫(kù)的悲觀鎖、樂(lè)觀鎖來(lái)實(shí)現(xiàn)沒(méi)啥問(wèn)題。但是在并發(fā)量高的場(chǎng)合中,利用數(shù)據(jù)庫(kù)鎖來(lái)控制資源的并發(fā)訪問(wèn),會(huì)影響數(shù)據(jù)庫(kù)的性能。實(shí)際上,可以用Redis的setnx來(lái)實(shí)現(xiàn)分布式的鎖。

7.6 社交網(wǎng)絡(luò)

贊/踩、粉絲、共同好友/喜好、推送、下拉刷新等是社交網(wǎng)站的必備功能,由于社交網(wǎng)站訪問(wèn)量通常比較大,而且傳統(tǒng)的關(guān)系型數(shù)據(jù)不太適保存 這種類型的數(shù)據(jù),Redis提供的數(shù)據(jù)結(jié)構(gòu)可以相對(duì)比較容易地實(shí)現(xiàn)這些功能。

7.7 消息隊(duì)列

消息隊(duì)列是大型網(wǎng)站必用中間件,如ActiveMQ、RabbitMQ、Kafka等流行的消息隊(duì)列中間件,主要用于業(yè)務(wù)解耦、流量削峰及異步處理實(shí)時(shí)性低的業(yè)務(wù)。Redis提供了發(fā)布/訂閱及阻塞隊(duì)列功能,能實(shí)現(xiàn)一個(gè)簡(jiǎn)單的消息隊(duì)列系統(tǒng)。另外,這個(gè)不能和專業(yè)的消息中間件相比。

7.8 位操作

用于數(shù)據(jù)量上億的場(chǎng)景下,例如幾億用戶系統(tǒng)的簽到,去重登錄次數(shù)統(tǒng)計(jì),某用戶是否在線狀態(tài)等等。騰訊10億用戶,要幾個(gè)毫秒內(nèi)查詢到某個(gè)用戶是否在線,能怎么做?千萬(wàn)別說(shuō)給每個(gè)用戶建立一個(gè)key,然后挨個(gè)記(你可以算一下需要的內(nèi)存會(huì)很恐怖,而且這種類似的需求很多。這里要用到位操作——使用setbit、getbit、bitcount命令。原理是:redis內(nèi)構(gòu)建一個(gè)足夠長(zhǎng)的數(shù)組,每個(gè)數(shù)組元素只能是0和1兩個(gè)值,然后這個(gè)數(shù)組的下標(biāo)index用來(lái)表示用戶id(必須是數(shù)字哈),那么很顯然,這個(gè)幾億長(zhǎng)的大數(shù)組就能通過(guò)下標(biāo)和元素值(0和1)來(lái)構(gòu)建一個(gè)記憶系統(tǒng)。

8. Redis 的持久化機(jī)制有哪些??jī)?yōu)缺點(diǎn)說(shuō)說(shuō)

Redis是基于內(nèi)存的非關(guān)系型K-V數(shù)據(jù)庫(kù),既然它是基于內(nèi)存的,如果Redis服務(wù)器掛了,數(shù)據(jù)就會(huì)丟失。為了避免數(shù)據(jù)丟失了,Redis提供了持久化,即把數(shù)據(jù)保存到磁盤。

Redis提供了RDB和AOF兩種持久化機(jī)制,它持久化文件加載流程如下:

8.1 RDB

RDB,就是把內(nèi)存數(shù)據(jù)以快照的形式保存到磁盤上。

什么是快照?可以這樣理解,給當(dāng)前時(shí)刻的數(shù)據(jù),拍一張照片,然后保存下來(lái)。

RDB持久化,是指在指定的時(shí)間間隔內(nèi),執(zhí)行指定次數(shù)的寫操作,將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤中,它是Redis默認(rèn)的持久化方式。執(zhí)行完操作后,在指定目錄下會(huì)生成一個(gè)dump.rdb文件,Redis 重啟的時(shí)候,通過(guò)加載dump.rdb文件來(lái)恢復(fù)數(shù)據(jù)。RDB觸發(fā)機(jī)制主要有以下幾種:

RDB 的優(yōu)點(diǎn)

適合大規(guī)模的數(shù)據(jù)恢復(fù)場(chǎng)景,如備份,全量復(fù)制等

RDB缺點(diǎn)

沒(méi)辦法做到實(shí)時(shí)持久化/秒級(jí)持久化。新老版本存在RDB格式兼容問(wèn)題

AOF

AOF(append only file)持久化,采用日志的形式來(lái)記錄每個(gè)寫操作,追加到文件中,重啟時(shí)再重新執(zhí)行AOF文件中的命令來(lái)恢復(fù)數(shù)據(jù)。它主要解決數(shù)據(jù)持久化的實(shí)時(shí)性問(wèn)題。默認(rèn)是不開啟的。

AOF的工作流程如下:

AOF的優(yōu)點(diǎn)

數(shù)據(jù)的一致性和完整性更高

AOF的缺點(diǎn)

AOF記錄的內(nèi)容越多,文件越大,數(shù)據(jù)恢復(fù)變慢。

9.怎么實(shí)現(xiàn)Redis的高可用?

我們?cè)陧?xiàng)目中使用Redis,肯定不會(huì)是單點(diǎn)部署Redis服務(wù)的。因?yàn)?,單點(diǎn)部署一旦宕機(jī),就不可用了。為了實(shí)現(xiàn)高可用,通常的做法是,將數(shù)據(jù)庫(kù)復(fù)制多個(gè)副本以部署在不同的服務(wù)器上,其中一臺(tái)掛了也可以繼續(xù)提供服務(wù)。Redis 實(shí)現(xiàn)高可用有三種部署模式:主從模式,哨兵模式,集群模式。

9.1 主從模式

主從模式中,Redis部署了多臺(tái)機(jī)器,有主節(jié)點(diǎn),負(fù)責(zé)讀寫操作,有從節(jié)點(diǎn),只負(fù)責(zé)讀操作。從節(jié)點(diǎn)的數(shù)據(jù)來(lái)自主節(jié)點(diǎn),實(shí)現(xiàn)原理就是主從復(fù)制機(jī)制

主從復(fù)制包括全量復(fù)制,增量復(fù)制兩種。一般當(dāng)slave第一次啟動(dòng)連接master,或者認(rèn)為是第一次連接,就采用全量復(fù)制,全量復(fù)制流程如下:

1.slave發(fā)送sync命令到master。2.master接收到SYNC命令后,執(zhí)行bgsave命令,生成RDB全量文件。3.master使用緩沖區(qū),記錄RDB快照生成期間的所有寫命令。4.master執(zhí)行完bgsave后,向所有slave發(fā)送RDB快照文件。5.slave收到RDB快照文件后,載入、解析收到的快照。6.master使用緩沖區(qū),記錄RDB同步期間生成的所有寫的命令。7.master快照發(fā)送完畢后,開始向slave發(fā)送緩沖區(qū)中的寫命令;8.salve接受命令請(qǐng)求,并執(zhí)行來(lái)自master緩沖區(qū)的寫命令

redis2.8版本之后,已經(jīng)使用psync來(lái)替代sync,因?yàn)閟ync命令非常消耗系統(tǒng)資源,psync的效率更高。

slave與master全量同步之后,master上的數(shù)據(jù),如果再次發(fā)生更新,就會(huì)觸發(fā)增量復(fù)制

當(dāng)master節(jié)點(diǎn)發(fā)生數(shù)據(jù)增減時(shí),就會(huì)觸發(fā)replicationFeedSalves()函數(shù),接下來(lái)在 Master節(jié)點(diǎn)上調(diào)用的每一個(gè)命令會(huì)使用replicationFeedSlaves()來(lái)同步到Slave節(jié)點(diǎn)。執(zhí)行此函數(shù)之前呢,master節(jié)點(diǎn)會(huì)判斷用戶執(zhí)行的命令是否有數(shù)據(jù)更新,如果有數(shù)據(jù)更新的話,并且slave節(jié)點(diǎn)不為空,就會(huì)執(zhí)行此函數(shù)。這個(gè)函數(shù)作用就是:把用戶執(zhí)行的命令發(fā)送到所有的slave節(jié)點(diǎn),讓slave節(jié)點(diǎn)執(zhí)行。流程如下:

9.2 哨兵模式

主從模式中,一旦主節(jié)點(diǎn)由于故障不能提供服務(wù),需要人工將從節(jié)點(diǎn)晉升為主節(jié)點(diǎn),同時(shí)還要通知應(yīng)用方更新主節(jié)點(diǎn)地址。顯然,多數(shù)業(yè)務(wù)場(chǎng)景都不能接受這種故障處理方式。Redis從2.8開始正式提供了Redis Sentinel(哨兵)架構(gòu)來(lái)解決這個(gè)問(wèn)題。

哨兵模式,由一個(gè)或多個(gè)Sentinel實(shí)例組成的Sentinel系統(tǒng),它可以監(jiān)視所有的Redis主節(jié)點(diǎn)和從節(jié)點(diǎn),并在被監(jiān)視的主節(jié)點(diǎn)進(jìn)入下線狀態(tài)時(shí),自動(dòng)將下線主服務(wù)器屬下的某個(gè)從節(jié)點(diǎn)升級(jí)為新的主節(jié)點(diǎn)。但是呢,一個(gè)哨兵進(jìn)程對(duì)Redis節(jié)點(diǎn)進(jìn)行監(jiān)控,就可能會(huì)出現(xiàn)問(wèn)題(單點(diǎn)問(wèn)題),因此,可以使用多個(gè)哨兵來(lái)進(jìn)行監(jiān)控Redis節(jié)點(diǎn),并且各個(gè)哨兵之間還會(huì)進(jìn)行監(jiān)控。

Sentinel哨兵模式

簡(jiǎn)單來(lái)說(shuō),哨兵模式就三個(gè)作用:

發(fā)送命令,等待Redis服務(wù)器(包括主服務(wù)器和從服務(wù)器)返回監(jiān)控其運(yùn)行狀態(tài);哨兵監(jiān)測(cè)到主節(jié)點(diǎn)宕機(jī),會(huì)自動(dòng)將從節(jié)點(diǎn)切換成主節(jié)點(diǎn),然后通過(guò)發(fā)布訂閱模式通知其他的從節(jié)點(diǎn),修改配置文件,讓它們切換主機(jī);哨兵之間還會(huì)相互監(jiān)控,從而達(dá)到高可用。

故障切換的過(guò)程是怎樣的呢

假設(shè)主服務(wù)器宕機(jī),哨兵1先檢測(cè)到這個(gè)結(jié)果,系統(tǒng)并不會(huì)馬上進(jìn)行 failover 過(guò)程,僅僅是哨兵1主觀的認(rèn)為主服務(wù)器不可用,這個(gè)現(xiàn)象成為主觀下線。當(dāng)后面的哨兵也檢測(cè)到主服務(wù)器不可用,并且數(shù)量達(dá)到一定值時(shí),那么哨兵之間就會(huì)進(jìn)行一次投票,投票的結(jié)果由一個(gè)哨兵發(fā)起,進(jìn)行 failover 操作。切換成功后,就會(huì)通過(guò)發(fā)布訂閱模式,讓各個(gè)哨兵把自己監(jiān)控的從服務(wù)器實(shí)現(xiàn)切換主機(jī),這個(gè)過(guò)程稱為客觀下線。這樣對(duì)于客戶端而言,一切都是透明的。

哨兵的工作模式如下:

每個(gè)Sentinel以每秒鐘一次的頻率向它所知的Master,Slave以及其他Sentinel實(shí)例發(fā)送一個(gè) PING命令。

如果一個(gè)實(shí)例(instance)距離最后一次有效回復(fù) PING 命令的時(shí)間超過(guò) down-after-milliseconds 選項(xiàng)所指定的值, 則這個(gè)實(shí)例會(huì)被 Sentinel標(biāo)記為主觀下線。

如果一個(gè)Master被標(biāo)記為主觀下線,則正在監(jiān)視這個(gè)Master的所有 Sentinel 要以每秒一次的頻率確認(rèn)Master的確進(jìn)入了主觀下線狀態(tài)。

當(dāng)有足夠數(shù)量的 Sentinel(大于等于配置文件指定的值)在指定的時(shí)間范圍內(nèi)確認(rèn)Master的確進(jìn)入了主觀下線狀態(tài), 則Master會(huì)被標(biāo)記為客觀下線。

在一般情況下, 每個(gè) Sentinel 會(huì)以每10秒一次的頻率向它已知的所有Master,Slave發(fā)送 INFO 命令。

當(dāng)Master被 Sentinel 標(biāo)記為客觀下線時(shí),Sentinel 向下線的 Master 的所有 Slave 發(fā)送 INFO 命令的頻率會(huì)從 10 秒一次改為每秒一次

若沒(méi)有足夠數(shù)量的 Sentinel同意Master已經(jīng)下線, Master的客觀下線狀態(tài)就會(huì)被移除;若Master 重新向 Sentinel 的 PING 命令返回有效回復(fù), Master 的主觀下線狀態(tài)就會(huì)被移除。

9.3 Cluster集群模式

哨兵模式基于主從模式,實(shí)現(xiàn)讀寫分離,它還可以自動(dòng)切換,系統(tǒng)可用性更高。但是它每個(gè)節(jié)點(diǎn)存儲(chǔ)的數(shù)據(jù)是一樣的,浪費(fèi)內(nèi)存,并且不好在線擴(kuò)容。因此,Cluster集群應(yīng)運(yùn)而生,它在Redis3.0加入的,實(shí)現(xiàn)了Redis的分布式存儲(chǔ)。對(duì)數(shù)據(jù)進(jìn)行分片,也就是說(shuō)每臺(tái)Redis節(jié)點(diǎn)上存儲(chǔ)不同的內(nèi)容,來(lái)解決在線擴(kuò)容的問(wèn)題。并且,它也提供復(fù)制和故障轉(zhuǎn)移的功能。

Cluster集群節(jié)點(diǎn)的通訊

一個(gè)Redis集群由多個(gè)節(jié)點(diǎn)組成,各個(gè)節(jié)點(diǎn)之間是怎么通信的呢?通過(guò)Gossip協(xié)議!

Redis Cluster集群通過(guò)Gossip協(xié)議進(jìn)行通信,節(jié)點(diǎn)之前不斷交換信息,交換的信息內(nèi)容包括節(jié)點(diǎn)出現(xiàn)故障、新節(jié)點(diǎn)加入、主從節(jié)點(diǎn)變更信息、slot信息等等。常用的Gossip消息分為4種,分別是:ping、pong、meet、fail。

meet消息:通知新節(jié)點(diǎn)加入。消息發(fā)送者通知接收者加入到當(dāng)前集群,meet消息通信正常完成后,接收節(jié)點(diǎn)會(huì)加入到集群中并進(jìn)行周期性的ping、pong消息交換。ping消息:集群內(nèi)交換最頻繁的消息,集群內(nèi)每個(gè)節(jié)點(diǎn)每秒向多個(gè)其他節(jié)點(diǎn)發(fā)送ping消息,用于檢測(cè)節(jié)點(diǎn)是否在線和交換彼此狀態(tài)信息。pong消息:當(dāng)接收到ping、meet消息時(shí),作為響應(yīng)消息回復(fù)給發(fā)送方確認(rèn)消息正常通信。pong消息內(nèi)部封裝了自身狀態(tài)數(shù)據(jù)。節(jié)點(diǎn)也可以向集群內(nèi)廣播自身的pong消息來(lái)通知整個(gè)集群對(duì)自身狀態(tài)進(jìn)行更新。fail消息:當(dāng)節(jié)點(diǎn)判定集群內(nèi)另一個(gè)節(jié)點(diǎn)下線時(shí),會(huì)向集群內(nèi)廣播一個(gè)fail消息,其他節(jié)點(diǎn)接收到fail消息之后把對(duì)應(yīng)節(jié)點(diǎn)更新為下線狀態(tài)。

特別的,每個(gè)節(jié)點(diǎn)是通過(guò)集群總線(cluster bus)與其他的節(jié)點(diǎn)進(jìn)行通信的。通訊時(shí),使用特殊的端口號(hào),即對(duì)外服務(wù)端口號(hào)加10000。例如如果某個(gè)node的端口號(hào)是6379,那么它與其它nodes通信的端口號(hào)是 16379。nodes 之間的通信采用特殊的二進(jìn)制協(xié)議。

Hash Slot插槽算法

既然是分布式存儲(chǔ),Cluster集群使用的分布式算法是一致性Hash嘛?并不是,而是Hash Slot插槽算法。

插槽算法把整個(gè)數(shù)據(jù)庫(kù)被分為16384個(gè)slot(槽),每個(gè)進(jìn)入Redis的鍵值對(duì),根據(jù)key進(jìn)行散列,分配到這16384插槽中的一個(gè)。使用的哈希映射也比較簡(jiǎn)單,用CRC16算法計(jì)算出一個(gè)16 位的值,再對(duì)16384取模。數(shù)據(jù)庫(kù)中的每個(gè)鍵都屬于這16384個(gè)槽的其中一個(gè),集群中的每個(gè)節(jié)點(diǎn)都可以處理這16384個(gè)槽。

集群中的每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分的hash槽,比如當(dāng)前集群有A、B、C個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)上的哈希槽數(shù) =16384/3,那么就有:

節(jié)點(diǎn)A負(fù)責(zé)0~5460號(hào)哈希槽節(jié)點(diǎn)B負(fù)責(zé)5461~10922號(hào)哈希槽節(jié)點(diǎn)C負(fù)責(zé)10923~16383號(hào)哈希槽

Redis Cluster集群

Redis Cluster集群中,需要確保16384個(gè)槽對(duì)應(yīng)的node都正常工作,如果某個(gè)node出現(xiàn)故障,它負(fù)責(zé)的slot也會(huì)失效,整個(gè)集群將不能工作。

因此為了保證高可用,Cluster集群引入了主從復(fù)制,一個(gè)主節(jié)點(diǎn)對(duì)應(yīng)一個(gè)或者多個(gè)從節(jié)點(diǎn)。當(dāng)其它主節(jié)點(diǎn) ping 一個(gè)主節(jié)點(diǎn) A 時(shí),如果半數(shù)以上的主節(jié)點(diǎn)與 A 通信超時(shí),那么認(rèn)為主節(jié)點(diǎn) A 宕機(jī)了。如果主節(jié)點(diǎn)宕機(jī)時(shí),就會(huì)啟用從節(jié)點(diǎn)。

在Redis的每一個(gè)節(jié)點(diǎn)上,都有兩個(gè)玩意,一個(gè)是插槽(slot),它的取值范圍是0~16383。另外一個(gè)是cluster,可以理解為一個(gè)集群管理的插件。當(dāng)我們存取的key到達(dá)時(shí),Redis 會(huì)根據(jù)CRC16算法得出一個(gè)16 bit的值,然后把結(jié)果對(duì)16384取模。醬紫每個(gè)key都會(huì)對(duì)應(yīng)一個(gè)編號(hào)在 0~16383 之間的哈希槽,通過(guò)這個(gè)值,去找到對(duì)應(yīng)的插槽所對(duì)應(yīng)的節(jié)點(diǎn),然后直接自動(dòng)跳轉(zhuǎn)到這個(gè)對(duì)應(yīng)的節(jié)點(diǎn)上進(jìn)行存取操作。

雖然數(shù)據(jù)是分開存儲(chǔ)在不同節(jié)點(diǎn)上的,但是對(duì)客戶端來(lái)說(shuō),整個(gè)集群Cluster,被看做一個(gè)整體??蛻舳硕诉B接任意一個(gè)node,看起來(lái)跟操作單實(shí)例的Redis一樣。當(dāng)客戶端操作的key沒(méi)有被分配到正確的node節(jié)點(diǎn)時(shí),Redis會(huì)返回轉(zhuǎn)向指令,最后指向正確的node,這就有點(diǎn)像瀏覽器頁(yè)面的302 重定向跳轉(zhuǎn)。

故障轉(zhuǎn)移

Redis集群實(shí)現(xiàn)了高可用,當(dāng)集群內(nèi)節(jié)點(diǎn)出現(xiàn)故障時(shí),通過(guò)故障轉(zhuǎn)移,以保證集群正常對(duì)外提供服務(wù)。

redis集群通過(guò)ping/pong消息,實(shí)現(xiàn)故障發(fā)現(xiàn)。這個(gè)環(huán)境包括主觀下線和客觀下線。

主觀下線:某個(gè)節(jié)點(diǎn)認(rèn)為另一個(gè)節(jié)點(diǎn)不可用,即下線狀態(tài),這個(gè)狀態(tài)并不是最終的故障判定,只能代表一個(gè)節(jié)點(diǎn)的意見(jiàn),可能存在誤判情況。

主觀下線

客觀下線:指標(biāo)記一個(gè)節(jié)點(diǎn)真正的下線,集群內(nèi)多個(gè)節(jié)點(diǎn)都認(rèn)為該節(jié)點(diǎn)不可用,從而達(dá)成共識(shí)的結(jié)果。如果是持有槽的主節(jié)點(diǎn)故障,需要為該節(jié)點(diǎn)進(jìn)行故障轉(zhuǎn)移。

假如節(jié)點(diǎn)A標(biāo)記節(jié)點(diǎn)B為主觀下線,一段時(shí)間后,節(jié)點(diǎn)A通過(guò)消息把節(jié)點(diǎn)B的狀態(tài)發(fā)到其它節(jié)點(diǎn),當(dāng)節(jié)點(diǎn)C接受到消息并解析出消息體時(shí),如果發(fā)現(xiàn)節(jié)點(diǎn)B的pfail狀態(tài)時(shí),會(huì)觸發(fā)客觀下線流程;當(dāng)下線為主節(jié)點(diǎn)時(shí),此時(shí)Redis Cluster集群為統(tǒng)計(jì)持有槽的主節(jié)點(diǎn)投票,看投票數(shù)是否達(dá)到一半,當(dāng)下線報(bào)告統(tǒng)計(jì)數(shù)大于一半時(shí),被標(biāo)記為客觀下線狀態(tài)。

流程如下:

客觀下線

故障恢復(fù):故障發(fā)現(xiàn)后,如果下線節(jié)點(diǎn)的是主節(jié)點(diǎn),則需要在它的從節(jié)點(diǎn)中選一個(gè)替換它,以保證集群的高可用。流程如下:

資格檢查:檢查從節(jié)點(diǎn)是否具備替換故障主節(jié)點(diǎn)的條件。準(zhǔn)備選舉時(shí)間:資格檢查通過(guò)后,更新觸發(fā)故障選舉時(shí)間。發(fā)起選舉:到了故障選舉時(shí)間,進(jìn)行選舉。選舉投票:只有持有槽的主節(jié)點(diǎn)才有票,從節(jié)點(diǎn)收集到足夠的選票(大于一半),觸發(fā)替換主節(jié)點(diǎn)操作

10. 使用過(guò)Redis分布式鎖嘛?有哪些注意點(diǎn)呢?

分布式鎖,是控制分布式系統(tǒng)不同進(jìn)程共同訪問(wèn)共享資源的一種鎖的實(shí)現(xiàn)。秒殺下單、搶紅包等等業(yè)務(wù)場(chǎng)景,都需要用到分布式鎖,我們項(xiàng)目中經(jīng)常使用Redis作為分布式鎖。

選了Redis分布式鎖的幾種實(shí)現(xiàn)方法,大家來(lái)討論下,看有沒(méi)有啥問(wèn)題哈。

命令setnx + expire分開寫setnx + value值是過(guò)期時(shí)間set的擴(kuò)展命令(set ex px nx)set ex px nx + 校驗(yàn)唯一隨機(jī)值,再刪除

10.1 命令setnx + expire分開寫

if(jedis.setnx(key,lock_value) == 1){ //加鎖    expire(key,100); //設(shè)置過(guò)期時(shí)間    try {        do something  //業(yè)務(wù)請(qǐng)求    }catch(){  }  finally {       jedis.del(key); //釋放鎖    }}

如果執(zhí)行完setnx加鎖,正要執(zhí)行expire設(shè)置過(guò)期時(shí)間時(shí),進(jìn)程crash掉或者要重啟維護(hù)了,那這個(gè)鎖就“長(zhǎng)生不老”了,別的線程永遠(yuǎn)獲取不到鎖啦,所以分布式鎖不能這么實(shí)現(xiàn)。

10.2 setnx + value值是過(guò)期時(shí)間

long expires = System.currentTimeMillis() + expireTime; //系統(tǒng)時(shí)間+設(shè)置的過(guò)期時(shí)間String expiresStr = String.valueOf(expires); // 如果當(dāng)前鎖不存在,返回加鎖成功if (jedis.setnx(key, expiresStr) == 1) {        return true;} // 如果鎖已經(jīng)存在,獲取鎖的過(guò)期時(shí)間String currentValueStr = jedis.get(key); // 如果獲取到的過(guò)期時(shí)間,小于系統(tǒng)當(dāng)前時(shí)間,表示已經(jīng)過(guò)期if (currentValueStr != null && Long.parseLong(currentValueStr) < System.currentTimeMillis()) {      // 鎖已過(guò)期,獲取上一個(gè)鎖的過(guò)期時(shí)間,并設(shè)置現(xiàn)在鎖的過(guò)期時(shí)間(不了解redis的getSet命令的小伙伴,可以去官網(wǎng)看下哈)    String oldValueStr = jedis.getSet(key_resource_id, expiresStr);         if (oldValueStr != null && oldValueStr.equals(currentValueStr)) {         // 考慮多線程并發(fā)的情況,只有一個(gè)線程的設(shè)置值和當(dāng)前值相同,它才可以加鎖         return true;    }}         //其他情況,均返回加鎖失敗return false;}

筆者看過(guò)有開發(fā)小伙伴是這么實(shí)現(xiàn)分布式鎖的,但是這種方案也有這些缺點(diǎn)

過(guò)期時(shí)間是客戶端自己生成的,分布式環(huán)境下,每個(gè)客戶端的時(shí)間必須同步。沒(méi)有保存持有者的唯一標(biāo)識(shí),可能被別的客戶端釋放/解鎖。鎖過(guò)期的時(shí)候,并發(fā)多個(gè)客戶端同時(shí)請(qǐng)求過(guò)來(lái),都執(zhí)行了jedis.getSet(),最終只能有一個(gè)客戶端加鎖成功,但是該客戶端鎖的過(guò)期時(shí)間,可能被別的客戶端覆蓋。

10.3:set的擴(kuò)展命令(set ex px nx)(注意可能存在的問(wèn)題)

if(jedis.set(key, lock_value, "NX", "EX", 100s) == 1){ //加鎖    try {        do something  //業(yè)務(wù)處理    }catch(){  }  finally {       jedis.del(key); //釋放鎖    }}

這個(gè)方案可能存在這樣的問(wèn)題:

鎖過(guò)期釋放了,業(yè)務(wù)還沒(méi)執(zhí)行完。鎖被別的線程誤刪。

10.4 set ex px nx + 校驗(yàn)唯一隨機(jī)值,再刪除

if(jedis.set(key, uni_request_id, "NX", "EX", 100s) == 1){ //加鎖    try {        do something  //業(yè)務(wù)處理    }catch(){  }  finally {       //判斷是不是當(dāng)前線程加的鎖,是才釋放       if (uni_request_id.equals(jedis.get(key))) {        jedis.del(key); //釋放鎖        }    }}

在這里,判斷當(dāng)前線程加的鎖和釋放鎖是不是一個(gè)原子操作。如果調(diào)用jedis.del()釋放鎖的時(shí)候,可能這把鎖已經(jīng)不屬于當(dāng)前客戶端,會(huì)解除他人加的鎖

一般也是用lua腳本代替。lua腳本如下:

if redis.call("get",KEYS[1]) == ARGV[1] then    return redis.call("del",KEYS[1]) else   return 0end;

這種方式比較不錯(cuò)了,一般情況下,已經(jīng)可以使用這種實(shí)現(xiàn)方式。但是存在鎖過(guò)期釋放了,業(yè)務(wù)還沒(méi)執(zhí)行完的問(wèn)題(實(shí)際上,估算個(gè)業(yè)務(wù)處理的時(shí)間,一般沒(méi)啥問(wèn)題了)。

11. 使用過(guò)Redisson嘛?說(shuō)說(shuō)它的原理

分布式鎖可能存在鎖過(guò)期釋放,業(yè)務(wù)沒(méi)執(zhí)行完的問(wèn)題。有些小伙伴認(rèn)為,稍微把鎖過(guò)期時(shí)間設(shè)置長(zhǎng)一些就可以啦。其實(shí)我們?cè)O(shè)想一下,是否可以給獲得鎖的線程,開啟一個(gè)定時(shí)守護(hù)線程,每隔一段時(shí)間檢查鎖是否還存在,存在則對(duì)鎖的過(guò)期時(shí)間延長(zhǎng),防止鎖過(guò)期提前釋放。

當(dāng)前開源框架Redisson就解決了這個(gè)分布式鎖問(wèn)題。我們一起來(lái)看下Redisson底層原理是怎樣的吧:

只要線程一加鎖成功,就會(huì)啟動(dòng)一個(gè)watch dog看門狗,它是一個(gè)后臺(tái)線程,會(huì)每隔10秒檢查一下,如果線程1還持有鎖,那么就會(huì)不斷的延長(zhǎng)鎖key的生存時(shí)間。因此,Redisson就是使用Redisson解決了鎖過(guò)期釋放,業(yè)務(wù)沒(méi)執(zhí)行完問(wèn)題。

12. 什么是Redlock算法

Redis一般都是集群部署的,假設(shè)數(shù)據(jù)在主從同步過(guò)程,主節(jié)點(diǎn)掛了,Redis分布式鎖可能會(huì)有哪些問(wèn)題呢?一起來(lái)看些這個(gè)流程圖:

如果線程一在Redis的master節(jié)點(diǎn)上拿到了鎖,但是加鎖的key還沒(méi)同步到slave節(jié)點(diǎn)。恰好這時(shí),master節(jié)點(diǎn)發(fā)生故障,一個(gè)slave節(jié)點(diǎn)就會(huì)升級(jí)為master節(jié)點(diǎn)。線程二就可以獲取同個(gè)key的鎖啦,但線程一也已經(jīng)拿到鎖了,鎖的安全性就沒(méi)了。

為了解決這個(gè)問(wèn)題,Redis作者 antirez提出一種高級(jí)的分布式鎖算法:Redlock。Redlock核心思想是這樣的:

搞多個(gè)Redis master部署,以保證它們不會(huì)同時(shí)宕掉。并且這些master節(jié)點(diǎn)是完全相互獨(dú)立的,相互之間不存在數(shù)據(jù)同步。同時(shí),需要確保在這多個(gè)master實(shí)例上,是與在Redis單實(shí)例,使用相同方法來(lái)獲取和釋放鎖。

我們假設(shè)當(dāng)前有5個(gè)Redis master節(jié)點(diǎn),在5臺(tái)服務(wù)器上面運(yùn)行這些Redis實(shí)例。

RedLock的實(shí)現(xiàn)步驟:如下

1.獲取當(dāng)前時(shí)間,以毫秒為單位。2.按順序向5個(gè)master節(jié)點(diǎn)請(qǐng)求加鎖。客戶端設(shè)置網(wǎng)絡(luò)連接和響應(yīng)超時(shí)時(shí)間,并且超時(shí)時(shí)間要小于鎖的失效時(shí)間。(假設(shè)鎖自動(dòng)失效時(shí)間為10秒,則超時(shí)時(shí)間一般在5-50毫秒之間,我們就假設(shè)超時(shí)時(shí)間是50ms吧)。如果超時(shí),跳過(guò)該master節(jié)點(diǎn),盡快去嘗試下一個(gè)master節(jié)點(diǎn)。3.客戶端使用當(dāng)前時(shí)間減去開始獲取鎖時(shí)間(即步驟1記錄的時(shí)間),得到獲取鎖使用的時(shí)間。當(dāng)且僅當(dāng)超過(guò)一半(N/2+1,這里是5/2+1=3個(gè)節(jié)點(diǎn))的Redis master節(jié)點(diǎn)都獲得鎖,并且使用的時(shí)間小于鎖失效時(shí)間時(shí),鎖才算獲取成功。(如上圖,10s> 30ms+40ms+50ms+4m0s+50ms)如果取到了鎖,key的真正有效時(shí)間就變啦,需要減去獲取鎖所使用的時(shí)間。如果獲取鎖失敗(沒(méi)有在至少N/2+1個(gè)master實(shí)例取到鎖,有或者獲取鎖時(shí)間已經(jīng)超過(guò)了有效時(shí)間),客戶端要在所有的master節(jié)點(diǎn)上解鎖(即便有些master節(jié)點(diǎn)根本就沒(méi)有加鎖成功,也需要解鎖,以防止有些漏網(wǎng)之魚)。

簡(jiǎn)化下步驟就是:

按順序向5個(gè)master節(jié)點(diǎn)請(qǐng)求加鎖根據(jù)設(shè)置的超時(shí)時(shí)間來(lái)判斷,是不是要跳過(guò)該master節(jié)點(diǎn)。如果大于等于三個(gè)節(jié)點(diǎn)加鎖成功,并且使用的時(shí)間小于鎖的有效期,即可認(rèn)定加鎖成功啦。如果獲取鎖失敗,解鎖!

13. Redis的跳躍表

跳躍表

跳躍表是有序集合zset的底層實(shí)現(xiàn)之一跳躍表支持平均O(logN),最壞 O(N)復(fù)雜度的節(jié)點(diǎn)查找,還可以通過(guò)順序性操作批量處理節(jié)點(diǎn)。跳躍表實(shí)現(xiàn)由zskiplist和zskiplistNode兩個(gè)結(jié)構(gòu)組成,其中zskiplist用于保存跳躍表信息(如表頭節(jié)點(diǎn)、表尾節(jié)點(diǎn)、長(zhǎng)度),而zskiplistNode則用于表示跳躍表節(jié)點(diǎn)。跳躍表就是在鏈表的基礎(chǔ)上,增加多級(jí)索引提升查找效率。

14. MySQL與Redis 如何保證雙寫一致性

緩存延時(shí)雙刪刪除緩存重試機(jī)制讀取biglog異步刪除緩存

14.1 延時(shí)雙刪?

什么是延時(shí)雙刪呢?流程圖如下:

延時(shí)雙刪流程

先刪除緩存再更新數(shù)據(jù)庫(kù)休眠一會(huì)(比如1秒),再次刪除緩存。

這個(gè)休眠一會(huì),一般多久呢?都是1秒?

這個(gè)休眠時(shí)間 = 讀業(yè)務(wù)邏輯數(shù)據(jù)的耗時(shí) + 幾百毫秒。為了確保讀請(qǐng)求結(jié)束,寫請(qǐng)求可以刪除讀請(qǐng)求可能帶來(lái)的緩存臟數(shù)據(jù)。

這種方案還算可以,只有休眠那一會(huì)(比如就那1秒),可能有臟數(shù)據(jù),一般業(yè)務(wù)也會(huì)接受的。但是如果第二次刪除緩存失敗呢?緩存和數(shù)據(jù)庫(kù)的數(shù)據(jù)還是可能不一致,對(duì)吧?給Key設(shè)置一個(gè)自然的expire過(guò)期時(shí)間,讓它自動(dòng)過(guò)期怎樣?那業(yè)務(wù)要接受過(guò)期時(shí)間內(nèi),數(shù)據(jù)的不一致咯?還是有其他更佳方案呢?

14.2 刪除緩存重試機(jī)制

因?yàn)檠訒r(shí)雙刪可能會(huì)存在第二步的刪除緩存失敗,導(dǎo)致的數(shù)據(jù)不一致問(wèn)題??梢允褂眠@個(gè)方案優(yōu)化:刪除失敗就多刪除幾次呀,保證刪除緩存成功就可以了呀~ 所以可以引入刪除緩存重試機(jī)制

刪除緩存重試流程

寫請(qǐng)求更新數(shù)據(jù)庫(kù)緩存因?yàn)槟承┰颍瑒h除失敗把刪除失敗的key放到消息隊(duì)列消費(fèi)消息隊(duì)列的消息,獲取要?jiǎng)h除的key重試刪除緩存操作

14.3 讀取biglog異步刪除緩存

重試刪除緩存機(jī)制還可以吧,就是會(huì)造成好多業(yè)務(wù)代碼入侵。其實(shí),還可以這樣優(yōu)化:通過(guò)數(shù)據(jù)庫(kù)的binlog來(lái)異步淘汰key。

以mysql為例吧

可以使用阿里的canal將binlog日志采集發(fā)送到MQ隊(duì)列里面然后通過(guò)ACK機(jī)制確認(rèn)處理這條更新消息,刪除緩存,保證數(shù)據(jù)緩存一致性

15. 為什么Redis 6.0 之后改多線程呢?

Redis6.0之前,Redis在處理客戶端的請(qǐng)求時(shí),包括讀socket、解析、執(zhí)行、寫socket等都由一個(gè)順序串行的主線程處理,這就是所謂的“單線程”。Redis6.0之前為什么一直不使用多線程?使用Redis時(shí),幾乎不存在CPU成為瓶頸的情況, Redis主要受限于內(nèi)存和網(wǎng)絡(luò)。例如在一個(gè)普通的Linux系統(tǒng)上,Redis通過(guò)使用pipelining每秒可以處理100萬(wàn)個(gè)請(qǐng)求,所以如果應(yīng)用程序主要使用O(N)或O(log(N))的命令,它幾乎不會(huì)占用太多CPU。

redis使用多線程并非是完全摒棄單線程,redis還是使用單線程模型來(lái)處理客戶端的請(qǐng)求,只是使用多線程來(lái)處理數(shù)據(jù)的讀寫和協(xié)議解析,執(zhí)行命令還是使用單線程。

這樣做的目的是因?yàn)閞edis的性能瓶頸在于網(wǎng)絡(luò)IO而非CPU,使用多線程能提升IO讀寫的效率,從而整體提高redis的性能。

16. 聊聊Redis 事務(wù)機(jī)制

Redis通過(guò)MULTI、EXEC、WATCH等一組命令集合,來(lái)實(shí)現(xiàn)事務(wù)機(jī)制。事務(wù)支持一次執(zhí)行多個(gè)命令,一個(gè)事務(wù)中所有命令都會(huì)被序列化。在事務(wù)執(zhí)行過(guò)程,會(huì)按照順序串行化執(zhí)行隊(duì)列中的命令,其他客戶端提交的命令請(qǐng)求不會(huì)插入到事務(wù)執(zhí)行命令序列中。

簡(jiǎn)言之,Redis事務(wù)就是順序性、一次性、排他性的執(zhí)行一個(gè)隊(duì)列中的一系列命令。

Redis執(zhí)行事務(wù)的流程如下:

開始事務(wù)(MULTI)命令入隊(duì)執(zhí)行事務(wù)(EXEC)、撤銷事務(wù)(DISCARD )

17. Redis的Hash 沖突怎么辦

Redis 作為一個(gè)K-V的內(nèi)存數(shù)據(jù)庫(kù),它使用用一張全局的哈希來(lái)保存所有的鍵值對(duì)。這張哈希表,有多個(gè)哈希桶組成,哈希桶中的entry元素保存了key和value指針,其中*key指向了實(shí)際的鍵,*value指向了實(shí)際的值。

哈希表查找速率很快的,有點(diǎn)類似于Java中的HashMap,它讓我們?cè)贠(1) 的時(shí)間復(fù)雜度快速找到鍵值對(duì)。首先通過(guò)key計(jì)算哈希值,找到對(duì)應(yīng)的哈希桶位置,然后定位到entry,在entry找到對(duì)應(yīng)的數(shù)據(jù)。

什么是哈希沖突?

哈希沖突:通過(guò)不同的key,計(jì)算出一樣的哈希值,導(dǎo)致落在同一個(gè)哈希桶中。

Redis為了解決哈希沖突,采用了鏈?zhǔn)焦?/strong>。鏈?zhǔn)焦J侵竿粋€(gè)哈希桶中,多個(gè)元素用一個(gè)鏈表來(lái)保存,它們之間依次用指針連接。

有些讀者可能還會(huì)有疑問(wèn):哈希沖突鏈上的元素只能通過(guò)指針逐一查找再操作。當(dāng)往哈希表插入數(shù)據(jù)很多,沖突也會(huì)越多,沖突鏈表就會(huì)越長(zhǎng),那查詢效率就會(huì)降低了。

為了保持高效,Redis 會(huì)對(duì)哈希表做rehash操作,也就是增加哈希桶,減少?zèng)_突。為了rehash更高效,Redis還默認(rèn)使用了兩個(gè)全局哈希表,一個(gè)用于當(dāng)前使用,稱為主哈希表,一個(gè)用于擴(kuò)容,稱為備用哈希表。

18. 在生成 RDB期間,Redis 可以同時(shí)處理寫請(qǐng)求么?

可以的,Redis提供兩個(gè)指令生成RDB,分別是save和bgsave。

如果是save指令,會(huì)阻塞,因?yàn)槭侵骶€程執(zhí)行的。如果是bgsave指令,是fork一個(gè)子進(jìn)程來(lái)寫入RDB文件的,快照持久化完全交給子進(jìn)程來(lái)處理,父進(jìn)程則可以繼續(xù)處理客戶端的請(qǐng)求。

19. Redis底層,使用的什么協(xié)議?

RESP,英文全稱是Redis Serialization Protocol,它是專門為redis設(shè)計(jì)的一套序列化協(xié)議. 這個(gè)協(xié)議其實(shí)在redis的1.2版本時(shí)就已經(jīng)出現(xiàn)了,但是到了redis2.0才最終成為redis通訊協(xié)議的標(biāo)準(zhǔn)。

RESP主要有實(shí)現(xiàn)簡(jiǎn)單、解析速度快、可讀性好等優(yōu)點(diǎn)。

20. 布隆過(guò)濾器

應(yīng)對(duì)緩存穿透問(wèn)題,我們可以使用布隆過(guò)濾器。布隆過(guò)濾器是什么呢?

布隆過(guò)濾器是一種占用空間很小的數(shù)據(jù)結(jié)構(gòu),它由一個(gè)很長(zhǎng)的二進(jìn)制向量和一組Hash映射函數(shù)組成,它用于檢索一個(gè)元素是否在一個(gè)集合中,空間效率和查詢時(shí)間都比一般的算法要好的多,缺點(diǎn)是有一定的誤識(shí)別率和刪除困難。

布隆過(guò)濾器原理是?假設(shè)我們有個(gè)集合A,A中有n個(gè)元素。利用k個(gè)哈希散列函數(shù),將A中的每個(gè)元素映射到一個(gè)長(zhǎng)度為a位的數(shù)組B中的不同位置上,這些位置上的二進(jìn)制數(shù)均設(shè)置為1。如果待檢查的元素,經(jīng)過(guò)這k個(gè)哈希散列函數(shù)的映射后,發(fā)現(xiàn)其k個(gè)位置上的二進(jìn)制數(shù)全部為1,這個(gè)元素很可能屬于集合A,反之,一定不屬于集合A。

來(lái)看個(gè)簡(jiǎn)單例子吧,假設(shè)集合A有3個(gè)元素,分別為{d1,d2,d3}。有1個(gè)哈希函數(shù),為Hash1?,F(xiàn)在將A的每個(gè)元素映射到長(zhǎng)度為16位數(shù)組B。

我們現(xiàn)在把d1映射過(guò)來(lái),假設(shè)Hash1(d1)= 2,我們就把數(shù)組B中,下標(biāo)為2的格子改成1,如下:

我們現(xiàn)在把d2也映射過(guò)來(lái),假設(shè)Hash1(d2)= 5,我們把數(shù)組B中,下標(biāo)為5的格子也改成1,如下:

接著我們把d3也映射過(guò)來(lái),假設(shè)Hash1(d3)也等于 2,它也是把下標(biāo)為2的格子標(biāo)1:

因此,我們要確認(rèn)一個(gè)元素dn是否在集合A里,我們只要算出Hash1(dn)得到的索引下標(biāo),只要是0,那就表示這個(gè)元素不在集合A,如果索引下標(biāo)是1呢?那該元素可能是A中的某一個(gè)元素。因?yàn)槟憧?,d1和d3得到的下標(biāo)值,都可能是1,還可能是其他別的數(shù)映射的,布隆過(guò)濾器是存在這個(gè)缺點(diǎn)的:會(huì)存在hash碰撞導(dǎo)致的假陽(yáng)性,判斷存在誤差。

如何減少這種誤差呢?

搞多幾個(gè)哈希函數(shù)映射,降低哈希碰撞的概率同時(shí)增加B數(shù)組的bit長(zhǎng)度,可以增大hash函數(shù)生成的數(shù)據(jù)的范圍,也可以降低哈希碰撞的概率

我們又增加一個(gè)Hash2哈希映射函數(shù),假設(shè)Hash2(d1)=6,Hash2(d3)=8,它倆不就不沖突了嘛,如下:

即使存在誤差,我們可以發(fā)現(xiàn),布隆過(guò)濾器并沒(méi)有存放完整的數(shù)據(jù),它只是運(yùn)用一系列哈希映射函數(shù)計(jì)算出位置,然后填充二進(jìn)制向量。如果數(shù)量很大的話,布隆過(guò)濾器通過(guò)極少的錯(cuò)誤率,換取了存儲(chǔ)空間的極大節(jié)省,還是挺劃算的。

目前布隆過(guò)濾器已經(jīng)有相應(yīng)實(shí)現(xiàn)的開源類庫(kù)啦,如Google的Guava類庫(kù),Twitter的 Algebird 類庫(kù),信手拈來(lái)即可,或者基于Redis自帶的Bitmaps自行實(shí)現(xiàn)設(shè)計(jì)也是可以的。

更多編程相關(guān)知識(shí),請(qǐng)?jiān)L問(wèn):編程視頻??!

以上就是20個(gè)Redis經(jīng)典面試題匯總及答案(分享)的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

關(guān)鍵詞:

曰曰摸夜夜添av老司机蜜桃视频| 99只有精品在线观看| 熟妇 人妻 中文| 亚洲成人激情自拍| 久久精彩视频免费看| 国产欧美日韩综合区| 国产又黑又粗又黄又大| 日韩在线精品亚洲| 国产亚洲精品av成人无删减| 久久精品国产亚洲av五区| 中文字幕原创国产ol| 欧美日韩操操操操操| 人妻av乱片av出轨| 久久亚洲欧美日本精品品| 黄色国产一区在线观看| 91中文字幕亚洲资源| 熟女阿b老熟女一区| 欧美一区二区三区免费的网址| 久久久久久 九色av| 激情内射一区二区三区| 久久成人av一区二区| 国产99丝袜诱惑| 男人天堂手机在线2014| a级黄色免费在线观看| 男人操女人逼的免费视频| 亚洲中文字幕乱码七糟| 日本成年中文字幕| 九色视频蝌蚪在线免费观看| 欧美日韩在线视频在线| 色视频在线一区二区三区| 天天色天天做天天爽| 欧美一区二区高清视频在线观看| 一区二区三区精品精品| 一区二区精品视频乱码| 亚洲人妻丝袜在线观看| 成人av电影网站日韩| 精品久久久久久久久99| 久久久久久人妻免费视频o| 手机av永久免费| 日本熟妇vvw日本人妻| 久久久精品国产sm调教| 日韩亚洲欧美在线第一| 国产精品18久久久| 国产熟女啪啪精品一区二区三区| 日本女优与黑人特级| 国产91熟女被艹嗷嗷叫| 人妻少妇精品视频一区97| 日韩免费视频播放| 91老司机福利在线| 操美女姐姐啊啊啊| 蜜桃视频一区二区免费| 九九在线观看99视频| 国产自拍各种精品视频| 国产日韩欧美亚洲91| 91中文字幕综合| 免费日韩av在线免费观看| 日韩亚洲欧美高清视频| txtv在线视频| 丰满人妻综合一区二区三区| 亚洲一区乱码在线观看| 天天操天天射天天干天天爱| 蜜臀精品人妻社区一区| 欧美日韩在线视频三区| 国产探花熟女av在线| robolox涩涩的视频免费看| 日韩美女毛片午夜剧场| 1024在线国产视频| 40路熟女人妻aⅴ一区二区三区| 一本大道久久a久久综合精品| 亚洲va亚洲va欧洲va| 国产精品黄视频免费看| av影音在线不卡| 欧美一区二区三区四区在线 | 91诱惑极品美女| 全网小视频资源免费在线播放| 好看的av网站中文字幕| 玩弄超骚少妇一区二区三区| 激情啊啊啊啊啊啊啊| 美女视频黄免费的亚洲男人天堂| 亚洲欧美日韩一区另类| 免费福利精品视频| 日韩一区二区三区四区不卡网| 老熟妇高潮一区二区三| 婷婷丁香亚洲五月天| 4438x亚洲最大成人网| 人妻色图欧美日韩| 尤物在线观看视频av| 高清不卡二卡三卡四卡无卡| 欧美精品mv在线播放观看| 中文字幕久久久一区久久久青春| 久久午夜一成年人的视频| av中文字幕在线观看中文| 中文字幕av最新更新| 婷婷综合亚洲精品久久| 日韩欧美卡一卡二卡三| av人妻精品一区二区三区| 亚洲av成人波多野一区二区| 久久66热人妻偷产精品9| av最新在线中文天堂| 国产av专区网站大全| 欧美一区三区三区高中清不卡| 丝袜人妻诱惑在线| 日本中文字幕在线观看免费| 超碰人人97青青草| 亚洲熟女午夜毛片av毛片| 亚洲蜜桃视频在线| 精品麻豆久久久久久| 国产激情怍爱视频在线| 国产 日韩 精品在线观看 | 国产又粗又猛又黄又爽的视频| 午夜精品久久久久久久久久久久久| 国产欧美1区2区3区| 91九色porn在线| 19国产精品麻豆| 久久人妻精品系列蜜桃| 国产福利在线观看91| 中文av字幕在线观看一区| 免费看的日本一级片| 日本少妇搞b视频| 国产中文在线二区三区免| 91影院免费破解污在线观看| av日韩在线第一页亚洲第一时间| 欧美精品在线观看网址| 日韩av一区二区三区人妻| 亚洲婷婷精品av久久蜜桃久久| 麻豆影视精品在线观看| 最新国产激情视频| 日韩丝袜人妻中文字幕| 91丨九色丨老熟女一区| 在线观看剧情国产| 日韩av网站 狠狠| 岛国 粉嫩 懂色 av| 丰满熟女少妇午夜福利视频| 日本少妇激情视频| 大量老熟女偷拍视频老女人| 中文字幕色偷偷人妻久| 国产av熟女一区二区三区四季| 黑丝少妇的诱惑在线观看| 日韩av另类在线| 尹人香蕉久久99天天拍久女久| 99re视频免费热线观看| 青青视频在线播放欧免费| 亚洲av极品在线| 成人午夜免费在线视频网站| 亚洲第一蜜桃av| 午夜精品一区二区三区蜜桃| 99久久草精品视频| 人妻久久久精品69系列| 亚洲欧美熟女一区二区三区| 国产一区二区三区自拍欧美| 婷婷最新精品在线| 久久久久久久久久久福利视频| 天堂网最新中文字幕| 国产熟女露脸自拍| 91高清在线观看一区| 亚洲av成人波多野一区二区| 91高清视频在线一区| 国产91在线播放网址| 日本精品九九久久精品一本| 91精品在线视频 九色| 精品在线欧美日韩| 日韩av在线1区| 国产成人av网站网址| 日本在线高清视频| 久久精品人人做人人综合| 精品日韩免费的网站| 亚洲男人一区二区三区| 中文字幕色偷偷人妻久| 在线欧美日韩观看一区二区| 欧美精产国品一二三www| 天天操天天射天天干天天爱| 91精品久久久久含羞草| 52av成人久久国产一区| 中文人妻精品一区二区三区四区| 日韩 欧美 国产 丝袜| 农村人妻一区二区三区| 日韩无人区一卡2卡3卡4卡 | 国产精品久久久久久久久av | 九九在线观看99视频| 中文字幕成人乱码不卡视频| 岛国精品少妇一区二区三区| 熟女人妻久久中文字幕| 午夜精品视频在线观看视频| 久久久96人妻精品蜜桃hd| 欧美男女啪啪真人视频| 在线中文字幕超碰| 免费高清理伦片在线播放视频 | 亚洲欧美精品卡一卡二卡三| av网站大全在线免费观看| 那个小区的人妻在线观看| 欧美日韩三级在线综合| 91精品国产麻豆自产在线| 国产av 在线视频| 亚洲一区成人动漫在线观看| weyvv5国产成人精品的视频| 久久av一区二区三区neco| 亚洲中文自拍偷拍| 99久久九九社区精品| 久久热中文在线观看| 亚洲 欧美 中文字幕第一页| 亚洲国产自拍在线| 天天干天天操2020| 色综合久久中文综合久久| 99国产精品视频久久久久| 欧美日韩在线视频在线| 麻豆剧传媒精品国产av| 人妻超碰在线观看| 久久国产精品波多野吉衣av| 欧美乱视频一区二区三区| 美日韩成人一级免费黄色片| 91精品又粗又硬又爽少妇的视频 | 黄色理论片在线观看| 日本久久精品三级视频| 青青青草草草久草| 熟女av高清一区二区三区| 日韩av一区二区三区人妻 | 国产在线视频观看| 亚洲国产自拍在线| 国产99精品视频免费观看| 美女福利视频午夜| 黄色国产一区在线观看| 中文字幕丝袜美腿诱惑色在线观看| 40路熟女人妻aⅴ一区二区三区| 日韩情色欧美在线| 亚洲中文自拍偷拍| 国产精品黑丝美腿美臀| 中文字幕 日本一区二区| 4438x亚洲最大成人网| 久久久久久久久久久久少妇| 超碰大香蕉在线一人| 国产日韩欧美三级在线| 在线中文字幕国产精品| 99国产小视频在线播放| 中文字幕 日韩观看视频| 久久久久亚洲av噜噜avav| 国产精品v欧美精品v日韩| 日韩一区二区三区五十路人妻| 91极速版免费视频| 成人校园春色小说| 精品人妻一区二区三区四在五区| 91色综合综合热五月激情| 91精品综合久久久久精品| 99热精品夜夜爽伊人| 亚洲伊人久久一区二区综合| 婷婷亚洲综合久久| 免费日韩av在线免费观看| 日韩av网站 狠狠| 丁香六月久久综合网| 国产熟女啪啪精品一区二区三区| 亚洲av乱码一区二区三区蜜臀| 日韩美精品美女毛片| 91极速版免费视频| 亚洲成人人妻一区| 日本欧美三级高潮受不了| 国产精品va一级二级三级| 国产中文字幕在线第一页| 久久精品国产亚洲av麻豆软| 日韩av在线大片| 亚洲欧美熟女一区二区三区| 啪啪国产视频自拍| 日韩av在线大片| 色哟哟成年人网站| 午夜精品久久久久久久91蜜桃臀| 日韩精品色图在线| av网站免费在线看| 在线视频97观看| 超碰人人干人人射人人| 中文在线字幕丝袜美腿| 91欧美日韩在线观看视频| 亚洲成人天堂久久| 中文字幕制服丝袜在线电影| 日韩免费高清av电影| 日韩精品欧美嫩草久久99| 99在这里只有精品2| 欧美精品视频一二三| 伊人网综合高清在线播放| 亚洲天堂成人在线观看| 亚洲av少妇高潮150p| 在线 人妻 视频| 国产亚洲精品首页在线播放| 日韩午夜福利视频合集| 熟女人妻中文字幕一三区| 岛国精品少妇一区二区三区| 精品女厕盗摄一区二区三区| 日本在线高清视频| 午夜精品尤物麻豆一区二区无限| 欧美经典一区二区三区| 超碰97在线在线观看| 午夜影院成人av| 国产成人AV无码一二三区| 四虎av在线观看| 国产亚洲自拍色图| 三级有码在线观看| 香蕉成人在线91| 亚洲av极品在线| 粉嫩一区二区性色粉嫩av| 大奶子av在线播放| 国产精品综合不卡| 欧美精品国产字幕| 日本伊人网在线播放| 国产一区免费在线视频观看| 亚洲av熟妇在线| 亚洲欧洲av天堂| 亚洲精品9999久久久久| 麻豆精选国产在线av观看| 亚洲国产精品va在线观看www| 亚洲人妻自拍偷拍| 黄色一级片人和狗| 亚洲第一页色自拍| 日本男人操日本女人视频| 成人国内精品久久久久一区| 最新精品国产精品1| 日韩毛片短视频在线播放| 午夜影院成人av| 中文字幕99精品| 久久国产av人人做人人爽| 日韩性在线观看视频| 日韩欧美国产12区| 日韩精品中文字幕熟女少妇| 国产av 一区二区三区| 91福利共享久久精品| 高清视频区二区三区| 亚洲第一页色自拍| 久久久亚洲成人天堂| 亚洲av极品在线| 久久久精品国产sm调教| 91影院免费破解污在线观看| 婷婷六月亚洲综合| 91网曝视频在线播放| 国产欧美日韩成人一区二区| 超碰免费在线不卡不卡不卡| 色av色婷婷91人久久久| 九九热视频这里只有精品在线观看| 欧美日韩在线在线观看视频| 亚洲美女巨乳在线| 国产日韩欧美亚洲91| 亚洲一区两区三区四区| 成人影院久久久久久久久一区| 国产91在线播放小黄鸭| 婷婷在线www.| 国产黑色丝袜在线| 亚洲 欧美 另类 丝袜| 直接看的av天堂| 日韩精品免费在线观看视频| 精品高清亚洲国产欧美| 日韩熟女一级片在线观看| www.日产国产欧美com| 国产99视频精品免费观看9| 亚洲欧洲av天堂| 4438x中文字幕| 91国产免费视频国产免费| 成人亚洲自拍一区| 欧美中文字幕精品在线观看| 天堂av中文字幕乱码免费看| 天天影视色最新色| 日本久久精品三级视频| www国产精品人妻一二三区| 熟妇在线精品视频网站| 国产自拍偷拍日韩精品| 久久成人亚洲欧美电影| 99亚洲国产精品久久久| 亚洲视频区1000| 清纯唯美亚洲五月激情综合| 日韩三级中文字幕在线播放| 一级片一级黄色片| 国产一区二区在线播| 动漫天堂同人av| 久久久最新视频免费| 蜜桃一区二区三区在线观看视| 在线视频青青青草| 日韩色黄电影在线观看| 久草视频播放在线| 亚洲av日韩av成人在线| 18成人黄色在线观看| 自拍偷拍亚洲天堂精品| 日韩不卡在线av| 日韩乱码99在线视频| 国产婷婷精品av在线| 一区二区三区亚洲社区| 蜜桃av一区二区三区视频| 色在线观看aaa| 91一区二区久久国产乱| 国产91在线播放网址| 精品久久久久久久久99| 亚洲美女巨乳在线| 色视频在线一区二区三区| 内射一对幼嫩无毛妹| 成人理论在线播放| 在线 亚洲 精品| 在线播放日韩精品av| 日韩精品视频在线视频看看| 美国av韩国av国产av| 亚洲 成人 av 在线| 亚洲一本一道一区二区三区| 无套内射处女在线观看 | 伊人久久大香线蕉综合啪小说| 国产乱老熟视频乱老熟女国| 狠狠婷婷久久精品一区二区| 国产精品999动漫| 日韩在线一区二区三区精品| 高潮喷水在线欧美| 高清一区二区三区免费| 成人校园春色小说| 欧美日韩视频高清一区二区| 中文字幕av人妻网| 91在线精品在线| 青青青青青青青青青青青操操| 免费一区二区三区四区av| 最新国产激情视频| 国产麻豆精品成人av| 日韩不卡视频一区| 久久视频在线观看| 国产免费播放一区| 精品久久久久久久久字幕| 成人鲁啊鲁是男人的天堂| 日本大香蕉怡红院| 三级有码在线观看| 日日操夜夜操天天高潮| 一级片一级黄色片| 蜜桃久久久久久欧美| 偷拍亚洲另类av| 日本在线高清视频| 中文字幕亚洲素人| 色哟哟在线观看永久免费视频 | 精品久久在精品久久| 免费a级黄片在线观看| 激情av一区二区三| 国产高清av网址免费| 丰满熟女浓毛大hd| 97人妻免费视频精品| 日韩欧美亚州综合| 精品毛片av一区二区三区| 丝袜诱惑亚洲一区| 欧美熟妇久久久久久久久久久| 久久伊人中文字幕有码| 99热6在线观看高清完整版| 人妻中文字幕精品| 日本黄色操碌缬巴| 萌白的所有视频在线观看| 国产老熟露脸对白| 9999久久久久久久久久久| 国产精品黄视频免费看| 久久久久久亚洲精品中文字幕| 色哟哟网站日韩精品| 福利深夜在线观看| 亚洲av中文有码| 97国产一区二区三区| 精品久久久久久五月天| 日韩av一线二线三线在线观看| 乱码欧美中文字幕日韩| 欧美裸体视频一区二区三区| 亚洲在线久久伊人| 国产激情啪啪小视频| 成人短视频在线版| 日韩特级片中文字幕| 美女色网站在线不卡粉嫩av| 高清在线 中文字幕| 一级国产黄片国语对白| 国产高跟丝袜av| 中文字幕乱码一区久久| 日本伊人网在线播放| 超碰97在线在线观看| 91精品国产一二三产区区别在哪| 激情欧美在线激情| 黄色片网站国产精品| 日韩毛片短视频在线播放| 亚洲av综合色一区二区三区| 午夜天堂久久电影| 日韩熟女在线视频| 中文字幕久久久一区久久久青春| 国产美女蜜臀av怡红| 日本高清久久久久久久| 精品女厕盗摄一区二区三区| 中文字幕不卡一区二区三区| 熟女乱一区二区三区四区| 精品熟女人妻在线视频| 欧美性猛交xxxx免费看久久| 中文字幕av三级免费| 九九热九九色九九操| 日韩亚洲欧美高清视频| 40路熟女人妻aⅴ一区二区三区| 亚洲美女精品中文字幕| 亚洲小视频在线观看免费播放| 国产美女一区二区三区五区| 内射一对幼嫩无毛妹| 黄色大片长久网站| 狠狠操狠狠干狠狠操狠狠干| 国产精品视频福利在线| 国产夫妻啪啪自拍| 欧洲美女福利一区二区三区| 欧美国产精品久久九九| 成人在线电影一区二区| 一色桃子av人妻中文字幕| 青青青青久久精品国产首| 亚洲不卡免费在线| 日韩精品色图在线| 国产成人av网站网址| 91网曝视频在线播放| 免费黄免费在线观看| 中文字幕 日本一区二区| 红桃在线观看av| 国产懂色av熟女丝袜精品| yellow中文字幕视频| av在线亚洲最大的| 午夜av网站观看| 亚洲激情欧美伦理| 97国产三级精品在线| 日韩一二三区视频免费观看| 国产精品久久久久久入口| 狠狠挺进h嗯啊第一次视频| 999热视频精品在线| 情趣视频在线国产| 操美女姐姐啊啊啊| 欧美激情亚洲激情亚洲| 日韩女人小便视频| 欧美精品久久久久免费看| 丁香激情久久久久伊人精品| 亚洲精品91av在线| 日韩中文字幕激情在线| 九九九九九九久久久久久久伊人| 高清在线 中文字幕| 小明看看成人在线免费视频| 色香蕉av一区二区| 亚洲av变态另类| 成人理论在线播放| 在线播放偷拍视频| 欧美一区二区三区综合网| 亚洲岛国av在线| 国产精品色约约免费视频| 婷婷国产人妻一区二区三区| 最新亚洲国产高清激情| 亚洲444kkkk在线观看| 日韩欧美卡一卡二卡三| 新老鸭窝在线视频| 亚洲欧美精彩视频| 小明看看成人播放平台| 欧美极品激情一区二区三区| 欧美情色伦理在线| 日本道久久综合久久| 国产精品久久国产丁香花| 91福利共享久久精品| 国产精品欧美久久久无广告| 日韩欧美在线情色| 911美女片黄在线观看| 久久精品熟女亚洲av麻豆永永| 97久久久免费观看| 蜜桃成人永久免费av大| 国产精品久久久久久久久久精爆| 99熟女精品一区二区三区| 丝袜人妻诱惑在线| 日韩在线成人中文字幕| 亚洲熟女午夜毛片av毛片| 精品国产伦一区二区三区竹菊| 农村人妻一区二区三区| 国产人妻精品中文字幕| 免费黄免费在线观看| 亚洲天堂成人网入口| 一区二区三区内射少妇| 国产九色91在线视频| 顶级少妇一区二区三区| 91亚洲精品资源| 精品人妻少妇一区二区三区_| 91蜜桃视频精品| 先锋资源中文字幕一区| 中国精品久久久久久| 精品人妻熟女一区| 国产亚洲自拍色图| 午夜精品久久久内射| 52av成人久久国产一区| 中文字幕成人乱码不卡视频| 疯狂人妻丝袜系列| 日韩一二三区视频免费观看| 国产精品久久久久免费播放| 另类视频免费播放观看| 亚洲亚洲亚洲天堂天堂天堂| www.午夜av.| 99久久九九社区精品| 久久精品苍井空精品久久| 人妻一区两区三区四区| 97狠狠狠狠狠狠狠| av天堂中文字幕尤物| 91精品伊人久久久大香线蕉91| 91熟女国产老熟女| 国产精品人妻在线| 亚洲熟女少妇一区二区三区在线| 日本爱片在线观看| 在线播放一区日韩| 欧美日韩av一区=区三区| www国产精品人妻一二三区| 国产极品中文字幕在线| 国产亚洲一区二区在线观看视频| 婷婷丁香亚洲五月天| 人人妻人人]人人澡欧美一区| 亚洲av色图网站| 日韩乱码99在线视频| 亚洲成人天堂久久| 亚洲精品久久久久久蜜臀| 91红桃在线观看| 中文字幕中文字幕中文字幕| 亚洲在线久久伊人| 国产又粗又猛又黄又爽的视频| 手机在线日韩av| 国产精品岛国久久久久久| 99日韩欧美在线观看| aise美乳诱惑| 日韩在线观看午夜精品福利| 日韩熟女一级片在线观看| 亚洲欧美日韩一区另类| 日韩 欧美 中文在线| 成人精品永久免费观看| 蜜臀av在线素人人妻播放一区| 亚洲最大熟妇人妻| 麻豆成人性电影在线观看视频| 亚洲国产精品久久久久麻| 亚洲婷婷91中文字幕| 超碰视频公开免费观看| 日韩午夜精品短视频| 欧美三级中文字幕在线| 亚洲日本熟妇高清| 天天影视色最新色| 国产av日韩av| 国产91熟女高潮一区二区| 老司机av在线视频| 黄色污污污免费在线观看网站| 超碰97在线在线观看| 精品久久在精品久久| 婷婷综合亚洲精品久久| 日韩国产欧美激情在线视频| 精品在线激情av| 黄视频在线观看免费观看| 久久日韩精品中文字幕人妻熟女| 亚洲国产精品资源在线| 美日韩成人一级免费黄色片| 久久久久久久久久一级| 久久久久日本精品少妇| 超碰视频公开免费观看| 亚洲精品成人日本| 欧美一区二区三区四区在线 | 久久婷婷视频一二三区| 国产伦理精品av| 大香蕉av在线免费观看| 国产亚洲精品久久久久久女人| 欧美精品视频一二三| 成人午夜毛片在线| 伊人网在线播放av电影| 玩弄超骚少妇一区二区三区| www.狠狠视频.com| 日本妇女高潮视频| 草原免费视频亚洲| 免费看插b视频网站| 亚洲最大综合久久网成人| 久久久久久亚洲精品中文字幕| 精品一区二区三区 蜜臀av| 在线亚洲无av码| 伦理片一区二区三区在线观看| 99re8精品视频在线播放| 日韩乱码99在线视频| 日老熟女逼网视频导航| 亚洲日产av一区二区在线| 国产又粗又硬又爽又黄的网站| 国产精品欧美日韩在线观看一区| 久久ye九九视频免费观看| 五月婷婷六月在线观看| 日本女优与黑人特级| 人妻av中文字幕网| 91九色精品福利视频| 午夜美女诱惑福利| 午夜激情福利大片| 国产网址视频在线观看| 超碰超碰超碰在线免费观看| 日韩人妻中文字幕视频| 久久九九免费精品国产| 国产一区二区三区香蕉| 国产又粗又猛又黄又爽的视频| 国产欧美日韩综合区| 经典国产91精品福利网站在线看 | 亚洲美女高潮久久| 曰曰摸夜夜添av老司机蜜桃视频| 国产成人看片在线| robolox涩涩的视频免费看| 成人黄色性生活一级片| 日韩伦理免费大片| 亚洲啪啪啪一区二区三区| 国产精品久久18禁| 亚洲欧美精品卡一卡二卡三| 红桃在线观看av| 91精品激情在线视频| 国产精品综合久久桃花| 熟女探花88av| 国产美女啪啪av| 国产又粗又硬又爽又黄的网站| 日本黄色日比视频| 婷婷激情中文字幕组| 欧美日韩视频高清一区二区| 精品av综合一区二区三区| 中文字幕精品人妻在线二三区| 男人天堂手机在线2014| 天堂网最新中文字幕| 一区二区三区av资源网| 久久午夜亚洲精品网站| 一区三区四区精品| 中文人妻熟妇精品乱又伧不卡| 青青草视频 成人| 人妻熟妇av在线| 久久久久久久久久久久国| 一区二区三区亚洲社区| 亚洲毛片av在线| 欧美三级在线免费观看| 黄色一级成人大片| 国产蜜桃av在线观看| 天天操天天射天天干天天爱| 伊人五月婷婷激情网| 人妻人伦精品国产| 精品888欧美久久久| 啄木乌av一区二区三区| 一区二区三区四区av| 国产精品黑丝美腿美臀| 人妻素人中出一区二区三区| 美女人妻素人在线丝袜| 国产一级aa特黄大片| 亚洲一区二区 偷拍| www.亚洲综合色| 老熟妇淫老妇女av| robolox涩涩的视频免费看| 19国产精品麻豆| 国产三级精品久久久| 国产99精品久久久久久久| 国产欧美日韩成人一区二区| 国产 欧美?亚洲?日韩视频| 91精品人妻呻吟| 亚洲精品免费综合| 99视频这里都是精品6| 日韩特级片中文字幕| 国产熟女av一区| 午夜色网av在线| 黄色强奸片免费观看视频免费看| 日韩午夜福利视频合集 | 97精品人妻一区二区三区竹菊 | 亚洲天堂黄色网络| 欧美国产日韩美女主播视频一区 | 亚洲美女巨乳在线| 黄色国产一区在线观看| 久久久成人性生活小视| 1024你懂的日韩欧美人妻| 国产精品欧美日韩在线观看一区| 超碰免费在线不卡不卡不卡| 亚洲国产精品久久久久麻| 国产97在线视频| 19国产精品麻豆| 97视频在线播放| 欧美性受xxxx人妻xyv狂| 人妻字幕av一区二区三区| 日韩免费高清av电影| 黄页av在线观看| 中文字幕日韩人妻视频一区| 成人黄色av在线播放| 久久久午夜精品日本| 午夜精品久久久内射| 少妇被插激情视频| 久久久综合精品一区二区三区欧美| 日韩av在线1区| 日韩欧美特级一级二级| 免费丝袜av二区| 国产欧美成人精品久久| 色尼玛亚洲综合网| 久久网99精品国产亚洲av| 国产懂色av熟女丝袜精品| 玖玖在线视频精品| 亚洲av男人的天堂久久精品| 精品日韩免费的网站| 超碰在线97国产久中文| 天天干天天日天天操天天爽| 蜜臀av国内精品久久久久久| 人人妻人人澡人人爽久久av香蕉| 日韩 欧美 丝袜| 久久国产这里只精品免费| 国家五a级久久久久久黄片| 中文字幕av久久爽伊人一级| 日韩欧美中文字幕第一页 | 日韩欧美在线观看二区| 麻豆精选在线播放视频| 91丝袜美腿美女诱惑| 99永久免费精品视频| 免费观看日韩黄色大片| 果冻亚洲国产成人av播| 亚洲一卡2卡三卡| 国产在线av小视频| 日本中文字幕诱惑| 狠狠干狠狠操少妇| 国产熟女啪啪精品一区二区三区| 亚洲综合精品伊人久久| 亚洲最大熟妇人妻| 日韩欧美一区黄色| 国产精品99久久久久久有的能看| 经典国产91精品福利网站在线看| 女人的天堂av网| 精品国产91久久久久久久| 久久综合亚洲狠狠伊人| 亚洲综合精品伊人久久| 欧美一级二级三级久久| 午夜在线视频播放网站| 黄页av在线观看| 一区三区精品视频在线观看| 中文字幕精品久久久| 日韩国产成人一区| 91国产免费视频国产免费| 偷拍99免费视频| 91高清在线观看一区| 高潮喷水在线欧美| 欧美精品在线观看网址| 99视频在线国产观看| 免费黄免费在线观看| 麻豆精品国产传媒美女网站| 人人妻人人澡人人爽人人精品直播| 国产av中文字幕中出| 肥屁股高潮迭起一区二区的视频| 中国特黄免费大片| 日日操夜夜操天天高潮| 亚洲av软件在线| 91精品翘臀久久久| 日韩av天堂黄色片| 色偷偷888欧美精品| 人妻丰满熟妇av一区二区| 欧美与黑人午夜交久久久| 丝袜美腿亚洲一区二区三区三州| 日韩深喉口爆吞精| av伊人网好吊妞| www 超碰97在线观看com| 999欧美一区二区三区| 都市激情 校园春色 中文字幕 | 中文字幕不卡一区二区三区| 亚洲美女高潮久久| 日本黄色操碌缬巴| 亚洲视频亚洲视频| 中文字幕中文字幕中文字幕 | 国产69精品久久久/| 午夜精品一区二区三区蜜桃| 国产人妻av在线看| 亚洲视频精品一区二区三区四区| 丰满熟女少妇午夜福利视频| 在线另类播放蜜桃| 人人妻人人爽97| 丰满熟女浓毛大hd| 亚洲美女巨乳在线| 亚洲小视频在线观看免费播放 | 色尼玛亚洲综合网| 91高清在线观看一区| 自拍另类亚洲欧美| 伊人久久中文字幕av| 99熟女精品一区二区三区| 青青草久久久久久久久久| 偷拍另类激情小说| 亚洲综合图区麻豆| 亚洲av一区二区色| 亚洲av不卡福利| 中文字幕日韩人妻视频一区| weyvv5国产成人精品的视频| 一级成人黄色影视| 搜索人妻av中文字幕| 一区二区三区在线观看视频免费| 内地av青青在线观看| 久久91精品国产91久久蜜月| 91在线国产观看视频| 五月婷婷激情综合少妇| 91精品国产综合久蜜臀| yeye38亚洲综合网久久| 日韩av在线播放中文字幕| 国产视频欧美一区二区| 国产强上美女在线观看| 国产高跟丝袜av| 国产精品原创中文巨作av | 欧美情色伦理在线| 丝袜美腿亚洲一区二区三区三州| 69亚洲综合激情五月久久| 亚洲欧美国产麻豆综合| 少妇人妻久久久久久久久久| 九九九九九九久久久久久久伊人| 亚洲av网址观看| av老司机亚洲精品天堂| 日韩人体高清精品一区二区三区| 亚洲精品久久久久久蜜臀| 欧美日韩在线在线观看视频| 91涩漫在线观看| 国产精品久久久久久久久久精爆 | 熟女潮喷白浆x88av| 伊人久久网36蜜桃| 久久艹视频在线视频| 免费97人妻一区二区三区| 久久精品男人的天堂av蜜臀| 久久久久久久久久一二三| 人妻的诱惑在线免费观看 | 欧美日韩三级在线综合| 美女精品福利视频在线观看| 疯狂人妻丝袜系列| 欧美精品一区二区免费开放| 久久一本色道综合六月天| 亚洲综合一区在线| 久久精品只有精品免费观看| 肉色丝袜精品视频一区二区| 中文字幕亚洲素人| 国产 欧美 日韩 成人| 中文字幕原创国产ol| 国产精品久久久久久人妻爽 | 久久综合日韩欧美| aaaaa青青草大片| 人人妻人人澡人人爽人人a v| 99热这里只有精品在线| 一色桃子av人妻中文字幕| 亚洲av日韩美av在线播放| 国产美女一区二区三区五区| 尤物在线观看视频av| 中文字幕 日韩观看视频| 中文av字幕在线观看一区| 红桃在线观看av| 中文字幕 日韩 麻豆| 日本视频一区免费| 日韩免费黄色在线| 免费看插b视频网站| 精品人妻一区二区免费| 影视av在线播放| av伊人网好吊妞| 久久精品熟女俱乐部| 国产日韩精品成人欧美直接观看 | 亚洲 成人 av 在线| 99这里只有精品视频在线| 一区二区三区最近中文字幕第一页 | 国内精品伊人久久久久av| 一级特色特级黄大片| 97国产精品影院在线观看| 国内精品久久99人妻无| 国产精品999动漫| 日韩 激情 美乳| 亚洲午夜久久精品视频| 91碰碰成人免费视频| 国产一区区二区三区| 欧美黑人xxxx猛交少妇| 日本黄色操碌缬巴| av日韩av亚洲国产| 特黄特色的大片免费看| 国产 日韩 精品在线观看 | 五月婷婷激情综合少妇| 久久精品视频在线看15| www.日产国产欧美com| 国产第一影院草草影院久久| 日本中文字幕电影在线观看| 97超碰在线高清| 2020国内精品免费视频| 日韩精品在线午夜| 国产精品久久国产精品99-| 九九精品在线观看视频| 青青青草草草久草| 久久国产成人精品免费视频| 日韩乱码99在线视频| 久久综合亚洲狠狠伊人| 久久久久亚洲av噜噜avav| 丁香六月久久综合网| 欧美一区二区三区免费的网址 | 婷婷激情网婷婷激情网| 97免费公开视频观看| www.午夜av.| 色婷婷狠狠18禁久久久| 人人妻人人]人人澡欧美一区 | 91高清视频在线一区| 成人黄色av在线播放| 色视频在线一区二区三区| 77777蜜臀精品久久综合| 在线看日韩不卡av| 一本色道久久亚洲精品网| 三级日本在线观看网站| 国产精品久久无码一区二区三区 | 中文字幕人妻综合网| 日日操夜夜操天天高潮| 美女让男人捅尿眼捅爽| 亚洲男人的天堂色偷免费| 精彩av在线不卡播放| 和熟女打炮国产视频| 精品99久久久久成人| 午夜美女免费福利| 四十路g五十路熟女豊满av| 国产精品久久国产精品99-| 色婷婷a区一区二区三区| 人妻精品中文字幕在线| 91在线免费观看视频在线观看| 色婷婷欧美亚洲激情综合另类在线| 亚洲风情资源网站| 国产精品资源在线播放| 亚洲黄色片在线观看| 国产av日韩av| 91人妻久久久精品中文字幕| 美女让男人捅尿眼捅爽| 亚洲熟女av观看| 成人亚洲国产一区二区| 久久综合另类激情人妖| 日韩国产av大全| 天天色天天舔天天干| 亚洲免费毛片av| 亚洲av狠狠做五月| 国产熟女一本区三区四区| 精品人妻少妇久久久久久| 久久成年人免费网站| 另类视频免费播放观看| 国产97在线视频| 91精品成人在线视频| 久久成人综合亚洲精品欧美| 国内自拍全部视频在线| 精品人妻一区二区免费| 久久精品国产亚洲av麻豆软| 午夜精品老牛av一区二区三区| 国产精品v白虎逼| 中文字幕色123| 成人免费av专区| eeuss一区二区人妻| 欧美高清a视频一区.| 肉色丝袜精品视频一区二区| 91在线播放 精品| 亚洲天堂嗯啊嗯啊| 国产一区二区在线校花| 一区二区三区在线观看视频免费 | 久久精彩视频免费看| 国内精品久久99人妻无| 亚洲综合视频麻豆| 欧美精品一区二区免费开放 | 午夜影院成人av| 欧美风情日韩国产黑白配| 男人添女人逼免费全视频| 亚洲av久久精品在线| 亚洲天堂成人在线观看视频网站| 999精品视频在线免费九九看| 黑人巨大欧美一区二区视频| 九九re热国产精品视频| 日本最新在线不卡免a费视频| 亚洲男人一区二区三区| 超碰caoporn免费| 国家五a级久久久久久黄片| 精品国产免费久久久久尖叫| 九九综合九色综合98| 亚洲综合色区另类小说| 中文字幕av在线更新| 日韩 欧美成人999| 免费观看性感美女| 欧美日韩色图一区| 日韩精品中文字幕巨臀人妻中出| 成人美女在线视频| 国产熟女一区二区91| 亚洲不卡免费在线| 在线中文字幕在线中文| aaaaa青青草大片| 大香蕉伊人久久草| 亚洲精品无码中文字幕无码| 亚洲同性gay激情无套| 久久精品人人做人人综合| 亚洲经典1区2区3区| 国产麻豆精品成人av| 97精品天天在线天天精品| 婷婷av在线免费观看| 亚洲伊人久久在线| 亚洲中文字幕视频乱码| 午夜av网站观看| 亚洲啊v男人天堂| 亚洲国产天堂在线| 欧美专区日韩精品一区二区| 777 亚洲天堂| 午夜少妇久久精品| 早川濑里奈av黑人番号| 国语自产拍在线观看视频| 九九在线观看99视频| 少妇精品久久综合网| 中文一区二区三区在线播放| 新老鸭窝在线视频| 变态另类天堂在线播放 | av网站免费在线看| 青青草原国产在线精品| 国产精品久久久久久av大片| 日本男人操日本女人视频| 成人精品国产一级二级| 人妻av中文字幕网| 久久久蜜桃成人网| 麻烦视频一区二区三区| 在线观看亚洲成人av电影 | 亚洲国产成a人片77777| 日韩精品一线二线三线四线| 五十路六十路素人熟女| 妻子和黑人邻居的交换| 欧美日韩中文字母专区| 99精品偷拍在线中文字幕| 国产亚洲欧美视频二区| 免费观看日韩黄色大片| 久久久精品伦理一区二区三区| 精品一区二区三区不卡蜜臂| 经典国产91精品福利网站在线看| 国产精品v白虎逼| 蜜臀日韩一区二区三区| 久久久午夜精品日本| 日本久久久久久久国产精品| 亚洲精品性色av| 午夜精品av在线| 日本老熟妇ⅹxx| 99精品欧美一区二区三区蜜桃| 日韩av另类在线| 久久人妻大香蕉艺儿网| 青青国产精品最新网址| 日韩av一线二线三线在线观看| 青青操操操操操操操| 经典a级片在线观看| 在线观看91成人| 久久久久久久久久久福利视频| 国产中文字幕免费视频| 亚洲欧美日韩综合在线丁香| 中文字幕人妻xxxx| 色哟哟网站日韩精品| 精品在线激情av| 91福利共享久久精品| 97在线视频在线激情| 欧美日韩久久理论视频| 国产精品人妻一区二区三区| 乱色熟女综合一区二区| 欧美亚洲韩日一区二区三区| 一本到88综合久久99| 人妻精油按摩系列| 和熟女打炮国产视频| 久久久午夜精品日本| 日韩精品中文字幕资源| 国产av久久久久久久| 一区二区三区国产日本欧美| 精品丰满少妇人妻| 精品久久97观看在线ship| 欧美情色免费视频| 中文字幕欧美极品| 免费少妇一区二区三区| 日韩亚洲欧美高清视频| 日韩欧美卡一卡二卡三| 观看国产精品97视频| 久久人妻精品二区| 97久久香蕉国产线看观看| 粉嫩一区二区性色粉嫩av| 亚洲av色图网站| 日韩不卡在线av| 在线视频国产香蕉岛国| 黑人巨大欧美一区二区视频| japanese白嫩人妻hd| 日韩av不卡高清| 91精品又粗又硬又爽少妇的视频| 久久久久久91亚洲精品| 性高潮久久久久久久久免费| 19国产精品麻豆| 麻豆国产在线观看视频| 4438x亚洲最大成人网| av一区中文字幕在线| 亚洲国产长腿丝袜av天堂| 十八禁在线无遮挡| 鸡巴插洞穴的软件免费试看| 经典国产91精品福利网站在线看| 久久久精品伦理一区二区三区 | 亚洲美女高潮久久| 日本少妇激情视频| 99热精品在线免费观看| 亚洲av一区二区色| av日韩在线第一页亚洲第一时间| 亚洲一区二区 偷拍| av伊人网好吊妞| 国产精品999动漫| 俺来也官网欧美久久精品| 日韩精品色图在线| 青青操在观看视频| 91在线视频亚洲| 色婷婷a区一区二区三区| 国产精品久久久久久av蜜臀| 骚熟妇人妻中文字幕网站| 一区二区三区亚洲社区| 精品久久久久久久久字幕| 日韩国产欧美激情在线视频| 91九色porny国产| 91在线在线免费视频| 女同性猛交xxxx| 国产人与禽zoz0性情伦| 中文字幕123一区二区三区| 亚洲五月六月激情| 2019年中文字幕在线| 天天操美女综合网| 亚洲三级av一区| 99国产精品视频久久久久| 亚洲熟女午夜毛片av毛片| 久久久久久久久久久久久福利| 日韩欧美一区二区三区不卡| 午夜激情成人在线| 自拍偷拍国产在线| 亚洲日本熟妇高清| 欧美国产日本精品| 久久午夜亚洲精品网站| 小明看看成人播放平台| 黄色录像一级片大| 国产熟女一本区三区四区| 欧美精品国产字幕| 粉嫩一区二区性色粉嫩av| 在线视频97观看| 久久ye九九视频免费观看| 亚洲美女高潮久久| 午夜精品在线观看成人| 在线观看国产高清精品| 亚洲精品在线17| 精品91久久99九九| 中文字幕乱码一区久久| 欧美另类老熟妇猛交| 大片福利网站导航| 亚洲美女巨乳在线| 91福利共享久久精品| 欧美激情亚洲激情亚洲| 日一区二区三区在线视频| 欧美黑人一区二区在线| 九色原创自拍视频| 国产99精品久久久久久久| 国产在线看片免费观看| 婷婷国产成人在线| 97精品视频在线观看免费| 成人av电影网站日韩| 久久精品视频在线看15| 亚洲精品在线17| 黄色午夜免费网站| 日韩无人区一卡2卡3卡4卡 | 国产日韩欧美二区视频| 亚洲av中文有码| 久久久久国产精品黄毛片| 日本久久精品三级视频| 国产精品免费自拍视频大全| 淫妇操BBB操BBB操BBB| 激情五月婷婷综合色视频| 国产超碰人人一区二区三区| 久久精品9999蜜桃| 美女穿丝袜美腿热吻男人| 91丝袜美腿美女诱惑| 精品人妻少妇一区二区三区_| 久久国产精品免费看三级| 极品少妇激情av在线| 国产免费精品久久久| 天天操天天摸天天插| 精品日韩视频在线观看| 欧美三级韩国三级少妇99| 日韩中文字幕无码中文字| 97精品人妻一区蜜桃| 国产精品久久久精品久久| 亚洲岛国av在线| 91精品国产综久久久久| 99手机视频免费在线观看| 中文字幕天堂av.| 最新日韩免费啪啪一区| 我要看黄色一级影视片| 日韩欧美一区二区三区不卡| 大香蕉大香蕉婷婷丝袜大香蕉| 亚洲精品久久久久久蜜臀| 国产亚洲精品久久久久久女人| 日本成年中文字幕| 久久国产午夜精品| 极品人妻探花av| 亚洲av成人波多野一区二区| 五月婷婷六月在线观看| 91国产精品久久久久| 伊人久久视频在线观看| 国产一区二区在线播| 亚洲av少妇高潮150p| 国产精品人妻在线| 在线视频97观看| japanese白嫩人妻hd| 一区二区国产中文字幕| 免费一区二区三区四区av| 日本成人中出视频| 亚洲乱熟女一区二区三区在线视频| 52av成人久久国产一区| 国产蜜桃av在线观看| 白嫩丰满少妇大战黑人| av最新在线中文天堂| 日本 韩国 欧美 久久久| 天天操天天摸天天插| 88成人美女女内射| 91国语对白精品露脸| 亚洲av综合av一区二区综| 成人日韩亚洲欧美| 加勒比在线视频在线播放| 国产精品视频福利在线| 天堂男性av在线| 99热这里只有精品在线| 欧美三级中文字幕在线| 婷婷六月亚洲综合| 人人妻人人]人人澡欧美一区| 欧美乱视频一区二区三区| 欧美日韩操操操操操| yeye38亚洲综合网久久| 蜜桃成人永久免费av大| 91中文字幕综合| 欧美另类老熟妇猛交| 97免费公开视频观看| 国产精品日韩欧美婷婷综合久久| 蜜臀精品人妻社区一区| 日日天天日天天谢天天日| 99自拍视频国产在线| 男人天堂成人亚洲| 亚洲av影视综合| 国产超碰人人一区二区三区| 久久久精品一区二区| 夜夜嗨一区二区三区直播平台| 日韩美女少妇av| 久久国产午夜精品| 青青操在观看视频| 精品欧美日韩在线观看| 99亚洲综合精品成人网色播| 九九re热国产精品视频| 久久日韩精品中文字幕人妻熟女| 一本色道久久爱久| 国产熟女一区二区91| 久久久久久久久久亚洲影视| 91熟女国产老熟女| 少妇被插激情视频| 国产视频1区二区三区| 中文字幕在线三级| 超碰人妻人人爱人人干| 成人校园春色小说| 精品久久久久久五月天| 久久久久久 九色av| 亚洲国产精品成人久久久| 午夜熟女经典一区二区| 欧美国产日韩成人一区二区三区 | 日本一道本美女久久| 2019年中文字幕在线| 动漫精品在线观看视频| 亚洲天堂日韩美女| 九九热九九色九九操| 精品人妻一区二区区中文| 97免费精品97久久久久久97| 久久伊人青青草大香蕉| 日韩毛片免费播放| 男女啪啪高清网站| 欧美成人金8天国加勒比| 亚洲天堂网最新网址| 青青操操操操操操操| 中文字幕日韩一二三区视频| 97色伦午夜国产亚洲精品| 亚洲 制服 中文字幕| 玩弄超骚少妇一区二区三区| 影视av在线播放| 欧美另类极品videoshd| 亚洲无av码一区二区三区| 久久久久久精品成人| 久久艹视频在线视频| 熟妇 人妻 中文| 开心五月婷婷丁香婷婷| 日韩毛片免费播放| av在线亚洲最大的| 亚洲欧美日韩激情视频| 91红桃在线观看| 精彩视频久久久久| 青青草原vip在线视频| 日韩欧美在线情色| 99er视频,这里有精品九九| 91丝袜美腿美女诱惑| 国产福利在线观看91| 亚洲欧美日韩激情视频| 五月婷婷激情综合少妇| 中文字幕久久久一区久久久青春| 黄视频在线观看免费观看| 日韩欧美一区免费电影| 蜜桃臀av永久在线| 色哟哟网站日韩精品| 亚洲岛国av在线| 麻豆成人久久精品一区二区三区| 国产亚洲精品久久久久久久久| 国产精品久久久久久久久av| 77777蜜臀精品久久综合| 天天操美女综合网| 成人精品国产一级二级| 激情边亲边摸视频| 青青草国产在线免费观看| 亚洲av操伊人久久| 国产精品人妻在线| 国产精品18久久久| 久久婷婷成人精品国产电影| 久久久久久一级二级三级| 最新欧美激情一区二区| 欧美一区二区三区综合网| 黄色片网站国产精品| av完全免费在线| 免费在线观看亚洲黄色| 亚洲人成电影aaa| 欧美一区二区三区国产| 日韩毛片av网站| 玩弄丰满人妻一区二区av| 日韩欧美一区黄色| 内地av青青在线观看| 美女激情国产精品| 美女黄页网站久久久久久| 久久久久日本精品无码天美传媒| 日本免费激情在线观看| 制服丝袜亚洲另类| 免费黄色特级大片| 青青操最新在线视频免费| 波多野结衣内射在线视频| 色香视频亚洲自拍偷拍| 亚洲一区乱码在线观看| 天堂av中文字幕乱码免费看| 国产久久精品视频在线观看 | 人人妻人人澡人人爽久久av香蕉| 偷拍在线观看视频| 久久四色av米奇影视| 91在线国产观看视频| 亚洲国产成人精品女人久久久小说 | 中文字幕一区二区三区在线乱码| 国产麻豆色哟哟网站| 日韩三级 国产精品| 国产乱品免费一区二区三区视频 | 日本高清一道本一区| 中文字幕偷拍av| 人人妻人人]人人澡欧美一区 | 日韩两性视频在线观看| 日韩国产欧美激情在线视频| 青青青在线视频人视频| 人人澡人人妻人人爽少妇| 亚洲经典1区2区3区| 大片一级黄片一级| 69视频在线 91| 福利深夜在线观看| 国产欧美在线亚洲| 日韩色图欧美视频| 丝袜美腿亚洲一区二区三区三州| 日韩av在线不卡看| 使劲点爽视频网站| 99久久久国产精品免费2021| 国产99精品久久久久久久| 人妻超碰在线观看| 久久久精品一区二区| 91性高久久久久久久久| 亚洲综合一区在线| 一区二区精品视频乱码| 成人免费av专区| 久久精品视频在线看15| 欧洲日本国产一区二区| 色视频在线一区二区三区| 国产一区二区三区女人的床叫声| 九九热免费视频播放| 亚洲三级av一区| aaa亚洲欧美日韩| 超碰97在线在线观看| 操操操操夜夜夜夜| 国产精品久久久美女爽av| 国产精品亚洲欧美一级久久精品| 在线亚洲无av码| 欧美国产精品久久九九| 中文字幕人妻熟女人妻视频| 999精品视频在线观看精品| 亚洲一区二区精品无码99| 国产精品原创中文巨作av| 欧美亚洲成人动漫在线| 中文人妻熟妇精品乱又伧不卡| 丰满年轻岳中文字幕一区二区| 一级成人黄色影视| 欧美日韩成人在线高清| 亚洲熟女午夜毛片av毛片| 91热视频在线观看| 国产精品一区二区在线邻家| 欧美mv日韩mv视频| 中文字幕人妻少妇一区二区| 91在线精品在线| 精品两个孩子一区二区三区| 欧美黄色激情一区二区| 97视频在线观看一区二区三区| 国产三级 日韩三级| 日韩福利视频中文字幕| 伊人色综合久久久久| 日韩欧美成人av电影| 日本精品一区二区三区在线精品| 人人妻人人]人人澡欧美一区 | 亚洲中文av播放| 精品视频久久一区二区三区四区 | 人妻丝袜美腿一区二区三区| 人妻熟女中文av| 中文字幕中文字幕中文字幕| 日韩 欧美成人999| 99只有精品在线观看| 大香蕉大香蕉婷婷丝袜大香蕉| 四虎日韩在线观看| 中文字幕不卡一区二区三区| 丝袜人妻av中文字幕| 国产欧美日韩精品一区二区| 欧美一区二区三区四区在线| 激情啊啊啊啊啊啊啊| 国产懂色av熟女丝袜精品| 大香蕉伊人久久草| 欧美熟妇久久久久久久久久久| 久久久久久激情av性色| 都市激情 校园春色 中文字幕 | 日韩午夜精品短视频| 亚洲情色一区在线观看| 欧美日韩1区2区3区4区5区| 亚洲情色伦理在线| 成人动漫av一区二区| 国产成人AV无码一二三区| 老司机av在线视频| 大龄岳母的诱惑电影在线观看| 免费高清理伦片在线播放视频| 中文字幕 日韩 麻豆| 国产精品很黄很色很爽的网站| 免费a级黄片在线观看| 久久99蜜桃精品视频| 国产裸体学生视频全黄网站| 欧美乱视频一区二区三区| 超碰免费在线不卡不卡不卡| 国产精品色婷婷久久58| 丁香六月婷婷综合在线| 免费观看日韩黄色大片| 婷婷久久中文字幕17| 亚洲熟女一区二区三区电影| 中文有码字幕在线| 国产精品视频一区二区三区16| 91高清在线观看一区| 日韩精品视频在线视频看看| 国产一区精品视频免费播放| 久久久人妻视频免费观看| youtube没有中文字幕| 久久久久久久久久久久久福利| 农村人妻一区二区三区| 黄色成年人在线观看| 亚洲国产欧美另类| 男人能不能亲女生的秘密| 粉嫩一区二区性色粉嫩av| 骚逼被大鸡吧插视频| 欧美黑人xxxx猛交少妇| 天天日天天插天天操天天射天天喷| 人妻精品久久久久久| 在线成人激情av| 亚洲毛片av在线| 99国产精品人妻无码一区二区| 1024日韩精品一区二区| 亚洲青青青草在线免费视频| 亚洲天堂网最新网址| 亚洲 欧美 日韩 人妻在线| 亚洲精品无码中文字幕无码| 国产亚洲精品av成人无删减| 欧美高清a视频一区.| 久久亚洲欧美日本精品品| 亚洲自治区二色一区二区三区| 全网小视频资源免费在线播放| 99国内外在线视频免费| 国产av中文字幕中出| 免费黄页网址大全在线观看| 久久精品国产亚洲avapp| 2021狠狠狠狠狠| 国产av 一区二区三区| 国产欧美1区2区3区| 人妻视频在线免费播放| 99久久久国产精品免费2021| 99re视频在线观看视频| 日本中文字幕电影在线观看| 热久久77这里有精品综合久久 | 三级日本在线观看网站| 啊啊嗯嗯好爽视频| 天天天操天天干天天日| 亚洲国产精品va在线观看www | av中文字幕乱码在线看| 欧美精产国品一二三www| 国产精品久久这里都是精品| 大香蕉大香蕉婷婷丝袜大香蕉| 999精品视频在线观看精品| 国产av久久久久久久| 97视频公开在线观看| 国产69精品久久久久乱码| 自拍伦理视频在线观看| 激情五月婷婷婷婷婷婷婷| 久久精品9999蜜桃| 人妻久久久精品69系列| 日韩精品欧美嫩草久久99| 亚洲激情欧美伦理| 久久亚洲国产精品电影| 婷婷av在线免费观看| 高清在线 中文字幕| 中文字幕人妻综合网| 911美女片黄在线观看| 中文av字幕在线观看一区| 欧美精品mv在线播放观看| 农村人妻一区二区三区| 大色网小色网在线观看| 激情视频在线观看中文字幕| 美女激情国产精品| 亚洲av 成人亚洲av| 国产av日韩av| 国产日韩精品成人欧美直接观看| 久久久久大香青草精品综合| 精品av综合一区二区三区| 99视频在线国产观看| 久久精品国产亚洲av久| 久久国产这里只精品免费| 成人黄色性a大片| 欧洲美女福利一区二区三区| 黄色录像一级片大| 欧美日韩视频高清一区二区| 亚洲精品在线观看av密乳av| 91国产免费视频国产免费| 中文字幕欧美极品| 亚洲淫中文字幕一区| 大屁股熟女风间由美| 激情边亲边摸视频| 婷婷综合亚洲精品久久| 日韩亚洲丝袜美腿久久| 色婷婷激婷婷深爱五月老司机| 久久aa黄色aa网站| 成人鲁啊鲁是男人的天堂| 小草青青手机视频| 一区二区三区在线91| 日本伊人伊人伊人| 日韩99中文字幕在线视频| 91人妻人人看人人爽| 97在线视频在线激情| 成人精品永久免费观看| 精彩视频久久久久| 免费观看日韩黄色大片| 日韩中文字幕激情在线| 久久艹视频在线视频| 伊人久久精品在线观看| 欧美精产国品一区二区| 人妻少妇精品视频一区97| 亚洲最大黄色福利| 五月婷婷视频免费观看| 91国产老熟女精品| 香蕉久久成人国产精品| 日韩精品少妇熟女| 日韩伦理不卡一区二区| 精品婷婷乱码久久久久久蜜桃| 亚洲激情综合图区| 国产精品一一色哟哟| 亚洲福利视频一区二区| 久久久精品伦理一区二区三区 | 五十路六十路素人熟女| 日本老熟妇ⅹxx| 国产精品岛国久久久久久| 大香蕉伊人免久久| 久久久亚洲成人天堂| av网站大全在线免费观看| 亚洲女人的av天堂| 亚洲一卡2卡3卡4卡5卡| 亚洲婷婷精品av久久蜜桃久久| 黄页网站网址在线观看| 国产精品久久久美女爽av| 在线一区二区视频观看| 天天操天天射天天干天天爱 | 日韩欧美a级视频在线免费观看| 最新亚洲国产高清激情| 日本中文字幕诱惑| 亚洲欧美日韩激情视频| 欧美日韩亚洲中文色| 婷婷91人妻精品一区二区三区| 精品人妻一区在线视频| 国产精品久久久久久av福利| 久久久久久久久久久久少妇| 成人日本免费视频| 国产av高清无限看| 中文字幕在线三级| 97色在线电影免费观看| 色一区二区三区四区五区| 99热6在线观看高清完整版| www.免费成人在线视频| 男人操女人中国产视频| 国产 91 九色 精选| 亚洲人妻熟女一区二区三区| 免费a级黄片在线观看| 久久亚洲天堂成人精品| 亚洲第一页色自拍| 久久人妻大香蕉艺儿网| 福利深夜在线观看| 三级久久国产试看3分钟| 国产欧美日韩精品一区二区| 欧美男女啪啪真人视频| 久久午夜一成年人的视频| 日韩毛片成人在线| 97人妻免费视频精品| 在线视频青青青草| 久久久久中文字幕日本a v| 欧美情色伦理在线| 免费黄免费在线观看| 日本视频一区免费| 亚洲欧美国产免费| 日韩熟女在线视频| 久久人妻精品系列蜜桃| 国产熟女一本区三区四区| 天天色天天干天天| 亚洲免费毛片av| 日韩 欧美 国产 丝袜| 十八禁在线无遮挡| av网站软件在线播放| 香蕉久久久久久久av网站| 97久久香蕉国产线看观看| 成人在线电影一区二区| 亚洲精品www47| 五十路熟女人妻在线网观看| 国产av高潮大全| 熟女 日本 在线| 久久久96人妻精品蜜桃hd| 欧美风情日韩国产黑白配| 国产亚洲精品久久久久久女人| 日韩国产成人一区| 国产精品999动漫| 亚洲欧美精彩视频| 1024在线国产视频| 婷婷激情中文字幕组| 99手机视频免费在线观看| 最新福利网址91| 999久久久精品国产| 青青草原vip在线视频| 熟妇人妻中出视频| 国产老熟露脸对白| 蜜桃av在线观看一区| 黄色片网站国产精品| www.99久久久久.com| 制服丝袜亚洲另类| 精品人妻少妇一区二区三区_| 少妇熟女一区三区| 国产一区二区三区自拍欧美| 大香伊蕉人在人在线国产精品| 日本熟妇vvw日本人妻| 2019成人在线视频| 老熟妇高潮一区二区三| 亚洲成人影院麻豆| 四虎av在线观看| 91在线免费观看视频在线观看| 久久午夜一成年人的视频| 成人短视频在线版| 日韩美女少妇av| 亚洲经典1区2区3区| 日韩国产av大全| 中文一区二区人妻| 极品在线激情av| 日本五十路人妻hd| 婷婷丁香亚洲五月天| 2025av熟女| 熟妇人妻丰满激情视频| 嫩草九九九精品乱码一二三 | 国产 欧美 日韩 成人| 日韩av不卡高清| 在线视频一区二区观看| 91国产av精品| 久久精品国产亚洲avapp| 免费观看性感美女| 99久久草精品视频| 欧美影院一区二区三区| 久久精品国产亚洲激激情| 成人国内精品久久久久一区| 黑人巨大欧美一区二区视频| 亚洲av中文有码| 日韩 欧美 丝袜| 蜜臀 av 一区二区| 日韩精品免费在线观看视频| poronovideos美女| 九九热视频在线视频| 日韩av中文字幕六区| 欧美 成人 一区 二区| 另类日韩一区二区三区| 精品人妻免费av| 人妻丝袜美腿一区二区三区 | 国产成人AV无码一二三区| 青青视频成人免费完整版| 大量老熟女偷拍视频老女人| 精品丰满少妇人妻| 日韩两性视频在线观看| 人妻少妇精品视频一区97| 美女让男人捅尿眼捅爽| 亚洲av少妇高潮150p| 国产精品亚洲av三区| 亚洲免费观看女优| 国内偷拍视频免费久久| 精品一区二区三区 蜜臀av| 国产精品综合久久桃花| 亚洲欧美日韩一区另类| 国产av激情国产熟女| 日本不卡无吗在线播放| 丝袜美腿诱惑福利| 久久久久亚洲国产av| 欧美 日韩亚洲一区| 久久女人撒尿视频| 19国产精品麻豆| 日老熟女逼网视频导航| 欧美日韩1区2区3区4区5区| avove在线视频| 97视频在线观看一区二区三区 | 国产精品99久久久久久网站| 青青爽视频免费在线观看| 亚洲欧美精品夜色在线网站| 亚洲三级激情在线观看| 91涩漫在线观看| 亚洲日本熟妇高清| 日韩中文字幕一区二区高清| av伊人网好吊妞| 中文字幕一区在线精品| 国产一区二区三区亚洲欧美| 日本熟妇乱一区二区三区| 亚洲熟女午夜毛片av毛片| 小明看看成人在线免费视频| 亚洲Av无码成人黄网站在线| 国产经典在线播放| 一区二区国产中文字幕| 九九热九九色九九操| 日韩人妻系列在线看| 窝人体色www视频婷婷| 国产蜜桃av在线观看| 亚洲日韩免费视频在线视频| 久久伊人青青草大香蕉| 日韩av网站 狠狠| 日韩欧美一卡二卡在线观看视频| 久久久久日本精品少妇| 亚洲最大熟妇人妻| 麻豆剧传媒精品国产av| 国产精品久久久久久久久久精爆| 伊人久久网36蜜桃| 一级片一级黄色片| 国内毛片精品一区二区三区| 亚洲一区两区三区四区| 玩弄丰满人妻一区二区av| av天堂地址在线观看| 亚洲国产久一区二区三区| 亚洲av男人的天堂久久精品 | 97特黄一级中文字幕在线| 精品人妻一区在线视频| 和熟女打炮国产视频| 日韩成人午夜福利影院| 日韩亚洲欧美高清视频| 国产精品久久久久久入口| 中文一区二区三区在线播放| 狠狠挺进h嗯啊第一次视频| 一区二区三区av资源网| 亚洲欧美精品夜色在线网站| 夫妻互换精品三级国产| 人妻丰满精品一区二区A片| 久久综合日日夜夜| 99热这里只有精品在线| 欧美视频在线播放一卡| 天天操美女综合网| 911美女片黄在线观看| 23久久精品中文字幕人妻| 中文字幕久久j日| 欧美国产日韩成人一区二区三区| 亚洲视频亚洲视频| 亚洲av乱码一区二区三区蜜臀| 亚洲国产天堂在线| 久久国产这里只精品免费| 偷拍 自拍 在线| 亚洲天堂成人网入口| 国产精品很黄很色很爽的网站| 粉嫩一区二区性色粉嫩av| 国产精品亚洲av三区| 国产精品美女视频免费线播放| 欧美精品久久久久久久白浆| 熟女人妻久久中文字幕| 喝醉漂亮人妻被强了中字| 国产一区视频免费观看| 麻豆av熟女少妇精品| 亚洲av一区二区色| 99r精品视频在线播放| 国产精品原创中文巨作av| 国产日韩欧美二区视频 | 中文字幕av久久爽伊人一级| 91中文字幕综合| 国产精品久久久久久av福利| 午夜精品在线观看成人| 国产99精品视频免费观看| 国产精品资源在线播放| 久久视频这里只精品| 亚洲美女在线激情| 99久久久国产精品免费2021| 日本冢本中文字幕| 中文字幕人妻aaaaa| 亚洲av日韩美av在线播放| 韩国女主播青草完整视频| 91精品久久久久含羞草| 操美女姐姐啊啊啊| 最近最好的中文字幕免费| 精品人妻一区二区三区免| 久久少妇高潮视频免费| 国产视频97在线播放| 国产女同一区二区久久| 日本熟妇肉体裸交| 久久成人av一区二区| 国产又粗又猛又黄又爽的视频| 日韩欧高清视频在线| 色94色一区二区三区| 91精品在线视频 九色| 日韩欧美一区二区在线免费观看| 网页端在线聊天室| 午夜亚洲激情久久| 中文字幕人妻熟女人妻视频| 欧洲精品无码一区二区三区视频| 视频在线免费观看色| 一区二区三区av资源网| 天堂性视频99在线播放免费| 国产一区二区在线激情欧美| 久碰久摸久看在线观看| 亚洲天堂成人网入口| 狠狠操狠狠干97| 国产精品久久久久久人妻爽| 日韩 欧美 国产 丝袜| 国产99精品视频免费观看| 中文字幕 日韩 麻豆| 天天色天天舔天天干| 五月婷婷色激情网| 出轨少妇自白小说| 1024人妻熟女一区二区三区| 亚洲成人激情av在线播放| 狠狠婷婷久久精品一区二区| 欧美日韩av一区=区三区| 大龄岳母的诱惑电影在线观看| 欧美日韩少妇熟女| 精品人妻av区乱码久久密臀| 欧美黄色性感网站| 蜜臀一区二区三区四区av| 一区二区三区在线观看视频免费| 日韩美女中文字幕在线看 | 最新久久精品免费视频| 精品91久久99九九| 伊人久久网36蜜桃| 91最新视频在线播放| 国产伦精品一区二区三区视频9| 扒开老师双腿猛进入在线观看| 国产三级伦理在线观看| 欧美影院一区二区三区| 日韩色黄电影在线观看| 国产伦理精品av| 邻居天天cao我1v1高| 亚洲av中文有码| 亚洲精选国产一区| 欧美精品国产字幕| 深夜视频在线四区| 精品久久97观看在线ship| 亚洲精品9999久久久久| 国产精品久久久精品久久| 成人鲁啊鲁是男人的天堂| 日韩精品中文字幕熟女少妇 | 大香蕉大香蕉婷婷丝袜大香蕉| 天天操天天透天天射| yeye38亚洲综合网久久| 97资源总站中文字幕| 99热精品在线免费观看| 窝人体色www视频婷婷| 亚洲精品9999久久久久| 中文字幕人妻综合网| 在线视频一区二区观看| 亚洲av成人波多野一区二区| 亚洲一区黄色av| 尤物在线观看视频av| 99只有精品在线观看| 顶级少妇一区二区三区| 久久热中文在线观看| 久久久久中文字幕日本a v| 中文字幕亚洲自拍偷拍| 人人妻人人爱人人澡| 午夜蜜臀一区二区三区四区五区| 伊人久久网36蜜桃| 黄色午夜免费网站| 久久国产精品免费看三级| 国产精品视频你懂得99| 色就是色综合欧美色| 国产免费精品久久久| 免费看的日本一级片| 国产欧美一区视频在线观看| 蜜月久综合久久综合国产| 91熟女国产老熟女| 天天舔天天干天天操天天日| 中文字幕日韩精品在线免费| 欧美精品一区二区久久不卡| 日韩av网站 狠狠| 在线观看大片免费网站观看| 亚洲av影视综合| 日本高清中文字幕久久| 人妻 丝袜美腿 中文字幕| 久久免费又粗又长又硬又深又色| 欧美精品一区二区免费开放| 激情人妻一区二区三区| 亚洲黄色日韩电影| 免费97人妻一区二区三区| www国产精品人妻一二三区| 国产人妻av在线看| 超碰97在线在线观看| 精品高清亚洲国产欧美| 久久久综合精品一区二区三区欧美| 久在线视频_老鸭窝在线视频| 欧美激情片在线看| 成人伊人精品色xxxx视频 | 最新国产激情视频| 激情边亲边摸视频| 国产亚洲精品久久久久久久久| ysl蜜桃色14| 窝人体色www视频婷婷| 玩弄超骚少妇一区二区三区| 大香蕉av在线免费观看| 欧美一区二区三区综合网| 人妻,日本,亚洲| 天天影视色最新色| 欧美日韩av一区=区三区| 97在线视频在线激情| 尤物av在线播放| 亚洲乱码精品乱码精品中文| 极品人妻口爆颜射| yy8098国产av久久| 91在线免费观看视频在线观看| 最新中文字幕久久点| 久久久久久91亚洲精品| 亚洲精品av网站| 国产经典在线播放| 亚洲欧美日韩一区另类| 国产日韩欧美二区视频| 亚洲一本一道一区二区三区| 在线播放偷拍视频| 国产剧情福利在线播放| 日本精品久久久久电影网| 日韩一二三区视频免费观看| 91精品国产综合久蜜臀| 日韩欧美卡一卡二卡三| 亚洲 欧美 中文字幕第一页| 中文字幕 日韩 麻豆| 国产熟女一本区三区四区| 国产一区二区三区很黄很爽| 男女啪啪你懂的91| 丰满人妻一区二区免费视频| 精品女厕盗摄一区二区三区| 国产成人AV无码一二三区| 97在线视频在线激情| 国产视频97在线播放| 激情综合婷婷久久啪啪| 欧美性欧美视频这里只有| 91久久国语露脸精品国产| 91在线播放 精品| 日韩中文有码在线视频| 亚洲国产婷婷久久久久久一区| 麻豆国产在线观看视频| 欧美视频亚洲视频在线观看| 欧美国产精品久久九九| 一区二区三区精品精品| 久久 久久 久久av| 认你日爽在线视频| 精品两个孩子一区二区三区| 国产99视频精品免费观看9| 男女av在线观看网站| 亚洲av少妇高潮150p| 日韩亚洲在线成人| 亚洲欧美日韩一区另类| 人妻熟妇视频专区| 国产一区二区av少妇| 国产免费精品久久久| 18成人黄色在线观看| 一区二区三区四区av| www国产亚洲精品久久麻豆| 亚洲国产一区91| 在线视频一区二区观看| 日韩欧美一区免费电影| 成人国产精品一区二区视频下载| 99蜜臀无码人妻久久精品浪潮 | 亚洲免费观看毛片| 亚洲一本一道一区二区三区| 亚洲久久9999| av中文字幕在线观看中文| 亚洲av软件在线| 变态另类影音资源| 日本成人中出视频| 美女人妻素人在线丝袜| 人妻,日本,亚洲| 黄色一级网站免费在线播放| 亚洲乱码精品乱码精品中文| 人妻精品一二三区| 成人av大片在线看| 精品久久久久久久久字幕| 国产欧美日韩精品a在线观看| 亚洲成人偷拍av| 青青青青久久精品国产首| 亚洲一区黄色av| 激情综合婷婷久久啪啪| 中文字幕人妻xxxx| 亚洲天堂日韩美女| 日本久久精品三级视频| 日老熟女逼网视频导航| 国产欧美成人精品久久| 日韩三级电影免费久久| 国产又黑又粗又黄又大| 5252b欧美精品| 久久久久久久久久久久国| 精品人妻三区日日| 性感美女黄色刺激视频| 欧美视频观看99| av男人的东京天堂热| 亚洲经典 中文字幕| 91久久国语露脸精品国产| 一级特色特级黄大片| 久久精品国产露脸对白| 久久久中文字幕人妻| 黄色一级网站免费在线播放| 91在线播放 精品| 中文字幕久久j日| 天天天操天天干天天日| 91精品国产丝袜长腿久久| 中文字幕亚洲综合色| 亚洲av一区二区色| 免费观看视频成人| 综合九九久久九九久久| 国产欧美日韩成人一区二区| 亚洲伊人久久在线| 午夜蜜臀一区二区三区四区五区| 极品少妇高潮久久久久久久久| av电影在线观看亚洲| 一区二区精品视频乱码| av电影在线观看亚洲| 久久精品熟女亚洲av麻豆永永| 尤物在线观看视频av| 日本女优与黑人特级| 伊人久久中文字幕av| 久久精品av网站在线播放| 超级碰人妻香蕉在线97| 亚洲黄色片在线观看| 40路熟女人妻aⅴ一区二区三区| 性感美女黄色刺激视频| 人妻中文字幕一区三区| 日本妇女高潮视频| 天天日天天插天天操天天射天天喷| 国产一区二区三区香蕉| 国产精品色悠悠在线观看| 中文字幕久久一二三四区| 91九色porn在线| 亚洲一区二区精品无码99| 成人日韩亚洲欧美| 国产精品久久无码一区二区三区| 色福利视频导航网| 天天干天天综合色| 欧美影院一区二区三区| 在线视频97观看| 欧美视频观看99| 国产精品偷伦免费视频| 邻居天天cao我1v1高| 涩爱av色老久久精品偷偷鲁| 人妻一区二区久久中文| 国产伦理精品av| 青青草欧美激情在线视频| 7890大逼操鸡巴| 亚洲av超清在线| 黄色污污污免费在线观看网站| 欧美精品中文字幕久久久久| 丰满少妇久久久久久久的| 19国产精品麻豆| 香蕉久久久久久久av网站| 妻子和黑人邻居的交换| 国产一区二区三区女人的床叫声| 国产精品久久这里都是精品| 国产精品18久久久| 超碰大香蕉在线一人| 亚洲一区二区 偷拍| 男生女生插插的视频| 一区三区四区精品| 国产一区日韩二区在在| 免费观看日韩一级黄色大片 | 亚洲天堂成人在线观看视频网站| 婷婷只有在线精品视频| 麻豆精品国产传媒美女网站| 伊人久久婷婷综合五月97色| 日韩av不卡在线看| 亚洲国产欧美另类| 女同性猛交xxxx| 日韩在线观看hd| 婷婷综合五月激情网| 蜜臀一区二区三区四区av| txtv在线视频| 国产97综合久久久| 色综合综合色综合色综合色综合| 久草这里只有精品99| 精品亚洲午夜久久久久四季| 色综合久久综合久久综合网| 国产视频欧美一区二区| 日本熟妇vvw日本人妻| 国产成人国拍亚洲精品| 最新久久精品免费视频| 日韩av一区二区三区人妻| 国产av 在线视频| 国产成人av网站网址| 日韩av中文字幕六区| 久久精品国产亚洲av五区| 亚洲欧美日韩国产综合第一产区| 熟女人妻久久中文字幕| 18国产精品久久久久久| 自拍另类亚洲欧美| 国产精品久久久久精品三级a| 天天操天天透天天射| 日韩成人午夜福利影院| 天天插天天日天天啪| 加勒比在线视频在线播放| 男女啪啪你懂的91| 久久精品国产精品国产精品国产| 人妻人妻1区2区| 91 亚洲 在线| 日韩av永久免费观看| 婷婷综合亚洲精品久久| 日韩丝袜美腿av| 日韩 欧美成人999| 日韩va欧美激情在线| 欧美经典一区二区三区| 亚洲视频精品一区二区三区四区| av中文字幕乱码在线看| 2019成人在线视频| 97国内自拍视频网| 91九色porn在线| 国产日韩高清一区二区| 早川濑里奈av黑人番号| 国产人伦人妻亚洲| 精品久久在精品久久| 大香蕉大香蕉婷婷丝袜大香蕉 | 97视频在线播放| 婷婷激情中文字幕组| 中文字幕av人妻呻吟| 午夜天堂久久电影| 国产夫妻啪啪自拍| 国产亚洲精品久久久久久久久 | 人妻少妇精品视频一区97| 一本大道久久a久久综合精品| 丰满女人床上激情久久 | 日本最新在线不卡免a费视频| 午夜精品视频在线观看视频| 可以试看的黄大片| 欧美日韩亚洲中文色| 精品久久国产精品久久| 99久久精品国产亚洲av热热爱| 日韩中文字幕美女丝袜诱惑| 日韩在线观看hd| 国产精品色悠悠在线观看| 中文字幕av人妻呻吟| 色尼玛亚洲综合网| 亚洲天堂成人在线观看| 日韩午夜精品短视频| 91高清视频在线一区| 亚洲av懂色av| 国产三级伦理在线观看| 大尺度做爰啪啪床戏欧美| 草原免费视频亚洲| 视频不卡在线观看| 最大的黄色亚洲网站在线观看| 亚洲男人天堂网址| 2020午夜免费福利| 精品久久家中文字幕| 日韩av最新在线| 亚洲最大综合久久网成人| 亚洲午夜久久精品视频| 亚洲成网在线观看| 日本高清一道本一区| 午夜蜜臀一区二区三区四区五区| 52av成人久久国产一区| 最新中文字幕久久点| 丝袜美腿亚洲一区二区三区三州| 国产av久久久久久久| 欧美黄色aaa级| 97资源超碰成人| 小草青青手机视频| 尹人香蕉久久99天天拍久女久| 日韩欧美亚洲精品人妻| 制服丝袜美腿一区二区在线观看| 99亚洲国产精品久久久| 午夜精品在线观看成人| 亚洲人成电影aaa| 人妻人妻1区2区| 日韩毛片免费播放| 日韩最新视频播放| 亚洲综合自拍成人偷拍网站| 极品校花口爆吞精| 亚洲精品自拍产在线观看| 久久人妻大香蕉艺儿网| 婷婷在线www.| 88人妻x88av| 亚洲av 亚州人妻中文字幕| 亚洲乱码精品乱码精品中文| 中文字幕有码系列| 91九色porny国产| 久久av一区二区三区neco| 国产欧美在线亚洲| 窝人体色www视频婷婷| 早川濑里奈av黑人番号| av最新在线中文天堂| 色婷婷a区一区二区三区| 国产三级伦理在线观看| 日韩无人区一卡2卡3卡4卡| 人人妻人人澡人人爽人人a v| 喝醉漂亮人妻被强了中字| 最新日韩在线观看视频| 亚州av男人天堂| 91欧美日韩在线观看视频| 久久女人撒尿视频| 日韩av手机免费在线观看| 欧美日韩中文字母专区| 欧美熟妇久久久久久久久久久 | 黄色一级片人和狗| 蜜臀av在线素人人妻播放一区| 日韩 午夜 免费| 亚洲欧美日韩激情视频| 91九色精品福利视频| 九九热九九色九九操| av不卡中文字幕在线观看| 蜜桃av噜噜一区二区三区视频| 日本五十路人妻hd| 大香蕉伊人久久草| 日韩性在线观看视频| 国产裸体学生视频全黄网站| 欧美激情片在线看| 91精品国产麻豆自产在线| 日韩a国产v亚洲欧美精品| 一区二区精品视频乱码| 日韩免费av在线观看激情| 欧美精品久久久久久久白浆| 最新欧美激情一区二区| 97精品人妻一区蜜桃| 人妻色图欧美日韩| 午夜18在线观看视频| 日本视频一区免费| 亚洲国产精品va在线观看www| 日韩欧美亚州综合| 九九热播这里只有精品| 欧美日韩1区2区3区4区5区| re久久99热国产| 在线 人妻 视频| 伦理疯狂精油按摩| 高清有码中文字幕在线观看| 谁有av网站在线播放中文字幕| www 超碰97在线观看com| 久草视频在线有精品| 疯狂人妻丝袜系列| 女同性恋亚洲av| 少妇熟女一区三区| 熟女av高清一区二区三区| 国产精品久久久久久av福利| 久久国产精品亚洲欧美阿娇| 国产成人看片在线| 午夜熟女经典一区二区| 国产av激情国产熟女| 久久日韩精品中文字幕人妻熟女| 亚洲伊人久久在线| 亚洲国产精品av久久久软件| 日韩亚洲丝袜美腿久久| 一区二区三区最近中文字幕第一页 | 久久99蜜桃精品视频| 制服丝袜美腿一区二区在线观看| 国产中文字幕在线第一页| 国产亚洲精品久久久久久久久 | 日韩 激情 视频| 97人人精品人人爱| 美女把逼给男人操| 午夜激情福利大片| 五月婷婷激情综合少妇| 日韩欧美国产12区| 中文一区二区人妻| 五十路六十路素人熟女| 久久久久久久久 国产精品| 精品在线欧美日韩| 最新日韩免费啪啪一区| 色91av在线播放| 无人一区二区三区在线观看视频| 清纯唯美亚洲五月激情综合| 亚洲成网在线观看| 高清视频区二区三区| 九九热在线视频精品1| 97色在线电影免费观看 | 性生活久久久久久久久| 欧美日韩中文字母专区| 久久久精品一区二区| 亚洲国产精品成人久久久| 色av色婷婷91人久久久| 久久视频这里只精品| 1024你懂的日韩欧美人妻| 青青操在观看视频| 精品国产亚洲蜜月在线观看| 激情综合网日韩av| 色哟哟成年人网站| 亚洲av狠狠做五月| 日韩 欧美 国产 丝袜 | 欧美一区二区在线播放| 成人亚洲国产一区二区| 97在线视频在线激情| 日韩av不卡高清| 国产精品久久无码一区二区三区| 丁香激情久久久久伊人精品| 国产高跟丝袜av| 精品久久久久久久久99| 欧美性猛交xxxx免费看久久| av最新在线中文天堂| 2020国内精品免费视频| 成人理论片中文字幕| 天天日天天插天天操天天射天天喷| 和熟女打炮国产视频| 手机在线日韩av| 粉嫩一区二区性色粉嫩av| 国产 欧美?亚洲?日韩视频| 91精品成人在线视频| 中文字幕av人妻呻吟| 色福利视频导航网| 就爱操在线视频观看| 久久午夜国产精品| 久久久久久亚洲精品不卡| 青青操在观看视频| 欧美激情一级欧美精品| 最新欧美激情一区二区| 7890大逼操鸡巴| 一本大道久久a久久综合精品| 熟妇人妻中出视频| ysl蜜桃色14| 扒开老师双腿猛进入在线观看| 久久 久久 久久av| 熟女人妻中文字幕一三区| 国产日韩欧美二区视频 | 在线 亚洲 精品| 亚洲国产一区av| 青青草原国产在线精品| 鸡巴插洞穴的软件免费试看| 亚洲精品又黄又爽的视频| 100xxoo蜜乳| 丝袜人妻av中文字幕| 在线欧美日韩观看一区二区| 99日韩欧美在线观看| 一级片一级黄色片| 日韩精品欧美嫩草久久99| 日本伦理在线不卡| 色综合久久中文综合久久| 日韩精品视频在线视频看看| 亚洲欧美国产免费| 色av色婷婷18人妻久久久| 日韩亚洲欧美综合一区二区| 婷婷久久中文字幕17| 精品中文字幕久久久久久| 久久久96人妻精品蜜桃hd| 噜噜视频在线播放视频| 少妇被爽到高潮喷水久久| 亚洲天堂国产精品区| 加勒比东京热综合888| 精品久久久久久五月天| 日韩啊v视频在线| 黄色录像一级片大| 中国学习在线成人高考| 亚洲女人av在线| 自拍偷拍另类图区| 91精品成人在线视频| 日韩中文字幕第十页| 日韩无人区一卡2卡3卡4卡| 美女色网站在线不卡粉嫩av| 午夜精品尤物麻豆一区二区无限| 日本高清中文字幕在线| 欧美性欧美视频这里只有| 亚洲国产久久精品| 男生女生插插的视频| 国产 欧美 日韩 成人| 男女av在线观看网站| 欧美亚洲韩日一区二区三区| 91久久美女高潮喷水| 免费日韩av在线免费观看| 亚洲五月六月激情| 亚洲 欧美 日韩 人妻在线| 青青草久久久久久久久久| 亚洲 成人 av 在线| 国产香蕉久久精品免费| 日韩精品一线二线三线四线 | 在线欧美日韩观看一区二区| 欧美精品视频一二三| 中文字幕人妻网站| 五月婷中文字幕网| 日韩人妻中文字幕视频| 亚洲69偷拍视频在线观看|