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

Redis 這么火,它都解決了哪些問題?

存儲(chǔ) 存儲(chǔ)軟件 Redis
Redis是一個(gè)基于BSD開源的項(xiàng)目,是一個(gè)把結(jié)構(gòu)化的數(shù)據(jù)放在內(nèi)存中的一個(gè)存儲(chǔ)系統(tǒng),你可以把它作為數(shù)據(jù)庫,緩存和消息中間件來使用。

 [[261796]]

先看一下Redis是一個(gè)什么東西。官方簡(jiǎn)介解釋到:

Redis是一個(gè)基于BSD開源的項(xiàng)目,是一個(gè)把結(jié)構(gòu)化的數(shù)據(jù)放在內(nèi)存中的一個(gè)存儲(chǔ)系統(tǒng),你可以把它作為數(shù)據(jù)庫,緩存和消息中間件來使用。同時(shí)支持strings,lists,hashes,sets,sorted sets,bitmaps,hyperloglogs和geospatial indexes等數(shù)據(jù)類型。它還內(nèi)建了復(fù)制,lua腳本,LRU,事務(wù)等功能,通過redis sentinel實(shí)現(xiàn)高可用,通過redis cluster實(shí)現(xiàn)了自動(dòng)分片。以及事務(wù),發(fā)布/訂閱,自動(dòng)故障轉(zhuǎn)移等等。

綜上所述,Redis提供了豐富的功能,初次見到可能會(huì)感覺眼花繚亂,這些功能都是干嘛用的?都解決了什么問題?什么情況下才會(huì)用到相應(yīng)的功能?那么下面從零開始,一步一步的演進(jìn)來粗略的解釋下。

1.從0開始

最初的需求非常簡(jiǎn)單,我們有一個(gè)提供熱點(diǎn)新聞列表的api:http://api.xxx.com/hot-news,api的消費(fèi)者抱怨說每次請(qǐng)求都要2秒左右才能返回結(jié)果。

隨后我們就著手于如何提升一下api消費(fèi)者感知的性能,很快最簡(jiǎn)單粗暴的***個(gè)方案就出來了:為API的響應(yīng)加上基于HTTP的緩存控制 cache-control:max-age=600 ,即讓消費(fèi)者可以緩存這個(gè)響應(yīng)十分鐘。

如果api消費(fèi)者如果有效的利用了響應(yīng)中的緩存控制信息,則可以有效的改善其感知的性能(10分鐘以內(nèi))。但是還有2個(gè)弊端:***個(gè)是在緩存生效的10分鐘內(nèi),api消費(fèi)者可能會(huì)得到舊的數(shù)據(jù);第二個(gè)是如果api的客戶端無視緩存直接訪問API依然是需要2秒,治標(biāo)不治本吶。

2.基于本機(jī)內(nèi)存的緩存

為了解決調(diào)用API依然需要2秒的問題,經(jīng)過排查,其主要原因在于使用SQL獲取熱點(diǎn)新聞的過程中消耗了將近2秒的時(shí)間,于是乎,我們又想到了一個(gè)簡(jiǎn)單粗暴的解決方案,即把SQL查詢的結(jié)果直接緩存在當(dāng)前api服務(wù)器的內(nèi)存中(設(shè)置緩存有效時(shí)間為1分鐘)。后續(xù)1分鐘內(nèi)的請(qǐng)求直接讀緩存,不再花費(fèi)2秒去執(zhí)行SQL了。

假如這個(gè)api每秒接收到的請(qǐng)求時(shí)100個(gè),那么一分鐘就是6000個(gè),也就是只有前2秒擁擠過來的請(qǐng)求會(huì)耗時(shí)2秒,后續(xù)的58秒中的所有請(qǐng)求都可以做到即使響應(yīng),而無需再等2秒的時(shí)間。

其他API的小伙伴發(fā)現(xiàn)這是個(gè)好辦法,于是很快我們就發(fā)現(xiàn)API服務(wù)器的內(nèi)存要爆滿了。。。

3.服務(wù)端的Redis

