久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

Redis面試高頻考點(diǎn)全解析:從數(shù)據(jù)結(jié)構(gòu)到分布式鎖的復(fù)習(xí)體系

Redis面試高頻考點(diǎn)全解析:從數(shù)據(jù)結(jié)構(gòu)到分布式鎖的復(fù)習(xí)體系 8月準(zhǔn)備Java面試Redis這一塊是繞不開的高頻考點(diǎn)。無論是校招還是社招Redis 都是面試官最喜歡深挖的方向它不像 MySQL 那樣以背 SQL 為主而是可以通過數(shù)據(jù)結(jié)構(gòu)、緩存設(shè)計(jì)、分布式鎖、集群方案層層遞進(jìn)地考察候選人的實(shí)戰(zhàn)能力。網(wǎng)上關(guān)于 Redis 面試題的資料很零散不少文章只給結(jié)論不給原理看完記住結(jié)論面試官多問一句“為什么”就容易露餡。這篇文章會(huì)把 Redis 面試中最核心的知識(shí)點(diǎn)整理成一套完整的復(fù)習(xí)體系按照“概念-數(shù)據(jù)結(jié)構(gòu)-持久化-緩存問題-分布式鎖-集群-排錯(cuò)-復(fù)習(xí)路線”的順序展開。每部分都會(huì)給出面試中高頻的問題、標(biāo)準(zhǔn)的回答思路、容易踩的坑以及配套的命令和代碼示例。不管你是剛開始準(zhǔn)備面試還是已經(jīng)進(jìn)入沖刺階段都可以直接對(duì)照這篇文章查漏補(bǔ)缺。先把這份內(nèi)容存下面試前翻一遍確實(shí)能少走很多彎路。1. 先搞清楚 Redis 在面試中到底考什么1.1 Redis 是什么為什么面試必考RedisRemote Dictionary Server是一個(gè)基于內(nèi)存的鍵值型 NoSQL 數(shù)據(jù)庫(kù)。它的核心特點(diǎn)是所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中所以讀寫速度非??旃俜浇o出的基準(zhǔn)測(cè)試中單實(shí)例 QPS 可以達(dá)到 10 萬(wàn)級(jí)別。同時(shí)它支持持久化、過期策略、發(fā)布訂閱、事務(wù)、Lua 腳本、分布式鎖、集群擴(kuò)展等豐富的功能所以在互聯(lián)網(wǎng)項(xiàng)目中Redis 主要用于緩存、會(huì)話共享、排行榜、分布式鎖、消息隊(duì)列等場(chǎng)景。面試中考察 Redis本質(zhì)上是從三個(gè)維度進(jìn)行面試者是否掌握 Redis 的數(shù)據(jù)模型和常用命令。面試者是否理解 Redis 的底層機(jī)制比如持久化、淘汰策略、線程模型。面試者是否具備在真實(shí)項(xiàng)目中解決緩存問題、設(shè)計(jì)分布式方案的能力。這三個(gè)維度由淺入深正好對(duì)應(yīng)面試官追問的節(jié)奏。如果只是背題不深入很容易在追問環(huán)節(jié)被識(shí)別出來。1.2 Redis 和 MySQL 有什么區(qū)別這是面試開場(chǎng)高頻題。標(biāo)準(zhǔn)的回答思路是MySQL 是關(guān)系型數(shù)據(jù)庫(kù)數(shù)據(jù)存儲(chǔ)在磁盤上支持復(fù)雜的 SQL 查詢、事務(wù) ACID、表關(guān)聯(lián)。Redis 是基于內(nèi)存的鍵值存儲(chǔ)讀寫速度快但一般不作為唯一數(shù)據(jù)源而是作為緩存層加速訪問。Redis 支持的數(shù)據(jù)類型更豐富如 String、Hash、List、Set、ZSet每種類型都有自己的適用場(chǎng)景。MySQL 的數(shù)據(jù)一致性由事務(wù)保證Redis 在持久化上存在丟數(shù)據(jù)的可能取決于持久化策略所以兩者一般是配合使用?;卮饡r(shí)要強(qiáng)調(diào)“Redis 不是用來替代 MySQL 的而是為了提升系統(tǒng)的讀取性能”。如果面試官問“為什么不直接用 Redis 存所有數(shù)據(jù)”可以從成本、內(nèi)存容量、事務(wù)能力、持久化能力等方面回答。1.3 Redis 為什么快這個(gè)問題基本必問回答要點(diǎn)可以歸納為四點(diǎn)純內(nèi)存操作。數(shù)據(jù)放在內(nèi)存中讀寫不涉及磁盤 IO。單線程模型。Redis 網(wǎng)絡(luò)請(qǐng)求處理使用單線程避免了多線程上下文切換和鎖競(jìng)爭(zhēng)的開銷。注意Redis 6.0 之后引入了多線程 IO但核心命令執(zhí)行仍然是單線程的。IO 多路復(fù)用。Redis 基于 epoll 實(shí)現(xiàn) IO 多路復(fù)用可以在一個(gè)線程里處理多個(gè)連接的讀寫事件。高效的數(shù)據(jù)結(jié)構(gòu)。Redis 底層使用 SDS、跳表、壓縮列表、哈希表等高效結(jié)構(gòu)在不同數(shù)據(jù)量和場(chǎng)景下自動(dòng)選擇最優(yōu)編碼。面試官可能會(huì)追問“單線程為什么還這么快”核心原因就是 CPU 不是瓶頸內(nèi)存和網(wǎng)絡(luò)的 IO 才是瓶頸而單線程避免了鎖和上下文切換。2. Redis 核心數(shù)據(jù)結(jié)構(gòu)與常見面試問題2.1 String 字符串String 是 Redis 最基礎(chǔ)的數(shù)據(jù)類型value 最大能存儲(chǔ) 512MB。底層實(shí)現(xiàn)是 SDSSimple Dynamic String相比 C 字符串SDS 可以 O(1) 獲取長(zhǎng)度、避免緩沖區(qū)溢出、減少內(nèi)存重分配次數(shù)。常用命令SET key value GET key INCR key DECR key EXPIRE key seconds SETEX key seconds valueString 的典型應(yīng)用場(chǎng)景緩存用戶信息、配置數(shù)據(jù)。計(jì)數(shù)器如點(diǎn)贊數(shù)、訪問量。分布式 ID 生成利用 INCR 命令生成遞增序列。分布式鎖的SET key value NX EX也是基于 String 實(shí)現(xiàn)的。面試題舉例“String 的底層實(shí)現(xiàn)是什么和傳統(tǒng) C 字符串有什么不同”回答時(shí)把 SDS 的動(dòng)態(tài)擴(kuò)容、二進(jìn)制安全、獲取長(zhǎng)度 O(1) 這三個(gè)特點(diǎn)說出來即可。2.2 Hash 哈希Hash 類型是一個(gè) string 類型的 field 和 value 的映射表適合存儲(chǔ)對(duì)象數(shù)據(jù)。比如一個(gè)用戶對(duì)象包含 id、name、age如果用 String 存儲(chǔ)需要序列化整個(gè)對(duì)象更新某個(gè)字段要重新寫入整個(gè)對(duì)象用 Hash 則可以直接更新某個(gè)字段。常用命令HSET user:1001 name zhangsan HGET user:1001 name HGETALL user:1001 HDEL user:1001 name HINCRBY user:1001 age 1Hash 底層在數(shù)據(jù)量小的時(shí)候使用壓縮列表ziplist數(shù)據(jù)量大時(shí)轉(zhuǎn)為哈希表hashtable。因?yàn)?Redis 3.2 之后引入了 listpack不同版本的編碼細(xì)節(jié)略有差異但面試中掌握“小數(shù)據(jù)量壓縮存儲(chǔ)、大數(shù)據(jù)量哈希表”這個(gè)思路就夠了。面試題舉例“Hash 和 String 都存對(duì)象怎么選”一般推薦對(duì)象字段頻繁修改、只需要部分字段時(shí)用 Hash對(duì)象整體讀取、轉(zhuǎn)發(fā)給前端時(shí)用 String JSON 更省內(nèi)存且直觀。2.3 List 列表List 是簡(jiǎn)單的字符串列表按照插入順序排序可以從頭部或尾部添加元素。底層在元素少時(shí)使用壓縮列表元素多時(shí)轉(zhuǎn)為雙向鏈表quicklist 是 Redis 3.2 之后引入的混合結(jié)構(gòu)。常用命令LPUSH key value [value ...] RPUSH key value [value ...] LPOP key RPOP key LRANGE key start stop LLEN key典型應(yīng)用場(chǎng)景消息隊(duì)列LPUSH BRPOP 實(shí)現(xiàn)簡(jiǎn)單的生產(chǎn)消費(fèi)模型。最新動(dòng)態(tài)列表用 LPUSH 把新數(shù)據(jù)放到頭部用 LRANGE 分頁(yè)查詢。時(shí)間線列表關(guān)注的人發(fā)布動(dòng)態(tài)后推送到自己的 List 中。面試題舉例“List 和 Stream 做消息隊(duì)列有什么區(qū)別”List 結(jié)構(gòu)簡(jiǎn)單但無法支持消費(fèi)組、消息確認(rèn)等特性Redis Stream5.0 引入支持消費(fèi)者組、消息持久化、ACK 確認(rèn)更適合可靠性要求更高的場(chǎng)景。2.4 Set 集合Set 是無序、不可重復(fù)的字符串集合。集合操作支持交集、并集、差集這是它在業(yè)務(wù)中最大的價(jià)值。常用命令SADD key member [member ...] SMEMBERS key SREM key member SISMEMBER key member SINTER key1 key2 # 交集 SUNION key1 key2 # 并集 SDIFF key1 key2 # 差集典型應(yīng)用場(chǎng)景抽獎(jiǎng)去重用戶參與抽獎(jiǎng)SADD 時(shí)自動(dòng)去重。共同關(guān)注用 SINTER 獲取兩個(gè)用戶的共同關(guān)注列表。標(biāo)簽系統(tǒng)給文章打標(biāo)簽用 SMEMBERS 查詢標(biāo)簽用 SINTER 查同時(shí)包含多個(gè)標(biāo)簽的文章。2.5 ZSet 有序集合ZSet 在 Set 的基礎(chǔ)上給每個(gè)成員增加了一個(gè) score分值Redis 根據(jù) score 自動(dòng)排序。底層實(shí)現(xiàn)是跳表skiplist加哈希表。常用命令ZADD key score member ZRANGE key start stop ZREVRANGE key start stop ZSCORE key member ZINCRBY key increment member ZRANK key member典型應(yīng)用場(chǎng)景排行榜。比如游戲積分排行榜、商品銷量榜用 ZINCRBY 增加分?jǐn)?shù)用 ZREVRANGE 獲取 Top N。延遲隊(duì)列。把任務(wù)執(zhí)行時(shí)間作為 score用一個(gè)線程輪詢 ZRANGEBYSCORE 獲取到期的任務(wù)?;瑒?dòng)窗口限流。用 score 存時(shí)間戳通過 ZRANGEBYSCORE 統(tǒng)計(jì)時(shí)間窗口內(nèi)的請(qǐng)求數(shù)。面試中經(jīng)常追問“ZSet 的底層結(jié)構(gòu)為什么用跳表而不是紅黑樹”回答要點(diǎn)跳表實(shí)現(xiàn)簡(jiǎn)單、支持范圍查詢、在有序集合的場(chǎng)景下性能足夠O(log N)而且跳表更適合做范圍查找ZSet 的核心操作就是按分?jǐn)?shù)范圍取數(shù)據(jù)。2.6 其他高級(jí)數(shù)據(jù)類型面試加分項(xiàng)Bitmap位圖用位操作存儲(chǔ)布爾型數(shù)據(jù)典型場(chǎng)景是用戶簽到、在線狀態(tài)。HyperLogLog去重計(jì)數(shù)內(nèi)存極小適合統(tǒng)計(jì) UV。GEO地理位置存儲(chǔ)適合“附近的人”功能。Stream可靠消息隊(duì)列支持消費(fèi)者組。這部分可以展示知識(shí)廣度面試官如果追問能說出“GEO 底層基于 ZSet 實(shí)現(xiàn)每個(gè)位置的經(jīng)緯度會(huì)被編碼為 score”這種程度就夠用了。3. Redis 持久化機(jī)制RDB 和 AOF3.1 為什么需要持久化Redis 是內(nèi)存型數(shù)據(jù)庫(kù)如果進(jìn)程異常退出或服務(wù)器宕機(jī)內(nèi)存中的數(shù)據(jù)會(huì)全部丟失。持久化的目的就是把內(nèi)存中的數(shù)據(jù)保存到磁盤上使 Redis 重啟時(shí)能夠恢復(fù)數(shù)據(jù)。面試中問到持久化通常圍繞兩個(gè)問題RDB 和 AOF 分別是什么如何選擇3.2 RDB 快照持久化RDBRedis DataBase是在指定時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤生成一個(gè)二進(jìn)制的 dump.rdb 文件。觸發(fā)方式# 手動(dòng)觸發(fā) SAVE BGSAVE # 自動(dòng)觸發(fā)在 redis.conf 中配置 save 900 1 save 300 10 save 60 10000SAVE 會(huì)阻塞 Redis 主進(jìn)程BGSAVE 會(huì) fork 子進(jìn)程來生成 RDB主進(jìn)程繼續(xù)處理命令。面試中需要說清楚RDB 的優(yōu)點(diǎn)是文件緊湊、恢復(fù)速度快、適合做備份和災(zāi)難恢復(fù)缺點(diǎn)是可能丟失最后一次快照之后的數(shù)據(jù)同時(shí) fork 子進(jìn)程在大數(shù)據(jù)量下會(huì)有短暫的阻塞。3.3 AOF 追加持久化AOFAppend Of File會(huì)把每次寫命令追加到 aof 文件末尾。Redis 重啟時(shí)通過重新執(zhí)行 AOF 文件中的命令來恢復(fù)數(shù)據(jù)。AOF 默認(rèn)是關(guān)閉的開啟配置appendonly yes appendfilename appendonly.aof appendfsync always appendfsync everysec appendfsync no配置項(xiàng)說明always每次寫入都同步到磁盤數(shù)據(jù)最安全性能最差。everysec每秒同步一次最多丟失 1 秒數(shù)據(jù)是推薦配置。no由操作系統(tǒng)決定什么時(shí)候同步性能好但安全性不可控。為了避免 AOF 文件過大Redis 提供了 AOF 重寫機(jī)制通過BGREWRITEAOF命令或自動(dòng)觸發(fā)用盡可能少的命令來記錄當(dāng)前數(shù)據(jù)集。3.4 RDB 和 AOF 怎么選對(duì)比項(xiàng)RDBAOF文件大小二進(jìn)制壓縮文件小記錄寫命令文件較大恢復(fù)速度快較慢數(shù)據(jù)安全性可能丟較多數(shù)據(jù)最多丟 1 秒everysec對(duì)性能影響fork 子進(jìn)程可能瞬間阻塞寫頻率高時(shí)影響較大生產(chǎn)環(huán)境常用的方案是同時(shí)開啟 RDB 和 AOF。Redis 優(yōu)先使用 AOF 恢復(fù)數(shù)據(jù)因?yàn)?AOF 數(shù)據(jù)更完整同時(shí)利用 RDB 做定期備份。如果對(duì)數(shù)據(jù)丟失容忍度很低必須開啟 AOF 并設(shè)置 appendfsync everysec。4. 緩存設(shè)計(jì)穿透、擊穿、雪崩與解決方案4.1 緩存穿透緩存穿透是指查詢一個(gè)不存在的數(shù)據(jù)緩存中沒有數(shù)據(jù)庫(kù)中也沒有導(dǎo)致每次請(qǐng)求都直接打到數(shù)據(jù)庫(kù)。如果有惡意攻擊者持續(xù)構(gòu)造不存在的 key數(shù)據(jù)庫(kù)壓力驟增。解決方案緩存空值查詢結(jié)果為空也緩存設(shè)置較短的過期時(shí)間。布隆過濾器把所有可能存在的數(shù)據(jù)哈希到一個(gè) bitmap 中請(qǐng)求先經(jīng)過布隆過濾器過濾掉大部分不存在的 key。參數(shù)校驗(yàn)在接口層攔截明顯不合法的請(qǐng)求。示例代碼緩存空值使用 Spring Data Redispublic Object getData(String key) { Object value redisTemplate.opsForValue().get(key); if (value ! null) { return value; } // 模擬從數(shù)據(jù)庫(kù)查詢 Object dbValue queryFromDB(key); if (dbValue null) { // 緩存空值防止穿透過期時(shí)間設(shè)置短一些 redisTemplate.opsForValue().set(key, , 60, TimeUnit.SECONDS); } else { redisTemplate.opsForValue().set(key, dbValue, 30, TimeUnit.MINUTES); } return dbValue; }4.2 緩存擊穿緩存擊穿是指某個(gè)熱點(diǎn) key 剛好在過期時(shí)間失效此時(shí)大量并發(fā)請(qǐng)求同時(shí)查詢這個(gè) key緩存未命中請(qǐng)求全部打到數(shù)據(jù)庫(kù)。解決方案互斥鎖只允許一個(gè)線程查數(shù)據(jù)庫(kù)并重建緩存其他線程等待。邏輯過期緩存中不設(shè)置物理過期時(shí)間而是存儲(chǔ)一個(gè)邏輯過期時(shí)間字段查詢時(shí)判斷是否過期如果過期則異步重建緩存。熱點(diǎn)數(shù)據(jù)永不過期在 value 中保存過期時(shí)間業(yè)務(wù)層判斷后異步更新。這里給出基于互斥鎖的簡(jiǎn)化示例public String getHotData(String key) { String value redisTemplate.opsForValue().get(key); if (value ! null) { return value; } String lockKey lock: key; boolean locked redisTemplate.opsForValue().setIfAbsent(lockKey, 1, 3, TimeUnit.SECONDS); if (locked) { try { value queryFromDB(key); redisTemplate.opsForValue().set(key, value, 30, TimeUnit.MINUTES); return value; } finally { redisTemplate.delete(lockKey); } } else { // 等待其他線程寫入緩存 try { Thread.sleep(100); } catch (InterruptedException e) { Thread.currentThread().interrupt(); } return getHotData(key); } }互斥鎖方案簡(jiǎn)單有效代價(jià)是緩存重建期間有少量線程等待。實(shí)際項(xiàng)目中要重點(diǎn)關(guān)注鎖的釋放避免因異常導(dǎo)致鎖無法釋放。4.3 緩存雪崩緩存雪崩是指大量 key 在同一時(shí)間失效或者 Redis 服務(wù)宕機(jī)導(dǎo)致所有請(qǐng)求直接打到數(shù)據(jù)庫(kù)。解決方案過期時(shí)間隨機(jī)化在設(shè)置過期時(shí)間時(shí)加上一個(gè)隨機(jī)值避免同一時(shí)間大面積失效。Redis 集群高可用使用主從復(fù)制、哨兵或 Cluster 模式避免單點(diǎn)故障。多級(jí)緩存本地緩存如 Caffeine Redis 緩存即使 Redis 不可用本地緩存也能扛一部分流量。服務(wù)降級(jí)在數(shù)據(jù)庫(kù)層增加限流和降級(jí)策略保護(hù)數(shù)據(jù)庫(kù)不被壓垮。面試中更好的回答是“緩存雪崩的重點(diǎn)不是如何保證 Redis 不宕機(jī)而是要在 Redis 不可用或緩存大規(guī)模失效時(shí)系統(tǒng)依然能通過降級(jí)、限流、多級(jí)緩存等手段保持可用?!?.4 緩存一致性問題只要用 Redis 做緩存就繞不開“緩存和數(shù)據(jù)庫(kù)數(shù)據(jù)不一致”的問題。常見的方案Cache Aside Pattern旁路緩存讀的時(shí)候先讀緩存緩存沒有則讀數(shù)據(jù)庫(kù)并回填寫的時(shí)候先更新數(shù)據(jù)庫(kù)再刪除緩存。延遲雙刪更新數(shù)據(jù)庫(kù)后刪除緩存等一段時(shí)間再次刪除避免并發(fā)下讀到舊數(shù)據(jù)。基于 Canal 監(jiān)聽 MySQL binlog異步更新緩存。面試中不要只說一個(gè)方案要能分析利弊。比較推薦的回答一般業(yè)務(wù)采用 Cache Aside 模式更新時(shí)“先更新數(shù)據(jù)庫(kù)再刪除緩存”如果要求更高的一致性可以引入分布式事務(wù)或 binlog 異步同步但這會(huì)增加系統(tǒng)復(fù)雜度需要根據(jù)業(yè)務(wù)權(quán)衡。5. Redis 分布式鎖5.1 為什么要用分布式鎖在分布式系統(tǒng)中多個(gè)服務(wù)實(shí)例同時(shí)操作共享資源時(shí)Java 的synchronized和ReentrantLock只能鎖住當(dāng)前 JVM 內(nèi)的線程無法跨進(jìn)程互斥。分布式鎖就是讓多個(gè)進(jìn)程之間通過 Redis 實(shí)現(xiàn)互斥訪問。5.2 基于 Redis 實(shí)現(xiàn)分布式鎖的演進(jìn)最早的方案是使用SETNX加鎖然后EXPIRE設(shè)置過期時(shí)間但這兩個(gè)命令不是原子的如果在 SETNX 之后、EXPIRE 之前進(jìn)程崩潰鎖就會(huì)永遠(yuǎn)不釋放。后來 Redis 官方推薦使用SET key value NX EX seconds一條命令完成加鎖和過期時(shí)間設(shè)置。加鎖命令SET lock:order:1001 uuid_value NX EX 30釋放鎖時(shí)不能直接DEL因?yàn)槿绻i已經(jīng)過期另一個(gè)線程獲取了同一把鎖當(dāng)前線程再執(zhí)行 DEL 就會(huì)誤刪別人的鎖。所以釋放鎖需要先比較 value 是否還是自己的再刪除這個(gè)過程要用 Lua 腳本保證原子性-- 釋放鎖的 Lua 腳本 if redis.call(get, KEYS[1]) ARGV[1] then return redis.call(del, KEYS[1]) else return 0 endJava 中通過 Spring Data Redis 執(zhí)行 Lua 腳本private static final String UNLOCK_SCRIPT if redis.call(get, KEYS[1]) ARGV[1] then return redis.call(del, KEYS[1]) else return 0 end; public void unlock(String lockKey, String requestId) { DefaultRedisScriptLong script new DefaultRedisScript(UNLOCK_SCRIPT, Long.class); redisTemplate.execute(script, Arrays.asList(lockKey), requestId); }5.3 Redisson 與看門狗機(jī)制手寫分布式鎖需要處理各種邊界條件生產(chǎn)環(huán)境推薦使用 Redisson。Redisson 提供了RLock內(nèi)部通過 Lua 腳本實(shí)現(xiàn)加鎖、解鎖、重入還提供了看門狗機(jī)制如果鎖的持有者沒有顯式釋放鎖看門狗會(huì)每隔一段時(shí)間自動(dòng)續(xù)期防止業(yè)務(wù)沒執(zhí)行完鎖就過期了。RLock lock redissonClient.getLock(lock:order:1001); try { // 嘗試加鎖最多等待 5 秒鎖有效期默認(rèn) 30 秒看門狗會(huì)自動(dòng)續(xù)期 if (lock.tryLock(5, TimeUnit.SECONDS)) { // 業(yè)務(wù)邏輯 } } finally { if (lock.isHeldByCurrentThread()) { lock.unlock(); } }5.4 RedLock 有必要用嗎RedLock 是 Redis 官方提出的多節(jié)點(diǎn)分布式鎖算法要求向多個(gè)獨(dú)立的 Redis 主節(jié)點(diǎn)加鎖超過半數(shù)成功才算加鎖成功。面試中經(jīng)常被問到但實(shí)際項(xiàng)目中較少使用因?yàn)?RedLock 依賴時(shí)鐘同步、網(wǎng)絡(luò)延遲實(shí)現(xiàn)復(fù)雜且在多主切換下仍存在一致性問題。推薦回答思路“單節(jié)點(diǎn) Redis 鎖 Redisson 的看門狗在絕大多數(shù)業(yè)務(wù)中已經(jīng)夠用如果要更強(qiáng)的安全性優(yōu)先考慮 ZooKeeper 或 etcd 的分布式鎖而不是 RedLock?!?. Redis 集群與可用性6.1 主從復(fù)制Redis 主從復(fù)制是指一臺(tái)主節(jié)點(diǎn)Master將數(shù)據(jù)同步到多臺(tái)從節(jié)點(diǎn)Slave實(shí)現(xiàn)讀寫分離和容災(zāi)。主節(jié)點(diǎn)負(fù)責(zé)寫操作從節(jié)點(diǎn)負(fù)責(zé)讀操作數(shù)據(jù)由主節(jié)點(diǎn)單向同步到從節(jié)點(diǎn)。順序上主從復(fù)制分為兩個(gè)階段全量復(fù)制從節(jié)點(diǎn)首次同步時(shí)主節(jié)點(diǎn)生成 RDB 快照并發(fā)送給從節(jié)點(diǎn)。增量復(fù)制后續(xù)主節(jié)點(diǎn)把寫命令發(fā)送給從節(jié)點(diǎn)。從節(jié)點(diǎn)斷開重連后主節(jié)點(diǎn)通過復(fù)制積壓緩沖區(qū)同步斷連期間的數(shù)據(jù)。配置方式# 從節(jié)點(diǎn)配置 replicaof 127.0.0.1 63796.2 哨兵模式主從復(fù)制解決了數(shù)據(jù)備份和讀寫分離但主節(jié)點(diǎn)宕機(jī)后需要人工把某個(gè)從節(jié)點(diǎn)提升為主節(jié)點(diǎn)。哨兵Sentinel可以自動(dòng)監(jiān)控主節(jié)點(diǎn)和從節(jié)點(diǎn)的健康狀態(tài)在主節(jié)點(diǎn)故障時(shí)自動(dòng)完成故障轉(zhuǎn)移從剩余從節(jié)點(diǎn)中選舉新的主節(jié)點(diǎn)。哨兵的關(guān)鍵作用監(jiān)控檢查主從節(jié)點(diǎn)的運(yùn)行狀態(tài)。通知節(jié)點(diǎn)故障時(shí)通知其他實(shí)例。自動(dòng)故障轉(zhuǎn)移主節(jié)點(diǎn)不可用時(shí)自動(dòng)選舉新的主節(jié)點(diǎn)。配置中心客戶端通過哨兵獲取當(dāng)前主節(jié)點(diǎn)地址。6.3 Cluster 集群模式Redis Cluster 是 Redis 3.0 引入的分布式解決方案能夠?qū)?shù)據(jù)自動(dòng)分片到多個(gè)節(jié)點(diǎn)上每個(gè)節(jié)點(diǎn)保存一部分?jǐn)?shù)據(jù)。Redis Cluster 采用無中心化架構(gòu)節(jié)點(diǎn)之間通過 Gossip 協(xié)議通信。分片原理整個(gè)數(shù)據(jù)空間被劃分為 16384 個(gè)哈希槽slot。每個(gè)節(jié)點(diǎn)負(fù)責(zé)一部分 slot例如三主節(jié)點(diǎn)分別負(fù)責(zé) 0~5460、5461~10922、10923~16383。計(jì)算 key 的 CRC16 值然后對(duì) 16384 取模得到該 key 應(yīng)該存儲(chǔ)到哪個(gè) slot。Cluster 模式的優(yōu)勢(shì)是支持水平擴(kuò)展性能隨節(jié)點(diǎn)增加而提升。需要注意的坑是 Cluster 模式下不支持多 key 操作除非這些 key 在同一個(gè) slot因此需要使用 Hash Tag 技術(shù)讓相關(guān) key 落到同一個(gè)槽位。面試常見問題“為什么 Redis Cluster 是 16384 個(gè)槽”常見的解釋是16384 個(gè)槽在保證數(shù)據(jù)分布均勻的同時(shí)可以使節(jié)點(diǎn)間心跳消息中的位圖更小減少帶寬消耗且對(duì)于常用規(guī)模的集群已經(jīng)足夠。6.4 一致性哈希和哈希槽可能被追問“Redis 為什么不用一致性哈?!?。一致性哈希是分布式緩存中常用的分片算法如 Memcached但 Redis Cluster 選擇哈希槽的原因主要有哈希槽將數(shù)據(jù)分成固定數(shù)量的槽位節(jié)點(diǎn)增減時(shí)只需要遷移部分槽位數(shù)據(jù)遷移范圍可控。槽位和節(jié)點(diǎn)的映射關(guān)系明確客戶端可以精確計(jì)算 key 所在節(jié)點(diǎn)。數(shù)據(jù)遷移時(shí)是以槽為單位進(jìn)行操作粒度更清晰。7. Redis 內(nèi)存淘汰與常見問題排查7.1 過期刪除策略Redis 的過期刪除策略是“惰性刪除 定期刪除”的結(jié)合惰性刪除訪問 key 時(shí)檢查是否過期過期則刪除。優(yōu)點(diǎn)是不占用額外 CPU缺點(diǎn)是過期 key 可能長(zhǎng)期占用內(nèi)存。定期刪除Redis 每隔一段時(shí)間隨機(jī)抽取一部分設(shè)置了過期時(shí)間的 key刪除其中已過期的 key。7.2 內(nèi)存淘汰策略當(dāng) Redis 內(nèi)存達(dá)到maxmemory限制后會(huì)根據(jù)配置的maxmemory-policy進(jìn)行淘汰。常見配置項(xiàng)策略含義noeviction不淘汰寫入時(shí)報(bào)錯(cuò)allkeys-lru從所有 key 中按 LRU 淘汰volatile-lru從設(shè)置了過期時(shí)間的 key 中按 LRU 淘汰allkeys-lfu從所有 key 中按 LFU 淘汰volatile-lfu從設(shè)置了過期時(shí)間的 key 中按 LFU 淘汰allkeys-random從所有 key 中隨機(jī)淘汰volatile-ttl從設(shè)置了過期時(shí)間且剩余時(shí)間最短的 key 中淘汰面試中回答“生產(chǎn)環(huán)境推薦哪種策略”時(shí)不要直接說“用 allkeys-lru”。正確的思路是優(yōu)先給每個(gè) key 設(shè)置合理的過期時(shí)間根據(jù)業(yè)務(wù)是否允許緩存丟失決定使用 volatile-lru 還是 allkeys-lru如果業(yè)務(wù)數(shù)據(jù)要求嚴(yán)格不淘汰則使用 noeviction 并做好告警。7.3 內(nèi)存不足報(bào)錯(cuò) OutOfMemoryErrorJVM 項(xiàng)目和 Redis 都會(huì)出現(xiàn)內(nèi)存不足的報(bào)錯(cuò)。熱詞中出現(xiàn)的java: outofmemoryerror: insufficient memory屬于 JVM 啟動(dòng)時(shí)內(nèi)存不足常見原因是啟動(dòng) JVM 時(shí)指定的 -Xmx 大于物理內(nèi)存。服務(wù)器內(nèi)存被其他進(jìn)程占用剩余可用內(nèi)存不足。系統(tǒng)沒有足夠交換空間。排查方法# 查看系統(tǒng)內(nèi)存 free -h # 查看 Java 進(jìn)程內(nèi)存占用 ps aux | grep java jmap -heap pid如果 Redis 本身內(nèi)存不足可以檢查maxmemory配置、大 key、連接數(shù)、內(nèi)存碎片率必要時(shí)擴(kuò)容或清理大 key。7.4 連接失敗和超時(shí)Redis 連接失敗通常表現(xiàn)為ERR max number of clients reached或RedisConnectionFailureException。排查思路檢查 Redis 服務(wù)是否啟動(dòng)redis-cli ping。檢查端口連通性telnet 127.0.0.1 6379。檢查客戶端最大連接數(shù)配置CONFIG GET maxclients。檢查防火墻和遠(yuǎn)程訪問配置bind、protected-mode。檢查業(yè)務(wù)代碼是否存在連接池泄漏用完連接沒有釋放。Spring Boot 中可以通過配置連接池參數(shù)優(yōu)化spring.redis.hostlocalhost spring.redis.port6379 spring.redis.lettuce.pool.max-active50 spring.redis.lettuce.pool.max-idle20 spring.redis.lettuce.pool.min-idle5 spring.redis.lettuce.pool.max-wait3000ms7.5 熱詞背后的 Redis 高頻面試題庫(kù)根據(jù)搜索熱詞高頻被搜的還有redis 下載、windows 安裝 redis、docker 安裝 redis 主從、redis desktop manager 可視化客戶端、redis 緩存治理。這些屬于環(huán)境搭建和運(yùn)維工具建議在復(fù)習(xí)基礎(chǔ)知識(shí)的同時(shí)把本機(jī)環(huán)境搭好用 Redis Desktop Manager 或 Another Redis Desktop Manager 連一次能加深對(duì) Redis 數(shù)據(jù)結(jié)構(gòu)的印象。8. 三天沖刺計(jì)劃與復(fù)習(xí)建議8.1 第 1 天數(shù)據(jù)結(jié)構(gòu)與基礎(chǔ)命令把 String、Hash、List、Set、ZSet 的常用命令全部敲一遍。理解每個(gè)類型的底層編碼和適用場(chǎng)景。用 Spring Data Redis 寫一個(gè)增刪改查的小 Demo。當(dāng)天結(jié)束前完成自測(cè)能默寫每種數(shù)據(jù)類型至少兩個(gè)應(yīng)用場(chǎng)景。8.2 第 2 天持久化、緩存問題與分布式鎖配置 RDB 和 AOF觀察 dump.rdb 和 appendonly.aof 文件的生成。手寫緩存穿透、擊穿、雪崩的解決方案示例。手寫 SET NX EX 分布式鎖和 Lua 解鎖腳本??赐?Redisson 官方文檔了解 RLock 基本用法。8.3 第 3 天集群、運(yùn)維與面試模擬用 Docker 搭建一主兩從、哨兵或 Cluster 環(huán)境。檢查 Redis 日志分析主從復(fù)制和故障轉(zhuǎn)移的過程。把高頻面試題制作成卡片按“先結(jié)論后原理再舉例”的方式模擬作答。# Docker 搭建 Redis 主從示例 docker run -d --name redis-master -p 6379:6379 redis:latest docker run -d --name redis-slave1 -p 6380:6379 --link redis-master \ redis:latest redis-server --replicaof redis-master 6379 docker run -d --name redis-slave2 -p 6381:6379 --link redis-master \ redis:latest redis-server --replicaof redis-master 63798.4 面試答題的通用模板面試中回答 Redis 相關(guān)問題時(shí)推薦采用“結(jié)論先行展開原理結(jié)合實(shí)際場(chǎng)景”的結(jié)構(gòu)先給結(jié)論用一兩句話說清楚是什么比如“緩存雪崩是指大量 key 同時(shí)過期導(dǎo)致請(qǐng)求打到數(shù)據(jù)庫(kù)”。展開原因和原理說明為什么會(huì)出現(xiàn)。給出解決方案結(jié)合自己的項(xiàng)目經(jīng)驗(yàn)描述實(shí)際是怎么處理的。如果被追問說明方案的優(yōu)缺點(diǎn)和備選方案。8.5 面試中避免踩的坑只背結(jié)論不解釋原理。面試官只要追問“為什么”就會(huì)暴露。忽略版本差異。Redis 6.0 引入了多線程 IO5.0 引入了 Stream不同版本支持的配置和行為有差異回答時(shí)注明“以 Redis 6.x/7.x 為例”。不區(qū)分單機(jī)和生產(chǎn)環(huán)境。面試官問分布式鎖就不要只說SETNX一條命令完事要聊到鎖釋放的原子性、看門狗、集群下的問題。空談高并發(fā)。說“我們項(xiàng)目用了 Redis”時(shí)至少能說出具體存了什么、為什么用 Hash 而不是 String、過期時(shí)間怎么設(shè)置的。9. Redis 面試中容易被忽略的細(xì)節(jié)9.1 Redis 是單線程的為什么還要用連接池雖然是單線程處理命令但每個(gè)客戶端連接都需要占用一個(gè)文件描述符建立和斷開連接也有開銷。連接池的作用是復(fù)用已經(jīng)建立的連接減少 TCP 握手和 Redis 處理連接事件的消耗讓業(yè)務(wù)代碼在高并發(fā)下不至于頻繁創(chuàng)建連接。9.2 大 key 和熱 key 問題大 key 是指 value 非常大例如一個(gè) List 有幾百萬(wàn)個(gè)元素或包含大量元素的 key。大 key 會(huì)造成阻塞、內(nèi)存不均、網(wǎng)絡(luò)擁塞。熱 key 是指被高頻訪問的 key可能單點(diǎn)壓力過大。解決方案大 key 拆分將大對(duì)象的字段拆分到多個(gè) Hash key 中。對(duì)大 key 使用 SCAN 命令掃描避免使用 KEYS。熱 key 加本地緩存或副本分散讀壓力。使用redis-cli --bigkeys掃描大 key。9.3 為什么生產(chǎn)環(huán)境禁止使用 KEYS 命令KEYS 命令會(huì)遍歷所有 key在數(shù)據(jù)量大的情況下阻塞 Redis 主線程導(dǎo)致整個(gè)實(shí)例不可服務(wù)。推薦使用 SCAN 命令分批迭代不會(huì)阻塞。SCAN 0 MATCH user:* COUNT 1009.4 Redis 事務(wù)和 Lua 腳本Redis 事務(wù)通過 MULTI、EXEC、DISCARD 實(shí)現(xiàn)和 MySQL 事務(wù)不同Redis 事務(wù)不支持回滾只是把命令按順序打包執(zhí)行。如果在事務(wù)中發(fā)現(xiàn)命令語(yǔ)法錯(cuò)誤事務(wù)會(huì)中斷如果運(yùn)行時(shí)錯(cuò)誤如對(duì)字符串執(zhí)行 INCR其他命令仍會(huì)執(zhí)行。Lua 腳本則可以通過EVAL和EVALSHA將一段邏輯在服務(wù)端原子執(zhí)行在分布式鎖、限流等場(chǎng)景中非常常用。10. 實(shí)戰(zhàn)踩坑記錄10.1 緩存和數(shù)據(jù)庫(kù)一致性出問題業(yè)務(wù)中曾經(jīng)出現(xiàn)過修改用戶信息后緩存里還是舊數(shù)據(jù)的情況。原因是代碼里先刪緩存再更新數(shù)據(jù)庫(kù)并發(fā)情況下另一個(gè)線程先查數(shù)據(jù)庫(kù)還沒寫完然后更新線程把舊數(shù)據(jù)又寫回緩存。后來統(tǒng)一改成“先更新數(shù)據(jù)庫(kù)再刪除緩存”并加上延遲雙刪兜底才基本解決了問題。10.2 分布式鎖導(dǎo)致的死鎖手寫分布式鎖時(shí)使用 SETNX 加鎖后忘記設(shè)置過期時(shí)間在業(yè)務(wù)出現(xiàn)異常時(shí)鎖沒有被釋放其他線程一直拿不到鎖。排查發(fā)現(xiàn)鎖的 value 沒有區(qū)分線程釋放鎖時(shí)直接 DEL導(dǎo)致誤刪了其他線程的鎖。后來統(tǒng)一改為隨機(jī) UUID 作為 value并用 Lua 腳本校驗(yàn)后刪除。10.3 Redis 連接數(shù)被打滿上線后發(fā)現(xiàn)大量報(bào)錯(cuò)ERR max number of clients reached原因是項(xiàng)目使用redisTemplate時(shí)沒有配置連接池的最大值默認(rèn)連接數(shù)不夠同時(shí)部分請(qǐng)求執(zhí)行很慢連接被長(zhǎng)期占用。解決方式是調(diào)大連接池最大連接數(shù)并優(yōu)化慢查詢排查業(yè)務(wù)代碼中是否有大量不必要的 Redis 操作。11. 常見問題速查表下面這張表匯總了 Redis 面試中最高頻的 12 個(gè)問題可以作為考前最后一天的速查清單問題核心回答要點(diǎn)Redis 為什么快內(nèi)存存儲(chǔ)、單線程、IO 多路復(fù)用、高效數(shù)據(jù)結(jié)構(gòu)Redis 有哪些數(shù)據(jù)類型String、Hash、List、Set、ZSet、Bitmap、HyperLogLog、GEO、StreamString 底層是什么SDSO(1) 獲取長(zhǎng)度、避免緩沖區(qū)溢出、動(dòng)態(tài)擴(kuò)容ZSet 底層為什么要用跳表實(shí)現(xiàn)簡(jiǎn)單、支持范圍查詢、O(log N) 性能RDB 和 AOF 怎么選同時(shí)開啟AOF 恢復(fù)為主RDB 做備份什么是緩存穿透查詢不存在的數(shù)據(jù)布隆過濾器或緩存空值什么是緩存擊穿熱點(diǎn) key 失效互斥鎖或邏輯過期什么是緩存雪崩大量 key 同時(shí)失效或 Redis 宕機(jī)過期時(shí)間隨機(jī)化、集群高可用分布式鎖怎么實(shí)現(xiàn)SET NX EX Lua 解鎖生產(chǎn)用 RedissonRedis 集群有幾種主從、哨兵、Cluster演進(jìn)關(guān)系Cluster 數(shù)據(jù)分片怎么分CRC16(key) % 16384 定位哈希槽Redis 內(nèi)存滿了怎么辦maxmemory-policy 配置淘汰策略推薦 volatile-lru 或 allkeys-lru這份速查表里的每個(gè)問題都應(yīng)該能展開講 3 到 5 分鐘。Redis 面試題表面上看是背考點(diǎn)實(shí)際上考的是對(duì)緩存設(shè)計(jì)和分布式場(chǎng)景的理解。把數(shù)據(jù)結(jié)構(gòu)、持久化、緩存問題、分布式鎖、集群模式這幾條主線串起來配合手寫命令和代碼3 天時(shí)間足夠把 Redis 這一塊準(zhǔn)備得比較扎實(shí)。面試時(shí)如果能隨口說出 LInux 下的 redis-cli 命令以及 Spring Boot 中如何配置連接池會(huì)明顯比只會(huì)背概念的候選人更有競(jìng)爭(zhēng)力。這份清單可以先存下來每天過一遍8 月面試時(shí)不慌。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲、日韩、综合、另类| 香蕉国产精品麻豆亚洲欧美日韩| 久久大线蕉一区| 亚洲色综合| 少妇3P性爱自拍| 天天爽天天操啊啊啊| 嗯嗯啊好大| 91蜜臀熟女| 97最新在线播放视频| 明星性猛交ⅹxxx乱大交| 亚洲熟女偷拍在线观看| 91n美女视频| 成人福利视频网| 欧洲特黄毛片免费看欧洲毛片| 人乳av| 婷婷情色五月天| 五月天综合网| 性爱乱伦一区| 在线一道啪| 国产无吗在线播放| 九九九九精| 欧美综合 站| 91丝袜美腿网站| 日韩三级一区| 人妻人人操| 人人操肉肉| 在线毛片片免费观看| 2017天天操天天日| 99热18这里只有精品| 蜜桃视频精品一区二区三区| 无码视频一区二区| 九九九久久久久| 亚洲AV无码天美传媒一区| 精品超碰国产| 99热只有这里有精品| 午夜啪啪片| 91丨九色丨国产丨人妻在线 | 人妻精品一区二区在线| 日本熟女中文字幕一区| 黑人无码一区二区| 色乱二区| 做爱A级亚欧| 欧美高清18A片| 精品无码秘 人妻一区二区 | 五月婷婷hd| 国产不卡精品91| 亚洲五月天激情| 麻豆国产免费影片| 婷婷AV一区二区三区| 欧美日韩 强奸乱伦| 偷拍自拍在线视频观看| 亚洲AV成人无码久久精品播放| 免费伦费视频在线观看| 五月丁香拍拍激情综合三级| 伊人网综合在线视频| 亚洲一区二区三区不卡国产欧美| 密乳AV免费观看| 欧美自拍偷拍综合图片| 午夜AV人气不卡| 99这里只有精品国产| 人人操人人插 - 百度 - 百度| 亚洲国产另类在线中文| 综合影院永久入口国产| 精品人妻一区二区视频| 亚洲精品成人激情在线| 色情五月综合婷婷| 99爱精品| 91色艳| 密臀在线免费观看| 青青草啪啪网| 国产高清在线自在拍69| 97视频免费| 五月情色天| 欧美综合另类| 在线亚洲 欧美 日本专区| 综合国产影视三级| 国产操偷| 亚洲1区| 99在线精品视频| 亚洲少妇色| 欧美三级免费伊人| 久久熟女久| 免费国产| 91国模| 久久久性| 婷婷中文网| 91碰碰| 久久久久久亚洲精品中文字幕人妻| 嗯嗯啊啊亚欧精品| 人妻熟妇久草在线| 97中文字幕九区| 欧美日韩1234| 91精品国产日韩欧美综合| 日韩国产成人自拍视频| 精品久久視頻在线| 欧美暴力猛交| 99久久免费看精品国产一区| 亚州一区二区| aaaa少妇高潮大片| 超碰人人妻| 麻豆av一区二区三区| 日本一天色道久久久精品视频| 免费成人在线熟妇网| 熟女熟妇伦久久影院毛片一区二区| 啊啊啊男女| 亚洲天堂精品日韩电影| 777奇米影视777四色| 九九这里只有精品| 亚洲欧美日韩电影网站一区| 国产激情在线| 欧美一二三级精品在线| 丰满人妻大屁一区二区| 麻豆福利视频导航| 欧美韩日精品99综合| 精品国产一区探花在线观看| 婷婷激情五月天小说网| 蜜桃久久综合视频| 亚洲素人网| 玖玖久久久| 欧美一级美片在线观看免费| 婷婷尹人大香蕉免费| 少妇一区二区三区在线观看| 久久禁| 国内外内射高清视频| 最新av中文字幕高清| 在免费jIzzjIzz在线视频| 天天色粽合合合合合合合| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 五月丁香黄色网| 狠狠色噜噜狠狠狠狠狠色综合久久| 99热精品在线观看| 大香交| 欧美精品精品一区二区| 香蕉婷婷| 熟女久久久| 无码不卡亚洲成?人片| 亚洲成人福利电影免费 | 一区二区视频在看| 色色福利| 青娱乐大香蕉| 91精品人妻| 亚洲精品啪视频| 少妇毛片久久| 欧美在线天堂| 日韩av影片在线观看| 91人妻丝袜无码| 福利天天都操| 久久男人精品| 青青草在线视频欧美| 欧美姓爱综合网| 久久久亚洲欧美综合| 精品视频日日夜夜| 精品视频一二三中文| 牛牛aV| 九九夜精品九九在线| 夜夜欢天天干| 色播五月丁香| 综合熟妇一区二区三区| 欧美老妇曰批的视频| 哈哈操电影AV| 屁股久久久久久| 青青草天天亲夜夜操网| 中亚黄色三级大片| 日韩操逼HD| 九一综合精品视品av| 国产馆| 国产色呦呦| 久久久久国产| 无色无码| 啊啊啊啊啊啊啊啊要喷了| 天天射天天| 91国产精品熟女| 91色夜| 性爱av在线免费观看| 日日夜夜模| 97在线精品观看视频| 欧美三级一级| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 特色a在线上| 久热九九| JuliaAnnXXX888| 成人免费福利网站国产| 亚洲色图第四色| 亚洲免费在线探花| 夜夜操一区二区| 欧美不卡二区| 中文字幕伊人| 亚洲乱码国产乱码精网站| 人人搡人人肉久久精品| 岛国视频免费在线观看| 亚洲精品不卡一二三区| 国产 亚洲 丝袜 制服| 国产偷人妻精品一区二区在线| 人妻献身系列第54部| 亚洲AV乱码专区国产噜噜亚洲 | 91色综合色| xxx0国产在线播放| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 天堂在线一区二区| 免费观看国产小粉嫩喷水精品午| 一区二区三区四区久久视1| 欧美性爱精品七区| 97天天操天天干| 91精品女厕偷拍视频| 天天影视射综合网| 俺去俺来也在线www| 亚洲有薄码区久久在线一区| 99热网站| 91春色| 真实高潮91| 激情五月综合开心五月| 日日AAvv| 激情开心五月天| 五月天亚洲色图| 亚洲精品久久久久久久久豆丁网| 国产在线综合福利网站| 亚洲综合小视频小说在线观看| 高清国产性猛交xxxx乱大交| 十八禁一区二区无码观看| 婷婷中文网| 日本一线产区和二线产区伦理片| 极品色社| 91性高朝久久久久久久久| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 999久久久九九九九| 亚洲一二三精品久久网| 日韩欧美午夜一区二区| 日本一久是| 久久男女激情视频网站| 白丝一区| 99色骚| 国产一级αv免费看片| 天天天干977| 精品.99999| 1人人看人人摸人人操| 日本中文字幕一区| 日韩三级视频一区二区三区| 秋霞一集毛片观看| 欧美日韩精品久久久久东北老熟妇| 超碰碰碰碰| 天天看夜夜看日日干| 97碰碰日本乱偷人妻中文的| 婷婷五月天影院| 国产精品久久久| 久久伊人青青草| 精品亚洲国产成人AV制服丝袜| 熟女精品日韩一区二区三区 | 国产成人精品午夜福利| 99色热| 日韩熟女操逼| 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 蜜臀AV秘一区翔田千里| 亚洲日本大香蕉1| 欧亚日韩综合精品国产| 中文字幕神马久久| 国产91美女高潮| 强奸乱伦AV网址| 亚洲91射| 久草资源欧美在线视频| 精品亚洲国产成人AV制服丝袜| 天天色欧美| 色婷婷久久综合超碰| 亚洲激情四射| 美女尤物人人操| 超碰97护士| 日韩二区三四区五区六区在线看| 色呦呦、国产精品| 国产成人精品日本亚洲语言| 无码免费在线观看黄色片| 91天堂丝袜美腿| 国产精品亚洲四五区在线观看| 激情干在线| 老司机福利青青草| 九九九只有精品| 欧美亚洲丝袜美女电影| 色色五月婷| 成人一级性爱| 久久专区| 四虎免费在线播放| 亚洲欧美日韩国产丝袜自拍中文| 四虎影视在线| 五月婷婷深深爱| 中文操嬖片。| 免费看国产曰批40分钟怎么下载| 大学生美女口爆| 亚洲激情深爱文学小说网站| 大香蕉欧美日韩| 韩国久久97| 日本日皮视频逼| 秋霞网—男女啪啪亚洲免费体验区| 日韩99999| 国产成人精品一区| 丝袜综合色图| 久久国产视频性吧 | 国产精品又黄又猛又粗| 男人亚洲天堂| 97欧美综合| 久久久9 9 9精品| 日本一天色道久久久精品视频| 欧美综合骚| 九九色婷婷| 成人午夜小视频手机在线看| 1人人看人人摸人人操| 97碰久久| 天天综合网在线91| 超碰偷拍| 欧美激色| 2019午夜福利视频| 99只有精品| 色婷婷在线视频精品导航| www.激情| 激情综合五| 综合网色| 五月婷婷激情综合| 人妻嗯啊啊在线播放| 日本韩欧美在线播放a| 金莲网址| 国产高清26uuu| 欧美激情性爱视频网站| 韩三级a视频在线观看| 清纯唯美亚洲| 超碰97人人cao| 97香蕉网| 91精品国产91久久青草| 久久久久国产精品久久久| 男人的天堂com| 99热这里只有精品1| 黑人粗大V S日韩女优视频| 国产视频大全| 久久高清无码夜夜操| 中文字幕在线2| 亚洲91网站| 伊人991| 伊人操操| 久久美国毛片| 97欧美色综合| 91制服丝袜| 国产999精品久久久| 少妇三p| 啊啊啊啊啊啊啊啊视频| 欧美色女人| 1769成人国产精品视频| 亚洲一卡二卡在线免费| 无码 黑人一区二区三区| 国产一级不卡在线观看| 操我无码| 国产成人综合网| 久久99精品视频| 婷婷色婷婷| 亚洲少妇色| 大香蕉伊人亚洲| 欧美天天综| 亚洲少妇激情视频| 超碰97综合网| 91综合网在线| 91人妻人人澡人人爽人人精品| 国产一区二区成人av在线播放| 草莓精品视频在线免费观看| 熟女精品va中文字幕| 日本精品高清一二区一本到| www.激情| WWW4虎| 97天天操天天干| 很很很很操| 999色欧美中文字幕| 欧州91高潮| 夜夜草我| 精品国产www久久| 99久在线精品99re8热| 亚洲图片 91| 精彩国产视频播放1区2区| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 色综合av综合久久| 操逼日批| 日本在线激情一区二区三区| 欧美性爱97超碰| 日日夜夜国产综合| 96精品久久久| 国产二区三区免费视频| 久久夜黄色无码A级大片| av一区二区三区 中文| 大香蕉操久久| 老女人老91妇女老热女| 久久精品国产亚洲粉嫩| 久久午夜鲁丝片| 中国一区二区亚洲人妻| 国产亚洲 中文欧美久久| 啊啊啊啊二区好大| 久操国产在线| 日本东京热加勒比久久| 五月综合激情网| 国产农村妇女精品1区二区| 欧美色图在线视频少妇| 秋霞午夜成人福利片片| 人人摸人人摸人人干| 人人色97| 91AV天美在线视频| 97色97干| 成年女人18级毛片毛片免费观看| 色女网日韩| 男人天堂网手机版婷婷| 26uuu久久| 成人国产精品三级A片| 在线天堂999| 久久久久久中文| 国内偷拍精品一区二区| 九九RE视频在线精品| 五月婷婷hd| 手机在线大香蕉| 黄在线| 久久一二区四| 亚洲一区中文字幕| 99国产在线 精品 视频| 亚洲图片 91| 色香欲天天天天综合色| 波多野结衣AV无码一区| 五月丁香综合激情| 道久久五香丁月婷婷激情综合| 亚洲国产综合视频| 国产99 中文字幕日韩小视频| 丝袜天堂| 久久精品久| 色欲日韩欧美在线一区| 神马久久69| 新亚洲无码| 99热亚洲| 亚洲情色 自拍| 特级毛片特黄久久免费看| av操操不卡| 青草精品视频日本久久久久网站在线| 黄片免费看黄片免费看| 欧美性爱网97| 俺去啦俺来也久久综合| 日韩乱码Av| 9美女超碰在线免费观看| 中日亚韩免费视频| 少妇69中文| 欧美色狠| 素人播放一区| 熟女少妇一区二区三区| 成年人性爱日韩| 中文字幕78| 免费成人在线观看91| 欧美亚性天堂| 熟女少妇一区二区三区| 国产真乱mangent| 91日本在线观看| 日韩 欧美 国产 麻豆| 日韩欧美午夜一区二区| 亚洲日本男人天堂网| 中日韩久久久免费看| 精品久久久久久中文| 青青草视频久久久久| 国产深夜福利| 亚洲夜色在线| 国色综合天| 一级A啪啪啪啪| 免看60秒涩涩视频| 欧美顶级黄色大片免费| 亚热日本熟女| 尤物网址| 久久99手机免费视频| 91亚州| 女人天堂AV五区在线| 台湾佬大香蕉| 日韩欧美视频青青| 熟妇熟女一区二区三区| 日韩人妻大香蕉| 大香蕉一人| 91 亚洲 欧美 日韩 国产 综合| 国产大片精久久久久久| 国产又黄又粗又猛大片| 97高清啪啪| 亚洲成人精品在线一区| 在线天堂999| 日产操逼| 久插综合| 不卡av在线中文字幕| 久久久穴999| 日本一区视频在线观看| 欧美人人天天网| 在线无码网站| 青青草好吊| 亚洲AV无码国产精品久久久久| 亚洲男人综合网| 国产精品美女在线一区| 91女优在线观看| 亚洲国产成人精品无码专区| 中文字幕诱惑制服人妻丝袜美丝袜美 | 91neishe| 一起草高清无码| AV高清一区| gogogo免费高清看中国国语| 欧美日韩大陆黑人少妇99| 亚洲国产精品成人综合| 大香蕉男人的天堂| 国产亚洲日本精品在线| 在线观看 99热| 熟女突然公开看18禁影片 | 超碰成人人人爽人人爽| 91成人在线| 欧美一级特黄淫片在线观看| 中文字幕av片| 美女黄色一级A视频| 啊啊啊无码| 久久久穴999| 色官网色综合| 国产日韩美女小穴视频网站不卡| 骚货| 岛国免费黄色网址| 999九九九九国产动| 91黑丝露脚| 懂色Av| 欧美色图下一页| 久久鲁干| 色综合一区二区三区| 人妻一区久久二区三区色播| 操逼操逼逼操操逼91| 黄色成年| 真实高潮91| 青娱乐亚洲自拍| 伊香蕉综合久久久久久久噜噜噜 | 色婷婷蜜臀av| 强奸乱亚洲| 亚洲欧美不卡线| 国产日韩人人| 天天日天天爽| 黄色片一区二区三区四区五区| 白嫩91在线亚洲| 成人精品电影| 夜夜影视四色| 精品人妻一区二区三区在| 九九拍拍精品视频在线播放| 欧美在线观看综合国产| 亚洲欧美国产va在线播放频| 9999久久久久| 91美女中出| 一区二区三区高清天码| 熟女熟妇一区二区三区视频| 精品一区96| 日本性爱少妇| AVE乱伦| 激情内射| 日日黄色三级网站| 狠狠色丁香| 黄色视频高清无码网站| 欧美人妻一区二区| 九九九久千久久激情蜜桃在线看 | 亚洲色悠悠久久88| 精品久久視頻在线| 国产成人精品日本视频| 日本在线观看网址| 后入人妻无码| 在线一区| 亚洲情色五月天| 国产懂色精品国产av| 在线αⅴ| 9 1果冻精品视频| 亚洲天堂情色| 九九精品美女高溯喷水| 手机在线观看不卡无码av| 欧差乱伦二三| 无人区高清电影免费观看一区二区三 www.qmcai2.com | 欧美第一页性| 国产激情在线观看| 尤物黄色在线观看网站| 婷婷丁香激情| 丝袜 中出 制服 人妻 美腿 中文字幕| 亚洲永久AV无码精品秋霞| 99在线免费视频| 殴美大黄片| 欧美人人曰人人操人人射射| 97超碰超碰| 日日骚一区二区三区| 国产熟女二区| 青青草原综合久久大伊人精品| 大香蕉五月天婷婷| 亚洲最新中文字幕免费| 亚洲精品国产无码高清| 天天射夜夜操| 夜夜高潮夜夜爽夜夜爱爱一区| 日韩中文9| 久草新免费| 伊人97色天使| 丰满人妻一区二区三区免费,| av天堂手机版追回| 婷婷丁香五月天综合东京热| 欧美性爱免费短视频| 久久久久亚洲| 极品色| 少妇激情一区二区三区视频| AV有码在线| 青青草国产一区二区三区| 久久香蕉超碰97国产精品| 日少妇亚洲版| 久久9亚洲| 成人资源中文字幕在线观看天天| 99综合网| 久久女婷| 99爱视频| 久99| 色婷婷激情| 欧美日韩成人在线| 激情五月丁香五月| 伊人久久婷婷| 婷婷五月花| 狠狠操狠狠插| 成人欧美一区二区三区黑人一| 九九色图| 久久人人看| 五月天婷婷久久| 丁香色色网| 丝袜熟女一区二区三区| 亚州操逼网| 国内自拍 日韩激情 99| 国产亚洲精品自在线亚洲情侣| 国产真实野战在线视频| 亚洲制服欧美另类内射| 欧美精品自慰系列寂寞少妇| 深田咏美亚洲精品福利社 | 日本色色视频网站| 亚洲精品免费中文字幕| 无码人妻精品一区二区三区99不卡| a片久久久久久久久久久久| 五月丁香黄色网| 日本成人免费一区二区三区| 久久久久久久久久va| 2017人人操,人人摸| 国产极品精品美女视频| 51一区二区三区| 尤物一级在线免费观看| 免费看一级a性色生活片久久无| 香蕉婷婷| 插入综合网| 91最新综合| 亚洲污一污二| 天天操天天看| 欧美热图99| 国产精品操| 天天视频黄| 精品国产91内射久久| 日本天天操| 久久HD| 偷拍 精品另类 凸凹了四区| 亚洲天堂综合AV| 蜜奶av| 天堂射| 丝袜美腿操av| 亚洲欧洲激情卡通另类文学四射小说网站 | 亚洲一二三精品久久网| 97在线欧洲| 天天爱综合网| 果冻传媒A片麻豆熟妇人妻| 乱欲视频| 天堂俺去俺来也www久久婷婷| 日韩av一级黄片| 久久人妻丝袜一区二区三| 欧美黄色图片| 俺也射| 校园春色五月天| 人人操 欧美| 成人三级片无码| 99re9在线| 330dv亚洲成年视频网| 天天搞欧美| 女生91网站| 色五天伊人| 99色在线观看| 精品九九九九九九九| 九九久精品| 超碰97人妻在线| 久久夜黄色无码A级大片| 激情婷婷| 99色骚| 久久99九九九九6666免费观看软件| 精品免费视频国产一区| 亚洲精品a人片在线观看视| 9久超碰| 欧美男人亚洲天堂| 欧美日韩另类激情图片| 久久久精品电影| 99热欧美| 天天插夜夜爽| 久久久久久久9| 日韩操逼HD| 97久久超碰| 最新亚洲风情电影| 亚洲色图 91| 久久精品国产亚洲AV高清演员表| 亚洲九区| 狠狠亚洲| 中文字幕乱码在线| 欧美人妻久久精品二区三区| 亚洲国产精品久久久久婷婷青年| 加勒比av官网在线| 亚洲影院成人| 伊人五月天| 91久久伊人婷婷青青草| 9久久久久久| 91精品国产日韩欧美综合| 后入美女国产| 欧美偷偷网| 日韩无码精品综合久久| 婷婷五月花| 玖玖资源中文字幕制服丝袜| 天天色欧美| 91天堂色男人的天堂| 91色五月俺来也| 成人青青草原伊人| 国产熟女乱论| 久久夜色一区二区| 超碰色97| 在线观看国产黄色| 国产极品久久久| 97综合| 国产亚洲综合欧美一区| 亚洲 综合 第一页| 91视频伊人| 一区二区娱乐网站| jiujiujiujingpin| 内射夫妻三片| 青青草自拍视频在线播放| 亚洲风情综合网| 国产精品人妻一区二区| 大香蕉伊人色偷偷在线| 欧美偷| 欧美日韩性爱无码| 日韩精品9999| 人人操人人插 - 百度 - 百度| 91校园春色长篇| 欧美小说区视频区| 中文字幕成人理论在线| 九九国产| 最新av中文字幕高清| 人妻激情另类| 精精品人妻一区二区三区| 日韩人妻播放| 欧美18禁91| 欧美淫乱视频| 国产三级多多影院2022国产AA一级毛片无码 | 九九九九九九综合| 国产一级做a爰大片免费久久| 中出后入| 韩日性爱av| 大香蕉啪啪啪啪在线| 欧美偷拍区| 欧美亚洲影视| 黄人人操人人操| 冬京热男人的天堂| 国产午夜精品理论片a大结局| 天天舔天天| 天天射夜夜骑| 亚洲色色色| 91综合天天看| 国产自偷自拍一区| 美女91网址| 亚洲免费看片| 天天色综合影视网| 婷婷九月色| 国色综合天| 精品精品精品| 超碰免费人妻在线| 婷婷国产精品九区| 欧美乱伦专区| 草b在线| 搡老女人911熟妇老熟女| 97 亚洲 日韩 欧美 在线| J?P?NESEHD熟女熟妇伦| 性色乱AV一区二区| 国产亚洲深夜激情| 成人在线视频一区| 无码WWW免费视频网站| 老女人91| 五月婷婷基地| 亚洲欧洲自拍| 啊嗯好大视频在线观看| 国产福利视频精品视频| 夜夜国产一区| 中文字幕aⅴ在线视频| 天天综合网合集91| 九九热AV| 婷婷五月天激情四射| 人妻密肉在线观看| 老外又粗又长一晚做五次| 9长久久精品| 欧美久久伊人| 深夜视频| 日日日啊啊啊| 国产AV精久久| 久久大香蕉97| 一区二区 韩日AV| 天天射夜夜操| 日韩人妻无码精品系列| 可以免费观看的日韩av毛片| 欧美亚州色的图| 日本在线激情一区二区三区| yazhouzaixian| 97人人干| 中文操逼字幕| 日韩丝袜高跟制服在线观看| 国产精品免费视频人成| 偷拍新久久| 日本在线不卡123| 国产福利视频精品视频| 色香91| 美女黄色一级A视频| 婷婷av在线中文字幕| 色妇91| 五月丁香色婷婷| 日韩无码一级黄色av片| 好爽免费视频,| 99热婷婷| 成人AV超碰免费在线| 精品人妻伦一区二区三区久久| 丁香六月啪啪| 91被操| 亚洲在线观看| 国产精品白虎| 最近2019中文字幕国语免费版| 欧美综合色图网| 第四色亚洲色图| 国产树林里野战在线看| 国产真实子伦对白| 2019午夜福利视频| 青青草原人妻| 日韩精品中文字幕一| 午夜爽爽爽| 亚洲欧美精品久| 国产亚洲99久久精品| 欧美日韩性爱电影在线| 蜜臀网址在线| 极品粉嫩少妇视频| 色婷婷视频| 亚洲h片在线免费观看| 99re这里只有精品2| 国产高清不卡视频| 静品嫩模一区二区| 亚洲激情在线观看一区| 欧美天天影院| 亚洲激情色片| 尹人大香蕉视频在线| 国产亚洲精品农村妇女| 麻豆天美一区二区| 狠狠干妹子| 欧美亚男人的天堂| 天天色播| 日本三级一区二区 在线| 亚洲图片第一页| 99re在线视频| 国产嫩草精品A88AV在线| 插欧洲美女欧美精品| 亚洲AV成人无码一二三久久| 人妻激情视频| 日日摸日日碰| 天堂日本亚洲欧美| 丁香婷婷色五月| 久操凹凸视频| 亚洲在线网站| 99rre在线精品99re8| 午夜毛片高清免费不卡| 亚洲 欧美都市激情| 5月婷婷6月六月丁香| 国产无码高清操逼视频| 大香蕉中文| 春色综合免费| 成人热久久精品| 人人爽天天爽| 97精品综合久久| 日韩国产成人自拍视频| 日本性爱视频一级| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 激情综合五| 人摸人人操人| 草草影院最新网址| 大学生美女口爆| 久久αⅴ| 超碰97.com| 欧美色图在线视频少妇| 亚洲天堂自拍| 久久9亚洲| 长长久久免费视频| 国产精品一区二区黄片| 日韩无码黄色片| 国产精品99精品视频网站| 欧美懂色综合网| 东京热91| 天天搞欧美| 91N综合网在线| 一区二区不卡| 亚洲成人精品久久久| 亚洲天天艹| 男人的天堂2019AV| 婷婷丁香成人| 欧美婷婷五月天| 日本高清视频xxxx| 男女做爰猛烈动高潮A片免费应用| 女人天堂av在线播放| 亚洲 欧美 第一页| 国产又粗又长的视频| 中文熟女五十乱码在线| 4虎在线视频| 狠色婷婷久久一区二区三区_| 久久鲁夜| 天堂精品小草| 久久久熟妇熟女国产| 九一亚洲国产免费| 嗯嗯嗯,草死我| 1956日韩精品| 久操99| 国产精品久久久亚洲一区| 久久极品伊人| 日产狠狠干| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 91av一区二区在线观看| 国产午夜福利专区综合| 亚洲 小说 欧美 激情 另类| 欧美精品二区视频在线| 亚洲无码国产探花在线观看| 国内精品嫩模A∨私拍小视频| 日韩激情无码影院| 免费αV在线视频| 国产不良强奸视频免费看| 立川理惠被中出无码| 翔田千里爆乳巨臀无码| 欧美人人曰人人操人人射射| 999精品国产高清一区二区| 成 人片 黄色大片| 成人激情无码在线视频| 日韩AV无码中文一区二区| 亚洲成人性爱在线观看| 9999免费精彩视频| 99精品热| 精品视频日日夜夜| xxx亚洲午夜天堂| 91久精品| 第四色色综合91| 日本黄色裸日本黄色裸体| 人妻少妇色综合| 9ⅰ久久久天天| 视频在线97| 超碰人妻久久| 在线日韩日本亚洲国产| 日本操逼视频不卡直接放| 性影在线视频| 操婷婷逼| 久久久蜜桃一区二区三区| 高凊专区人人操| 欧美色天堂网在线视频| 秋霞鲁丝午夜无码一区二区三| 欧美激情亚洲情色| 男人天堂导航| 日本操逼视频免费| 秋霞一级A片黄色视频| 久久三| 久久精彩视频| 人人喜人人妻| 欧洲精品人妻| 色婷婷日韩精品一区二区三区| 欧美九九九九九| 97精品一区二区视频| 国产亚洲精品美女久久久久久2021| 久久久无码av精| julia高潮后不停追击中出| 女同性恋一区二区三区精品视频| 久久大陆| 欧美性爱超碰97| 日韩欧美性爱电影在线观看| 亚洲精品一二区| 午夜一区| 少妇69中文| 大香蕉综合久久| 大逼色网站| 无码不卡八戒| 中国国国产一级特黄毛片| 日韩精品99999| 99re9这里只有精品| 青青草中出视频| 超碰色图| 九九精品99| 久久久婷| 人妻人人澡人人爽人人| 久久久涩| 91啦人妻| 国产伦精品一区二区三区在线观 | 国产剧情AV不卡在线观看| 欧美淫穴| 天天摸天天舔天天操| 超碰美女97| 午夜激情成人在线观看| 91九色网| 精品视频97| 日本欧美不卡| 思思热免费在线视频| 可以看的av| 欧美色图 人妻| 青青青青青手机视频| 草草影院最新网址| 999岛国大片| 九九九久久久久| 久久内射| 黄骗免费| 一牛影视久久久一区二区三区| 日韩中文9| 欧美高清18A片| 四色永久成人网站| 国产天天看| 综合第一页| 日本三级网页| 操九九九九九九| 亚洲极品| 日本黄色大片一级视频免费麻豆| 婷婷色五月激情| 五月开心久久AV官网| 亚洲天天综合| 欧亚在线视频| 美女AV一区二区| 蜜臀久久99精品久久久久久酒店| 国产一级作爱毛片| 欧美精品第四五页中文字幕在线观看| 日韩AV噜噜噜一区二区三区四区| 无码 黑人一区二区三区| 婷婷尹人大香蕉免费| 情色五月天就去干| 日日噜噜夜夜狠狠视频无| 国产精品久久久亚洲一区| 色综九九九一区| 国产精品美女久久久久AⅤ国产馆| 久久最新免费视频23| 欧美综合狠| 韩日性爱av| 另类亚洲图色| 热热色中文无码| 国产亚洲综合欧美一区| 男人精品天堂一区| 秋霞一集毛片观看| 91久久精品国产| 国产9熟妇视频网站| 成人无码影片视频在线| 干B| 97超碰磁| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 91国精产品| 性爱视频啪啪啪啪| 97精品一二区| 超碰欧美97| 天天做天天爱| 人妻色情天天操| 国产精品无码在线| 熟女一区二区| 操逼A∨| 久久婷婷国产一区二区色| 96超碰网| 亚洲中文字幕网| 性生活性生大爱77AV国产| 黄色小视频日本txt| 亚洲电影91| 欧美激情另类一区二区| 成人热久久精品| 黄色大片免费在线| 国产性感在线观看| 亚洲影院365| 四虎AV无码| 天天射夜夜操| 91N五十路| 九九九免费视频| 北条麻妃99精品青青久久| 亚洲天天在线| 花野真衣| 91久久久亚洲| 夜夜操av亚洲一区二区| 加勒比综合| 蜜臀精品1区2区| 欧美激情久操网| 午夜福利久久久噜久噜久久综合| 超碰午夜| 日本裸体久久色噜噜| 中国操逼无码| 亚洲欧美国产中文字幕| 99视频这有这里有精品| 9999亚洲电影| 日韩美女啪啪一区| 色综合20p| 精品国产www久久| 少妇精品久久久八区九区| 最近的最新的中文字幕视频| 亚洲成人AB| 日韩精品一区的| 久久东京热成人| 中文字幕一区二区三区视频播放| 国产三级中文字幕粉嫩| 久久综合九九| 超碰色图| 日韩97视频!在线| 欧美性爱18观看| 二级久久网| 久久精品中文字幕无码l| 青青草中出视频| 人妻人人操| 好爽免费视频| 亚洲熟妇无码一区二区三区| 黄色操人| 九九综合网| 日韩国产成人自拍视频| 男人天堂毛片| 久久久精品国产亚洲伊人| 久久久久久久强迫| AV99热18这里只有精品| 日韩黄色一区二区三区| 日天天九九天堂666| 麻豆天美国美国产| 国产亚洲精品久久久久小| 97频视在线| 欧美精品999| 亚洲成人贴图| 打av高清| 人妻日日干| 欧美熟妇精品黑人巨大91| 久无码| 日本三级一区二区 在线 | a级成人毛片免费视频高清| 日韩内| 人妻在线臀日韩| 综合五月婷婷亚洲一区| 91久热| 精品福利视频| 亚洲欧美综合区自拍另类| 深爱伊人影院| 国产乱婷婷精品二区三区| 亚洲伊人a线观看视频| 欧美第五页| 亚 欧 美 综合| 黄色大片免费在线| 婷婷10月天青娱乐| 欧美熟妇乱码在线一区| A 在线网址| 怡春院久久| 青青草原狼av| 999亚洲国产视频| 97在线免费看视频| 嗯嗯,好大,好爽,好骚 | 三级三久久线久久99久目本WW| 久久久久亚洲Av无码专区老牛影视| 性性欧美| 婷婷五月天影院| 99亚洲精品| 久久久女人| 国产白嫩精品久久| 99久久久无码国产精品性男| 思思热一热婷婷热一热| 玖玖婷婷五月天| A一区片| 日韩成人小视频| 超碰97玖玖爱| 99热18| 久久久久久久久久va| 久久爱97| 素颜老阿姨乱情色| 午夜人妻精品综合在线| 国产亚洲中文不卡二区| 色欧洲|