在API服務(wù)器的內(nèi)存都被緩存塞滿的時(shí)候,我們發(fā)現(xiàn)不得不另想解決方案了。最直接的想法就是我們把這些緩存都丟到一個(gè)專門的服務(wù)器上吧,把它的內(nèi)存配置的大大的。然后我們就盯上了redis。。。至于如何配置部署redis這里不解釋了,redis官方有詳細(xì)的介紹。隨后我們就用上了一臺(tái)單獨(dú)的服務(wù)器作為Redis的服務(wù)器,API服務(wù)器的內(nèi)存壓力得以解決。

3.1 持久化(Persistence)

單臺(tái)的Redis服務(wù)器一個(gè)月總有那么幾天心情不好,心情不好就罷工了,導(dǎo)致所有的緩存都丟失了(redis的數(shù)據(jù)是存儲(chǔ)在內(nèi)存的嘛)。雖然可以把Redis服務(wù)器重新上線,但是由于內(nèi)存的數(shù)據(jù)丟失,造成了緩存雪崩,API服務(wù)器和數(shù)據(jù)庫的壓力還是一下子就上來了。

所以這個(gè)時(shí)候Redis的持久化功能就派上用場(chǎng)了,可以緩解一下緩存雪崩帶來的影響。redis的持久化指的是redis會(huì)把內(nèi)存的中的數(shù)據(jù)寫入到硬盤中,在redis重新啟動(dòng)的時(shí)候加載這些數(shù)據(jù),從而***限度的降低緩存丟失帶來的影響。

3.2 哨兵(Sentinel)和復(fù)制(Replication)

Redis服務(wù)器毫無征兆的罷工是個(gè)麻煩事。那么怎辦辦?答曰:備份一臺(tái),你掛了它上。那么如何得知某一臺(tái)redis服務(wù)器掛了,如何切換,如何保證備份的機(jī)器是原始服務(wù)器的完整備份呢?

這時(shí)候就需要Sentinel和Replication出場(chǎng)了。Sentinel可以管理多個(gè)Redis服務(wù)器,它提供了監(jiān)控,提醒以及自動(dòng)的故障轉(zhuǎn)移的功能;Replication則是負(fù)責(zé)讓一個(gè)Redis服務(wù)器可以配備多個(gè)備份的服務(wù)器。Redis也是利用這兩個(gè)功能來保證Redis的高可用的。此外,Sentinel功能則是對(duì)Redis的發(fā)布和訂閱功能的一個(gè)利用。

3.3 集群(Cluster)

單臺(tái)服務(wù)器資源的總是有上限的,CPU資源和IO資源我們可以通過主從復(fù)制,進(jìn)行讀寫分離,把一部分CPU和IO的壓力轉(zhuǎn)移到從服務(wù)器上。但是內(nèi)存資源怎么辦,主從模式做到的只是相同數(shù)據(jù)的備份,并不能橫向擴(kuò)充內(nèi)存;單臺(tái)機(jī)器的內(nèi)存也只能進(jìn)行加大處理,但是總有上限的。

所以我們就需要一種解決方案,可以讓我們橫向擴(kuò)展。最終的目的既是把每臺(tái)服務(wù)器只負(fù)責(zé)其中的一部分,讓這些所有的服務(wù)器構(gòu)成一個(gè)整體,對(duì)外界的消費(fèi)者而言,這一組分布式的服務(wù)器就像是一個(gè)集中式的服務(wù)器一樣(之前在解讀REST的博客中解釋過分布式于基于網(wǎng)絡(luò)的差異:基于網(wǎng)絡(luò)應(yīng)用的架構(gòu))。

在Redis官方的分布式方案出來之前,有twemproxy和codis兩種方案,這兩個(gè)方案總體上來說都是依賴proxy來進(jìn)行分布式的,也就是說redis本身并不關(guān)心分布式的事情,而是交由twemproxy和codis來負(fù)責(zé)。而redis官方給出的cluster方案則是把分布式的這部分事情做到了每一個(gè)redis服務(wù)器中,使其不再需要其他的組件就可以獨(dú)立的完成分布式的要求。

我們這里不關(guān)心這些方案的優(yōu)略,我們關(guān)注一下這里的分布式到底是要處理那些事情?也就是twemproxy和codis獨(dú)立處理的處理分布式的這部分邏輯和cluster集成到redis服務(wù)的這部分邏輯到底在解決什么問題?

如我們前面所說的,一個(gè)分布式的服務(wù)在外界看來就像是一個(gè)集中式的服務(wù)一樣。那么要做到這一點(diǎn)就面臨著有一個(gè)問題需要解決:既是增加或減少分布式服務(wù)中的服務(wù)器的數(shù)量,對(duì)消費(fèi)這個(gè)服務(wù)的客戶端而言應(yīng)該是無感的;那么也就意味著客戶端不能穿透分布式服務(wù),把自己綁死到某一個(gè)臺(tái)的服務(wù)器上去,因?yàn)橐坏┤绱耍憔驮僖矡o法新增服務(wù)器,也無法進(jìn)行故障替換。

解決這個(gè)問題有兩個(gè)路子:

***個(gè)路子最直接,那就是我加一個(gè)中間層來隔離這種具體的依賴,即twemproxy采用的方式,讓所有的客戶端只能通過它來消費(fèi)redsi服務(wù),通過它來隔離這種依賴(但是你會(huì)發(fā)現(xiàn)twermproxy會(huì)成為一個(gè)單點(diǎn)),這種情況下每臺(tái)redis服務(wù)器都是獨(dú)立的,它們之間彼此不知對(duì)方的存在;

第二個(gè)路子是讓redis服務(wù)器知道彼此的存在,通過重定向的機(jī)制來引導(dǎo)客戶端來完成自己所需要的操作,比如客戶端鏈接到了某一個(gè)redis服務(wù)器,說我要執(zhí)行這個(gè)操作,redis服務(wù)器發(fā)現(xiàn)自己無法完成這個(gè)操作,那么就把能完成這個(gè)操作的服務(wù)器的信息給到客戶端,讓客戶端去請(qǐng)求另外的一個(gè)服務(wù)器,這時(shí)候你就會(huì)發(fā)現(xiàn)每一個(gè)redis服務(wù)器都需要保持一份完整的分布式服務(wù)器信息的一份資料,不然它怎么知道讓客戶端去找其他的哪個(gè)服務(wù)器來執(zhí)行客戶端想要的操作呢。

上面這一大段解釋了這么多,不知有沒有發(fā)現(xiàn)不管是***個(gè)路子還是第二個(gè)路子,都有一個(gè)共同的東西存在,那就是分布式服務(wù)中所有服務(wù)器以及其能提供的服務(wù)的信息。這些信息無論如何也是要存在的,區(qū)別在于***個(gè)路子是把這部分信息單獨(dú)來管理,用這些信息來協(xié)調(diào)后端的多個(gè)獨(dú)立的redis服務(wù)器;第二個(gè)路子則是讓每一個(gè)redis服務(wù)器都持有這份信息,彼此知道對(duì)方的存在,來達(dá)成和***個(gè)路子一樣的目的,優(yōu)點(diǎn)是不再需要一個(gè)額外的組件來處理這部分事情。

Redis Cluster的具體實(shí)現(xiàn)細(xì)節(jié)則是采用了Hash槽的概念,即預(yù)先分配出來16384個(gè)槽:在客戶端通過對(duì)Key進(jìn)行CRC16(key)% 16384運(yùn)算得到對(duì)應(yīng)的槽是哪一個(gè);在redis服務(wù)端則是每個(gè)服務(wù)器負(fù)責(zé)一部分槽,當(dāng)有新的服務(wù)器加入或者移除的時(shí)候,再來遷移這些槽以及其對(duì)應(yīng)的數(shù)據(jù),同時(shí)每個(gè)服務(wù)器都持有完整的槽和其對(duì)應(yīng)的服務(wù)器的信息,這就使得服務(wù)器端可以進(jìn)行對(duì)客戶端的請(qǐng)求進(jìn)行重定向處理。在Java技術(shù)棧微信公眾號(hào)后臺(tái)回復(fù)關(guān)鍵字:Redis,可以獲取更多棧長(zhǎng)整理的 Redis 技術(shù)干貨。

4.客戶端的Redis

上面的第三小節(jié)主要介紹的是Redis服務(wù)端的演進(jìn)步驟,解釋了Redis如何從一個(gè)單機(jī)的服務(wù),進(jìn)化為一個(gè)高可用的、去中心化的、分布式的存儲(chǔ)系統(tǒng)。這一小節(jié)則是關(guān)注下客戶端可以消費(fèi)的redis服務(wù)。

4.1 數(shù)據(jù)類型

redis支持豐富的數(shù)據(jù)類型,從最基礎(chǔ)的string到復(fù)雜的常用到的數(shù)據(jù)結(jié)構(gòu)都有支持:

string:最基本的數(shù)據(jù)類型,二進(jìn)制安全的字符串,***512M。

list:按照添加順序保持順序的字符串列表。

set:無序的字符串集合,不存在重復(fù)的元素。

sorted set:已排序的字符串集合。

hash:key-value對(duì)的一種集合。

bitmap:更細(xì)化的一種操作,以bit為單位。

hyperloglog:基于概率的數(shù)據(jù)結(jié)構(gòu)。

這些眾多的數(shù)據(jù)類型,主要是為了支持各種場(chǎng)景的需要,當(dāng)然每種類型都有不同的時(shí)間復(fù)雜度。其實(shí)這些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)相當(dāng)于之前我在《解讀REST》這個(gè)系列博客基于網(wǎng)絡(luò)應(yīng)用的架構(gòu)風(fēng)格中介紹到的遠(yuǎn)程數(shù)據(jù)訪問(Remote Data Access = RDA)的具體實(shí)現(xiàn),即通過在服務(wù)器上執(zhí)行一組標(biāo)準(zhǔn)的操作命令,在服務(wù)端之間得到想要的縮小后的結(jié)果集,從而簡(jiǎn)化客戶端的使用,也可以提高網(wǎng)絡(luò)性能。比如 如果沒有l(wèi)ist這種數(shù)據(jù)結(jié)構(gòu),你就只能把list存成一個(gè)string,客戶端拿到完整的list,操作后再完整的提交給redis,會(huì)產(chǎn)生很大的浪費(fèi)。

4.2 事務(wù)

上述數(shù)據(jù)類型中,每一個(gè)數(shù)據(jù)類型都有獨(dú)立的命令來進(jìn)行操作,很多情況下我們需要一次執(zhí)行不止一個(gè)命令,而且需要其同時(shí)成功或者失敗。redis對(duì)事務(wù)的支持也是源自于這部分需求,即支持一次性按順序執(zhí)行多個(gè)命令的能力,并保證其原子性。

4.3 Lua腳本

在事務(wù)的基礎(chǔ)上,如果我們需要在服務(wù)端一次性的執(zhí)行更復(fù)雜的操作(包含一些邏輯判斷),則lua就可以排上用場(chǎng)了(比如在獲取某一個(gè)緩存的時(shí)候,同時(shí)延長(zhǎng)其過期時(shí)間)。redis保證lua腳本的原子性,一定的場(chǎng)景下,是可以代替redis提供的事務(wù)相關(guān)的命令的。相當(dāng)于基于網(wǎng)絡(luò)應(yīng)用的架構(gòu)風(fēng)格中介紹到的遠(yuǎn)程求值(Remote Evluation = REV)的具體實(shí)現(xiàn)。

4.4 管道

因?yàn)閞edis的客戶端和服務(wù)器的連接時(shí)基于TCP的, 默認(rèn)每次連接都時(shí)只能執(zhí)行一個(gè)命令。管道則是允許利用一次連接來處理多條命令,從而可以節(jié)省一些tcp連接的開銷。管道和事務(wù)的差異在于管道是為了節(jié)省通信的開銷,但是并不會(huì)保證原子性。

4.5 分布式鎖

官方推薦采用Redlock算法,即使用string類型,加鎖的時(shí)候給的一個(gè)具體的key,然后設(shè)置一個(gè)隨機(jī)的值;取消鎖的時(shí)候用使用lua腳本來先執(zhí)行獲取比較,然后再刪除key。具體的命令如下:

  1. SET resource_name my_random_value NX PX 30000 
  2. if redis.call("get",KEYS[1]) == ARGV[1] then 
  3.  return redis.call("del",KEYS[1]) 
  4. else 
  5.  return 0 

總結(jié)

本篇著重從抽象層面來解釋下redis的各項(xiàng)功能以及其存在的目的,而沒有關(guān)心其具體的細(xì)節(jié)是什么。從而可以聚焦于其解決的問題,依據(jù)抽象層面的概念可以使得我們?cè)谔囟ǖ膱?chǎng)景下選擇更合適的方案,而非局限于其技術(shù)細(xì)節(jié)。

以上均是筆者個(gè)人的一些理解,如果不當(dāng)之處,歡迎指正。

參考

  • Redis 文檔:https://github.com/antirez/redis-doc
  • Redis 簡(jiǎn)介:https://redis.io/topics/introduction
  • Redis 持久化(Persistence):https://redis.io/topics/persistence
  • Redis 發(fā)布/訂閱(Pub/Sub):https://redis.io/topics/pubsub
  • Redis 哨兵(Sentinel):https://redis.io/topics/sentinel
  • Redis 復(fù)制(Replication):https://redis.io/topics/replication
  • Redis 集群(cluster):https://redis.io/topics/cluster-tutorial
  • RedIs 事務(wù)(Transaction):https://redis.io/topics/transactions
  • Redis 數(shù)據(jù)類型(data types):https://redis.io/topics/data-types-intro
  • Redis 分布式鎖:https://redis.io/topics/distlock
  • Redis 管道(pipelining ):https://redis.io/topics/pipelining
  • Redis Lua Script:https://redis.io/commands/eval
責(zé)任編輯:武曉燕 來源: 博客園
相關(guān)推薦

2020-11-02 13:25:45

Redis數(shù)據(jù)庫開源

2019-05-07 18:17:26

Redis服務(wù)器數(shù)據(jù)

2018-10-19 11:55:36

數(shù)據(jù)庫Redis命令

2014-10-10 13:46:33

Docker

2022-02-19 22:02:21

Redisvalue元素

2021-01-19 15:12:16

AI

2018-11-06 21:30:44

jQuery前端API

2023-05-31 07:32:37

2024-03-01 17:01:15

GraphQL后端

2023-10-08 07:15:54

NGINX網(wǎng)關(guān)參數(shù)

2013-03-04 10:10:36

WebKit瀏覽器

2024-12-09 09:30:00

適配器模式設(shè)計(jì)模式代碼

2018-03-15 15:51:40

戴爾

2019-10-23 09:00:06

Redis數(shù)據(jù)庫

2024-03-07 10:21:56

2022-04-08 10:15:29

VueReacHooks

2025-01-10 09:13:36

2010-10-17 13:42:28

云計(jì)算醫(yī)療平臺(tái)開發(fā)與測(cè)試

2024-01-10 17:04:13

通信模塊通信技術(shù)通信模組
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

国产91精品久久久久| 国产精品国产馆在线真实露脸 | 亚洲一区二区福利视频| 欧美日韩xx| 国产乱对白刺激视频不卡| 欧美日本黄视频| 成人免费毛片糖心| 榴莲视频成人app| 欧美性极品少妇精品网站| 免费日韩电影在线观看| 欧美高清videos高潮hd| 懂色av粉嫩av蜜乳av| 精品女同一区二区三区在线观看| 亚洲另类一区二区| 日本高清不卡一区二区三| 99热这里精品| 日韩国产成人精品| 色综合久久久888| 黄色免费一级视频| 亚洲网址在线观看| 欧美日韩一级大片网址| 国产一区二区四区| 欧美极品另类| 国产日韩精品一区二区三区 | 国产精品国产三级国产aⅴ原创 | 日本精品专区| 国产高清成人在线| 国产精品欧美风情| 久久久久久久久久久久久久av| 婷婷六月综合| 亚洲图片欧美日产| 日韩免费高清一区二区| 国产精久久久| 欧美亚洲国产bt| 国产高清精品在线观看| 爱看av在线入口| 亚洲你懂的在线视频| 秋霞在线观看一区二区三区| 日韩在线观看视频一区| 成人性生交大片免费看中文| 成人网址在线观看| 中文字幕1区2区3区| 久久久久欧美精品| 日本高清视频一区| 丁香六月婷婷综合| 午夜在线精品偷拍| 欧美性受xxxx白人性爽| 亚洲欧美在线视频免费| 亚洲电影av| 午夜精品久久久久久久99热| 精品在线免费观看视频| 欧美成人国产| 欧美贵妇videos办公室| 超碰手机在线观看| 欧美日韩精品| 国产+成+人+亚洲欧洲| 日本青青草视频| 国色天香一区二区| 国产69精品久久久| 五月婷婷中文字幕| 久久精品盗摄| 日韩女优在线播放| 黄色大全在线观看| 精油按摩中文字幕久久| 亚洲最大的网站| 性生活三级视频| 成人av电影在线| 乱色588欧美| 国产综合在线观看| 国产精品久久久久久久久快鸭 | 高清国产在线一区| www.xxx国产| av动漫一区二区| 欧美日韩亚洲综合一区二区三区激情在线| 久久精品国产亚洲a∨麻豆| 国产日韩精品一区二区三区| 中文字幕av日韩精品| 91高清在线观看视频| 亚洲成av人片在线| 中文字幕无码不卡免费视频| 日韩黄色碟片| 日韩欧美成人午夜| 国产伦精品一区二区三区妓女| 国产调教一区二区三区| 精品国内亚洲在观看18黄| 久久久久99精品成人片毛片| 国产精品久久久久久久免费软件| 国产精品久久久久久久久久ktv| 国产精品久久久久久无人区| 粉嫩av亚洲一区二区图片| 欧美精品123| 中文字幕在线观看日本| 亚洲一区二区欧美| 香蕉视频网站入口| 国产精品久久久久av蜜臀| 精品伊人久久97| 国产尤物在线播放| 亚洲经典自拍| 国产精品第2页| 亚洲乱色熟女一区二区三区| 国产日韩欧美制服另类| a天堂资源在线观看| 全球最大av网站久久| 欧美mv和日韩mv的网站| 日韩欧美黄色网址| 在线高清一区| 91精品中文在线| 免费一级毛片在线观看| 一区2区3区在线看| 午夜久久久精品| 天天操综合520| 欧美另类99xxxxx| 中文字幕人妻互换av久久| 成人黄色大片在线观看| 精品少妇人妻av一区二区| 中文字幕在线看片| 精品国产乱码久久| 日韩在线视频免费看| 天堂成人国产精品一区| 国产精品一区二区三区精品| 美女隐私在线观看| 欧洲国内综合视频| 人妻精品久久久久中文字幕| 国产精品红桃| 91最新国产视频| 天堂中文8资源在线8| 一本大道久久a久久精二百| 国产精品久久久久久在线观看| 天天综合网91| 国产区精品在线观看| 高清国产福利在线观看| 欧美性生交大片免费| av在线播放网址| 欧美日韩国产高清| 亚洲综合在线中文字幕| 老司机午夜在线视频| 欧美日韩亚洲综合在线 | 亚洲综合自拍网| 黄色成人av网站| av成人观看| 怡红院av在线| 欧美成人精品福利| 久青草免费视频| 丁香五精品蜜臀久久久久99网站 | eeuss鲁一区二区三区| 日韩无一区二区| 欧美被狂躁喷白浆精品| 精品一二线国产| 久久免费视频2| av一级久久| 久久6免费高清热精品| 精品国产av鲁一鲁一区| 亚洲精品成人天堂一二三| 伊人免费视频二| 欧美一区二区三区免费看| 国产日韩欧美视频| a级在线观看| 日韩精品一区二区三区三区免费 | 蜜臀久久久99精品久久久久久| 日韩偷拍一区二区| 欧美在线一级| 精品中文字幕在线2019| 国产综合视频在线| 黑人巨大精品欧美一区二区| 国产又爽又黄无码无遮挡在线观看| 久久国产精品99国产| 日本10禁啪啪无遮挡免费一区二区| 日韩成人av电影| 日韩中文第一页| 精品黑人一区二区三区国语馆| 亚洲一区成人在线| 黄色短视频在线观看| 丝袜亚洲另类丝袜在线| 中文字幕不卡每日更新1区2区| 91精品久久久久久综合五月天 | 午夜精品一区二| 国产精品国产自产拍在线| 少妇高潮一69aⅹ| 欧美中文字幕| 性欧美18一19内谢| 欧美日韩麻豆| 国产欧美精品在线| 999福利在线视频| 亚洲美女又黄又爽在线观看| 在线观看国产小视频| 亚洲国产欧美在线人成| 中文字幕第20页| 国产suv精品一区二区三区| 日韩网址在线观看| 中文字幕乱码亚洲无线精品一区| 精品无人乱码一区二区三区的优势| 日本精品裸体写真集在线观看| 欧美成人国产va精品日本一级| 亚洲AV成人无码一二三区在线| 欧美日韩一区二区三区在线| 国产精品成人免费一区二区视频| 国产片一区二区| 中文字幕1区2区| 秋霞国产午夜精品免费视频| 久久av综合网| 午夜免费一区| 蜜桃999成人看片在线观看| 亚洲欧洲二区| 国产99久久久欧美黑人| 免费电影视频在线看| 最新国产精品亚洲| 日本午夜在线视频| 日韩精品一区二区在线观看| 中文人妻熟女乱又乱精品| 午夜精品一区二区三区电影天堂| 成人一级黄色大片| 久久蜜臀中文字幕| 午夜不卡久久精品无码免费| 精品一区二区三区久久| 国产天堂在线播放| 亚洲日韩视频| 777久久精品一区二区三区无码| 凹凸成人精品亚洲精品密奴| 精品一区二区三区视频日产| 一区二区亚洲视频| 91免费福利视频| 国产成人福利夜色影视| 91精品国产91久久久久福利| 日本h片在线| 插插插亚洲综合网| 免费a在线看| 最近2019年中文视频免费在线观看| 性感美女福利视频| 亚洲成人久久电影| 亚洲第一免费视频| 日韩欧美一区在线| 国产欧美日韩综合精品一区二区三区| 欧美偷拍一区二区| 国产免费a视频| 色欧美日韩亚洲| 日韩人妻精品中文字幕| 污片在线观看一区二区| 久久精品视频6| 亚洲国产视频a| 99免费在线观看| 亚洲成人av福利| 在线免费观看毛片| 亚洲国产成人av| 日韩乱码一区二区| 欧美日韩精品在线| 中文在线第一页| 在线欧美小视频| 伊人精品一区二区三区| 欧美日韩日日摸| 97人妻一区二区精品免费视频| 欧美日韩国产高清一区| 亚洲综合免费视频| 欧美男女性生活在线直播观看| 91九色蝌蚪91por成人| 51精品国自产在线| 午夜精品久久久久久久爽 | 免费看美女视频在线网站| 中文字幕亚洲图片| 久cao在线| 欧美激情国产精品| 午夜不卡影院| 国产精品96久久久久久| 免费视频观看成人| 99re6热在线精品视频播放速度| 97青娱国产盛宴精品视频| 国产综合 伊人色| 国产精品一区二区三区av麻| 视频一区视频二区视频三区高| 天堂美国久久| 成年人看的毛片| 久久久久久穴| 久久久福利影院| 91在线国产福利| 99久久99久久精品免费看小说. | 中文字幕在线中文| 99香蕉国产精品偷在线观看 | 日韩av一二三区| 91国在线观看| 精品国产伦一区二区三| 亚洲美女动态图120秒| 免费黄色在线| 亚洲3p在线观看| 韩国精品视频在线观看 | 国产在线一二三区| 久久中文字幕在线| 新版的欧美在线视频| 成人国产精品一区二区| 精品自拍偷拍| 一区不卡视频| 亚洲一区二区毛片| 黄色aaaaaa| 久久夜色精品国产欧美乱极品| 亚洲欧美卡通动漫| 欧美日韩亚洲视频| 国产男男gay体育生白袜| 日韩精品免费视频| 制服丝袜中文字幕在线| 国产精品久久久久久久久| xvideos.蜜桃一区二区| 亚洲精品不卡| 久久都是精品| 俄罗斯黄色录像| 国产精品电影一区二区| 人妻 日韩精品 中文字幕| 欧美一二三四在线| a天堂在线资源| 91国产精品视频在线| 日韩欧美久久| 亚洲精品9999| 视频一区在线视频| 最近中文字幕无免费| 亚洲黄色免费网站| 91中文字幕在线播放| 亚洲欧美另类中文字幕| av岛国在线| 99re在线| 亚洲国产一区二区在线观看 | 免费网站在线观看视频| 久久国产婷婷国产香蕉| 五月天综合视频| 欧美日韩性生活视频| 亚洲精品久久久蜜桃动漫| 久久久久99精品久久久久| 成人自拍视频网| 欧美日本韩国一区二区三区| 亚洲经典自拍| 国产精品扒开腿做爽爽爽a片唱戏 亚洲av成人精品一区二区三区 | 精品国产人妻一区二区三区| 一区二区三区在线视频观看58 | 亚洲国产精品999| 五月婷婷视频在线观看| 成人美女av在线直播| 日韩久久电影| 五月婷婷六月合| 中文字幕免费在线观看视频一区| 综合网在线观看| 亚洲欧美成人精品| 美女福利一区二区三区| 久久青青草原| 噜噜爱69成人精品| 男人天堂av电影| 欧美性淫爽ww久久久久无| 国产视频福利在线| 国产精品激情av在线播放| 精品国产精品| www.夜夜爽| 亚洲人妖av一区二区| 国产成人免费看一级大黄| 欧美国产日韩中文字幕在线| 少妇精品在线| 免费不卡av在线| ww亚洲ww在线观看国产| 久久亚洲精品石原莉奈| 亚洲无av在线中文字幕| 激情久久一区二区| 最近看过的日韩成人| 国产精品资源在线看| 久久这里只有精品免费| 亚洲成人精品视频| 欧美三级精品| 亚洲欧美日韩精品在线| 韩国女主播成人在线观看| 农村黄色一级片| 日韩精品视频中文在线观看| 日本免费久久| 亚洲色图都市激情| 成人aaaa免费全部观看| 国产成人精品777777| 日韩在线欧美在线| 日韩精品一区国产| 男人天堂999| 国产精品久久国产精麻豆99网站| av老司机久久| 91福利视频在线观看| 日韩欧美1区| 95视频在线观看| 日本丰满少妇一区二区三区| 色网站免费在线观看| 国产精品视频免费一区二区三区 | 特黄特黄一级片| 天天综合网天天综合色| 9191在线观看| 国产精品区一区二区三含羞草| 噜噜噜91成人网| 欧美日韩亚洲国产另类| 亚洲精品视频中文字幕| 国产精品美女久久久久人| 91成人在线观看喷潮教学| 国产精品久久久久久久岛一牛影视 | 久久夜夜久久| 一区二区视频在线观看| 成人看片黄a免费看在线| 久草视频在线免费| 欧美第一淫aaasss性| 欧美精选视频在线观看| 娇妻高潮浓精白浆xxⅹ| 欧美猛男超大videosgay| 三妻四妾完整版在线观看电视剧 | 顶臀精品视频www| 亚洲精品丝袜日韩|