亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
人妻 中文 日韩| 人人爽夜夜操| 亚洲偷拍欧美激情| 亚州精人品大香蕉| 在线v中文字幕一区二区三区| 啊啊啊无码| 99久久com免费视频′| 欧美96在线|欧| 蜜乳AV网址| 又黄又硬又粗又长国产视频| 久久丁香| 中日韩久久久| 大香蕉人妻| 日韩一级欧美一级在线观看| 深喉吞精| 男人把坤坤插入女人的下体 | 欧美黑人猛交春色影视大全| 精品女同一区二区三区| www.色婷婷| AV天堂因数| 99操碰| 激情久久久| 一区二区三区欧美激情| 日日爽熟女| 亚洲淫乱骚妇AV| 亚洲色综网| 精品97久久综合| 熟女欧美日韩综合婷婷| 蜜桃久久一区二区| 水多多映视AV| 欧美日韩天堂| 伊人97色天使| 国产美女91视频| 精品久久久久久中文字幕三区| 精品国产乱码久久久影院| 亚洲色图大香| 91人妻人人妻| 亚洲综合精品国产一区| 亚洲国产激情国产av| 青青草吊丝| 成人aⅴ一区二区三区| 亚州综合AⅤ| A啊啊在线观看| 亚洲 图片 欧美 色图| 奇米狠999| 超碰在线人人射| 人妻少妇精品一区二区三区| 素颜老阿姨乱情色| 亚洲无码 国产无码| 九七毛片九九毛片| 国产视频不卡在线观看| 91欧美亚洲| 色老汉色| 丰满人妻一区二区三区免费| 国产 日韩 欧美一区| 天天综合网91| 桃花色综合影院| 夜色五月天| 亚洲中文一区二区三区| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 99热精品在线观看| 亚欧美综合网。| 国产精选视频| AAAA级日本片免费视频| 在线国产探花| 精品无码一区二区| 欧美少妇性乱| 看黑丝美女操逼青青网站| 久久深夜无码| 亚洲欧美国产va在线播放频| 亚洲色欲天天天堂色欲网女| 日韩三级久久久| 午夜久久一区二区无码中出| a人片中文字幕一区二区| 国产强奸无码乱伦| 综合熟女| 伊人96在线| 日本熟女不卡视频| 亚洲色色探花| 91动漫操逼视频| 第45页一区二区| 色一射色一射| 天天草天天日| TS人妖另类精品视频系列| 84YTCOM性无码| 国产精品免费日韩| 精品网站9999| 亚州精品人妻一二三区| 自拍偷拍第26| 伊人五月天| 日日夜夜草草草| 亚洲天天操| 免费操逼视频下载| 国产日韩美女小穴视频网站不卡| 超碰在线综合97| 蜜臀久久99精品久久久电影| 国产白领连续中出在线观看| 91亚洲综合在线| 极品尤物在线观看| 91 天天综合| 狠狠穞A片一區二區三區| 蜜桃AV天堂| 狠狠操夜夜| 欧美青青视频| 美国aaaaa一级黄片| 操b在线观看| 亚洲色性情三级| 少妇的嫩逼图片| 熟女六十路| 蜜臀亚洲综合一二三四区| 九九九九久久久久| 极品少妇99| 亚洲精品人伦一区二区| 99这里有精品视频| 国产极品久久久| 思思热免费在线视频| 夜夜爽爽夜夜精品视频| 久久久久斤小| 日本成人A片免费看| 东北老熟女| 色狠狠色| 两女互慰AV高潮喷水在线观看| 男插女青青影院| 俺去俺来也在线www| 91五十路| 91激情国产| 久久一区二区三区入口| 少妇精品久久| 99在线免费视频| 18精品一二区| 青青草视频久久| 97精品国产| 中文啪啪视频| 久久久久久国产无码精品| 中文字幕老熟妇黄色视频| 一区二区蜜臀| 国产又黄又爽| 操淫穴亚洲五月丁香 | 一区二区三区成人| 国产精品色| 久久久久国产| 一区三区啪啪| av麻豆啪啪| 亚洲资源吧| 国产a片操逼| 殴美性色a级欧美| 亚洲AV无码黄色强奸| 老色69| 婷婷激情啪啪| 性色av蜜臀av色欲aV| 天天干人妻| 五月丁香啪啪| www黄片免费看com| 亚洲阿v天堂无码z2018| 亚洲影院无码在线| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 欲色综合| 午夜超爽| 99精品人人爽| 91在线观看,天天综合| 91在线免费观看处女| 日本特黄f c2| 欧美性色网| 欧美成人一区二区三区在线播放 | 1769一区| 2019天天干天天操| 99999无码| 亚洲无码一二三区| 久久无码电影| 亚洲高清男人天堂| 人人操人人摸avav| 偷拍五区| 色噜噜人妻丝袜a∨先锋影| 亚洲黄色网址视频| 清纯唯美亚洲| 国产最火爆久久国产网站网站| 国产亚洲福利第一页丝袜| 刺激精品视频| 狼狼色丁香久久婷婷综合五月| 亚洲第一页第二页激情| 五月天综合网| 淫淫总合网| 日韩性爱1级片视频| 加勒比海成人视频网| 精品九九淫乱男| 国产 丝袜 欧美中文 另类| 国产大片精久久久久久| 中国小夫妻勾搭露脸淫荡对白| 亚洲色人妻综合| 婷婷色香| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 国产精品另类| 久久中文字幕一区不卡| 日韩成人私密一级精品av| 婷婷五月天福利| 91五十路| 人妻少妇久久久| 色欧洲| 久插综合| 国产一二三在线视频五十路| 精品人妻一区二区三区视频| 五月天久久综合网| 欧洲自拍色图gif在线| 欧美性爱1080p| 欧美国产一区二区三区麻豆传媒| 99热精品在线| 九九视频黄色片| 韩日精品福利视频一区不卡在线免| 亚洲色欲天天人妻无码系列专区| 91九色蝌蚪在线观看| 久久区| 欧美大片天天看| 七久久久| 春色校园综合网| 欧美成人A√在线一区二区| 亚洲操逼网| 加勒比av官网在线| 9久久精品| 久久av一级av少妇av高潮| 天天噜| 日韩三级性| 久久熟妇五十路一区| 国产精品免费视频人成| 亚洲午夜福利视频| 99久久网站| 熟妇操花| 乱色视频中文字幕| 日产狠狠干| 成人麻豆av电影网站| 97欧美超碰| 亚洲91射| 96免费视频在线| 99精品丰满人妻无| 人人考人人摸人人干| 日韩色| 国产午夜精品理论片a大结局| 9久久久久| 男同专区一区二区三区在线| 超碰美国| 日韩探花精品在线视频| 草草网站影院白丝内射| 人妻精品综合中文字幕在线| 麻豆2区1区天美| 亚洲九九九| 男人午夜天堂| 亚洲精品国产熟女| 搡老女人老妇女AAA一VU麻豆| 隔壁邻居波多野结衣中文字幕| 99热99在线播放激情| 一区二区三区 日韩欧美| 欧美黄色大片在线观看| 在线亚洲 欧美 日本专区| 性欧美精| 国产精品999aaa| 欧美国产精品| 深夜操逼网| 精品国产网站| 欧美成人国产精品| 加勒比海人人操超碰在线| 激情深爱五月天| 久久综合97| 青青草福利视频| 视频国产成人精品日本亚洲18| 九九九九一区| 四虎影院成年人片| 欧美人人操人人插| 一区在线国产播放| 亚洲天天操| 欧美亚洲自拍另类人妻| 久久久穴999| 日本免费一区二| Aa东京男人的天堂| 国产日韩无码一区二区三区久久区| 成人无码在线超碰网| 中文字幕精品一区二区精品| 锕锕好爽 死我在线观看| 久久精品91| 欧美色999| 亚洲AV无码成人精品久久| 校园春色亚洲欧洲| 中文字幕无码不卡啪啪| 26uuu性| 亚洲熟妇图片| 无码精品啪啪啪一区二区三区三州| 欧美草草高清日韩视频| 亚洲一区二区三区AV无码 | 五月天激情网站| 中出789在线视频| 亚洲学生妹高清av| 久久婷婷色综合一区二区三区| 激情小说激情视频| 久久久久亚洲?V片无码V| 日本超碰在线国产一区| 蜜臀久久久99久久久久 | 中文字幕人成乱码熟女香港| 任你干在线视频| 都市激情人妻一区二区青青操视频| 四虎国产精品永久在线囯在线 | 乱精品一区字幕二区| 蜜桃视频一区二区三区在线观看| 激情一区二区| 91九久| 国产免费内射视频| 东北女人av| 欧美洲精品一级| 亚洲成人美女无吗| 久久久啊啊啊| 97亚洲综合电影| 一区二区三区国产在线播放| 今日头条成人一区二区三区四虎精品| 男人天堂新在线| 爱爱动态120秒| 手机看片1025| 激情婷婷丁香| 性色一线| 青青草吊丝| 亚洲人妻色图| 久久综合资源一区二区| 欧美激色| 美女露胸露奶头| 国产高清吃奶免费视频网站| 精品视频123区小说区| 亚瑟国产精品久久无码| 九色 蝌蚪 熟女自| 九九九九精品一区| 99热免费| 妺妺跟我一起洗澡没忍住| 无码137片内射在线影院| 国产精品一区二区三区,亚洲综合| 美女啪欧美一区| 国产操偷| 五月天亚洲色图| 色婷婷一区二区三区久久午夜| 亚洲 一区二区 自拍| 中文字幕在线观| 小骚逼被操的爽不爽| 久久久一级| 国模不卡| 伊人热综合| AV色女综合| 日韩淫色网| 性色avv| 久久九九99| heyZO天然素人无码AⅤ专区| 久久精品国产亚洲AV先锋| 新怡红院| 黄色一区三区| 欲色啪| 99这里有精品| 日本污ww视频网站| 久久黄色视频一区二区三区| 强被迫伦姧在线观看无码网站| 99re在线视频这里只有精品| 亚洲资源吧| 九九这里只有精品| 中文字幕免费在线观看| 4虎在线视频| 亚洲男人天堂2| 裸体美女免费看网站青草| 日韩乱伦视频| 亚洲国产一区二区入口| 黄色人人| 亚洲无码?第一页| www男人天堂| 素颜老阿姨乱情色| 超碰人妻中文在线| 欧美综合777| 四虎免费视频| 日熟女| 亚洲无码太久| 精品国产Av无码久久久伦古装| 免费AV中文网在线观看| 亚洲视频精选| www.色吧5.com| 综合操逼| 大香蕉乱伦视频网| 色爱综合网| 久久超碰98| 人妻另类| 欧美日韩中文字幕人妻| 一级片在线观看高清无码| 久久精品国产亚洲AV片多多 | 精品国产乱码久久久兰草影视| 午夜久久久| 亚洲美女精品九九视频| 日逼97| 少妇精品| 色久桃花影院在线观看| 欧美熟爽综合| 蜜臀无码一区二区| 亚洲国产精品99久久久| 亚洲情色五月天| 色香综合天天影视综合 | 色婷婷五月天| 91超碰丝袜制服| 蜜汁欧美| 精品视频免费在线一区| 婷婷色综合| 少妇毛片久久| 九久久精| 久久综合九九| 国产久久日韩网站导航| 久超碰这里只有精品| 超碰97综合在线| 9丨亚洲一区二区在线| 亚洲不卡AV在线| 美女黄页网站| 在线 制服丝袜中出 人妻| 六月婷婷一区二区三区| 日本一区不卡| 成人AV在线电影| 99热8| 啊a一区在线| 九九九九一区| 国产AV精久久| 一区| 色网在线视频观看免费| 啊啊啊好湿久久| 国产h小视频在线观看免费| 精品一区二区成人| 老熟乱一区二区三区四区| 久久婷综合| 黄页网站成人免费| 超碰免费在线| 张柏芝国产一区在线观看| 精品一区二区三区蜜桃臀赵总| 東南亚性呦成人伦理资源在线视频| 少妇一级婬片免费放一级a性色.| 国产性刺激| 日韩性爱视频在线免费观看| www.av不卡中文字幕| 日韩午夜精品一区二区三区电影| 9997se| 国产午夜无码片在线观看影视| 麻豆区久久久久亚| 97se综合网| 在线强奷到舒服的无码视频| 欧美成人免费在线观看| 色69大色97香蕉| 久九干| 肉嘟嘟www视频在线观看高清| 香一区二区三区| 男人天堂久久精品| 91在线丝袜视频| 久久精品黄色| 四虎影院成年人片| 天天躁日日躁AAAAXXXX国产 | 人妻在线臀日韩| 国产精品黑人一区二区三区| 大香蕉啪啪啪啪在线| 国产亚洲日本精品在线| 精品无码一区二区三区| 久久三区四区| 久久日本熟妇熟色高清| 狠狠中文字幕| 国产在线精品偷| 亚洲天天做日日做天天谢日日| 亚洲丝袜二区在线| 精品中文一区二区| 久久99手机免费视频| 校园春色之综合网| 久久香蕉国产传媒一区剧情天美| 欧美久久伊人| 亚洲精品国产熟女久久久久久| 欧美日韩不卡传媒| 91精品操美女| 天天性射网| 中文字幕伊人| 一二三四区操操Av| 少妇高潮九九九九九九九| 情色日播放AV| 99re3这里只有精品| 天天综合,91综合永久| 亚洲成人福利电影免费 | 中文字幕人乱码中文字的预防方法 | 国产欧美精品日韩区二区麻豆天美| 丁香五月影院| 丁香五月激情婷婷| 亚洲色图久久精品蜜| 五月丁香| 欧美综合骚| 五月激情天| 人看人人摸人人操| 99色在线视频| 精品久热| 久久国色天香香蕉| 久久久久久久久久黄色网| 91色噜噜狠狠| 亚洲性少妇| 加勒比综合a∨| 亚洲自拍青操视频| 99999国产| 欧美精品三级黄片| 亚洲天堂一区| 93人人操人人| 亚洲欧美九九| 中文字幕亚洲欧美在线不卡| 99亚洲国产精品色一区二区三区| 欧美日韩亚洲天堂| 亚洲色图 综合| 俺去俺来也在线www| 少妇内射www在线观看视频| 风骚少妇视频中文字幕| 中文操逼字幕| 东京热男人的天堂精品| 热99这里只有精品| 狠狠色综合网| 四虎影库国产精品免费| 蜜臀久久久| 区自美91| 操国产逼| 伊人操操| 在线综合色| 久久草大香蕉| 日韩美一区| 香蕉一区二区三区在线视频| 欧美熟女妇同| 97超碰这里只有精品| 国产a级午夜毛片| 欧美岛国精品在线观看| 岛国网址国产 | 国产一区二区三区影片| 日本精品国产视频| 天天做天天爱| 欧美人妻久久精品二区三区| 美女超碰978| 任你干在线视频| 日本道不卡| 亚洲 欧美日韩 另类| 激情丁香五月| 国产情色第一第二页在线观看| 中文字幕诱惑制服人妻丝袜美丝袜美 | www久| 日韩午夜啪啪视频| 理论久久婷婷网8| 国产无码精品成人| 久妇网| 97 国产精品| 91久久久亚洲| 91久精品| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲中文国际强奸字幕| 韩国三级三级BD在线| 色与欲影视| 欧美特大黄一级片片免费| 国产精品久久久久久夜夜夜| 黑人娇小av在线播放| 欧美视频一区二区三区| 国产suv精品一区二区四| 久久婷婷五月| 中文字幕欧洲有码| 每日更新AV| 久久噜| 天天爽夜夜爽夜夜爽精| 国产高清不卡视频| 日本视频在线中文字幕| www久| 超碰99在线| 人妻嗯啊啊在线播放| 高清无码91| 亚洲av影院在线观看| 自拍第一页| 激情综合网一盗摄| 午夜激情成人在线观看| 亚洲图片 激情小说| 3D污黄视频在线观看| 久久精品91| 殴美在线AⅤ| 78m啪啪啪| 久久熟女人| 午夜αv| 大香蕉在线视频15| 亚州熟女乱伦| 久久AV色| 97色色视频| 2023天天操夜夜操| 中文字幕在线观看AV| 欧美天天综合| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 欧美熟女激情| 一区二区三区精品视频| 啊啊啊操死我| 久久一二三四不卡 | 五月婷婷激情网| 日本成a人v网站在线观看| 97一区二区三区视频| 强奸a片网| 成人性爱全视频观看| 限制级中的三级片中的黑粗大屌屌日人妻熟女| 大香交伊人网| 久/久精品99看9| 1956日韩精品| 色99久草| 91亚洲人电影| 欧美性爱www免费版| 99在线精品观看视频中文| 国语人妻精彩刺激| 三级激情网站| 日本幼女18+| 色999偷自拍拍| 综合色色网| 日本三级日本三级99| 久久久国产精品人妻丝袜| 五月激情小说| yazhousetuoumei| 顶级丝袜熟女一区二区三区 | 欧美色图20p| 一区三区啪啪| 国产精品人人爽人人做可爱福利| 伊人麻豆传媒| 91热色| 夜夜高潮夜夜爽| 婷婷成人五月天| 免费一级毛片在线视频观看| 免费αV在线视频| 日韩精品-原创伙伴| 伊人网在线视频| 日本丝袜美腿人妻九九| 爽爽歪在线视频| 中文字幕在线日亚洲9| 日韩激情毛片一级久久久| 蜜臀久久久99久久久久| 夜夜免费视频| 日韩国产九九精品一区二区三区毛片| 色婷婷网| 丁香五月色| 97综合在线| 6080YYY午夜理论片在线观看| 精品三级在线专区| 国产毛片久久久久久久| 亚洲精品一卡二卡三卡福利视频网站| 美女骚尻视频| 国产97在线视频| 97人妻免费中文字幕| 少妇3P性爱自拍| 欧美三级一级| 91色色色| 青青草日韩无码| 亚洲乱色视频一区、二区在线| 91n美女视频| 蜜臀亚洲中文| 欧美色图 人妻| 国产欧洲精品亚洲午夜拍精品| 嗯嗯啊啊的视频| 久久黄片国产一区二区| 麻豆AV一区二区| 综合久欧洲| 亚洲青色欧美| 操逼操操操91| 九九AV| 男人天堂久久日韩| 久操免费电影| 少妇精品久久| 伊人久久大香大香线蕉中文| 日韩成人精品中文字幕| 亚洲乱色视频一区、二区在线| 色综合99999| 夜夜夜爽www精品视频| 视频二区美腿制服人妻欧美| 成人午夜高潮av猛片| 欧美视频一区二区在线| 日本三级中国三级99人妇网站| 欧美激情视频一区二区三区不卡| 加勒比海成人视频网 | 亚洲男人天堂2016| 黄色av片三级三级三级免费看| 首页亚洲国产高跟丝袜诱惑视频| 1区2区3区中文字幕日韩| 欧美综合色图片| 日日插夜夜| 久久人妻视频| 欧美91在线+|+欧美| 夜夜嗨视频| 精品无码不卡视频| 97大色网| 乱色老一区二区三区的观看方式| 97精品在线视频| 日韩成人性爱电影在线播放| 久久久久久久 九九九九九九九| 人妻激情视频| 男人高清无码一区二区| 久久久久久波多野吉衣高潮| 最新亚洲黄色免费电影| 欧美日韩亚洲少妇寂寞影院正在播放 | 蜜乳性色无码专日粉嫩骚逼AV| 自拍欧美| 成人免费看吃奶视频网站| 久久伊人网视频一区二区三区 | 国产精品操| 激情开心五月天| 大JI巴好深好爽又大又粗视频| 国产在线76页| 五月天伊人| 极品尤物在线观看| 男人天堂久久精品不卡| 蜜桃久久久久久久久久久久| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 日本精品网站在线中文| 久久性视频| 国产精品一区二区麻豆| 色综合久| 亚洲天堂资源网| 丁香五月性爱| 亚洲第一页第二页激情| 偷窥自拍亚洲色图| 少妇人妻好深太紧了vr91| 久久精品99久久久久久| 亚洲av无码成人精品国产| 亚洲欧洲自拍| xxx亚洲午夜天堂| 日韩精品一区二区日韩| 久久久久幕乱码| 亚洲 欧美 中文 日韩超碰| 18禁网站在线播放| 五十路成人在线视频二区三区| 九九色热| 最新日日夜夜天天干干| 密臀国产在线| 免费的av网| 丝袜剧情| 色综合av综合久久| 欧亚韩国999| 91在线综合网| 强奸乱伦av电影| 亚洲欧美色图片| 最新9久久久9免费视频| 精品国产久热在线观看| 日韩成人精品中文字幕| 91精品老女人| 欧美三级不卡| 97超碰欧美| 高潮综合网| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚洲中文字幕av| 人人妻人人玩人人澡人人爽| 久jiu久神马影院| 欧美激情性久久久久久| 欧美在线干| 精品乱子一区二区三区99| 九九探花视频在线观看| 秋霞免费无码视频日韩A片| 久久久草草精品| 综合干干干av久久久综合网 | 屌色在线97视频| 欧美色女人| 中文字幕超碰CAO| 夜夜一区二区| 91亚洲人| 亚洲综合113页| 黄片www.| 欧美一区二区男人天堂| 亚洲色图综合网| 超碰性爱97| 被体育老师抱着c到高潮| 日韩在线电影| 日韩av情韩国爱禁区av一区二区 | 五月天婷婷色色| 黑丝自慰喷水网站| 亚洲密乳AV| 18禁精品网站在线看| 伊色综合天堂色97| 精品一区二区综合熟妇| 亚洲国产精品无码AV久久久| 777超碰| 日韩色女精品| 日韩中文字幕2020| 色综合久久夜色精品国产天堂| 长长久久曰曰夜夜成人网| 自偷自拍的亚洲视频| 18禁免费视频| 亚欧韩av| 欧美天天性| 91少妇香蕉久久精品| 日韩钢筋无码高清啾啾啾| 女同亚洲欧美一二三区久久电影| 日本一级二级三级网站| 99精品视频在线观看免费| 天天干天天操天天操夜夜操天天操 | 日本成人A片免费看| 影音先锋乱| 少妇人妻好深太紧了vr91| 正在播放国产精品一区| 高潮毛片无遮挡高清免费| 成在线人在线观看视频| 国产亚洲禁久一区二区| 狠狠穞A片一區二區三區| 日韩性爱小视频在线观看| 九久9精品| 91狠狠综合久久久久久| 性爱AV天堂| 国产亚洲日本| 乱色老一区二区三区的观看方式| 少妇九九九九| 中文久久久| 人人看人人爰人人操| 国产人妻天天干精品| 精品超碰中文在线| 日本高清加勒比| 亚洲男人的天堂va亚洲男人社| 欧亚 另类 久| 又粗又长又爽在线观看| 操逼逼无码| 亚洲熟女国产综合另类| 国产女人9999| 国产精品日本无码A片| 26uuu性物| 天天干天天做| 天美传媒av一区二区| 神马久久久久久久| 麻豆啪啪啪视频| 亚州精品丝袜-不卡成人免费| 粉嫩久久久极品| 人人妻人人澡人人爽久久av| 熟妇综合一区二区三区| 5月婷婷6月六月丁香| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 97网址97| 国产馆| 久久久蜜桃一区二区三区| 色婷婷丁香五月| 久久啊啊啊视频| 日本人妻最新在线中| 丁香五月天堂网| 强奸乱伦动态污图免费 | 亚洲自拍欧美色综合| 日本一久是| 中国AAAAAA黄色片| 长长久久88视频| A男人的天堂| 亚洲天堂在线怕怕视频| 蜜桃久久综合视频| 天天看片青娱乐| 性爱av在线免费观看| 中文字幕在线播放2中文字幕在线观看2| 中文字幕免费在线观看| 日本操大逼| 91N综合网在线| 日本天天操| 少妇丝袜在线观看AV| 婷婷五月天激情网| 2003天天干夜夜操| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 亚洲一区二区在线观看91| 一本一道波多野毛片中文在线| 77777亚洲蜜臀精品久久综合蜜臀| 欧美自拍网| 国产超碰| 嗯嗯啊啊啊好爽| 精品一区二区三区蜜桃臀赵总 | 日韩免费三级黄片电影| 91av天美性媒精品视频| 日韩操p| 久久m| 人人干人人搞人人摸| 少妇色欲综合网2| 射 色综合| 岛国网址国产| 亚春色色| 午夜呻吟欧美| 草草影院日本第一页| 伊人午夜福利视频| 日韩激情啪啪| 精品国产乱码久久久| 99久久无色码| 国产福利av精彩对白| 超碰95| 97超碰这里只有精品| 9 9精品一区二区三区| 人人操人人色人人摸| 亚熟hd视频在线| 国产又粗又长又爽又色| 97综合网| 老司机香蕉| 亚洲欧洲色情高清| 婷婷五月天久久久| 国产精品区在线12p| 九九九一二三| 亚殴在线| 懂色AV蜜臀无码精品APP | 国产捆绑一区| 久久精品人妻一区二区三区| 97硬碰| 资源在线观一 二| 亚洲日韩成人性爱视频| 人人做,人人操,人人摸| 97大色网| 97精品综合久久| av在线免费一区二区| 日本一级真人黄色性爱视频| 久久精品女同亚洲女同13| 美女91在线观看| 九九探花视频在线观看| 亚洲精品一区二区精品| 亚洲欧美在线丝袜| 欧美日韩亚洲少妇寂寞影院正在播放| 麻豆精品三区视频| 国产久久日韩网站导航| 欧美国产日韩高清在线| 人人玩人人添人人澡免费| 啊啊啊在线观看| 91中文字幕制服丝袜免费视频| 色超碰综合| 99在线免费视频| 成人免费看吃奶视频网站| 久久亚洲AV无码白度| 91在线欧美| 久久超碰网| 91亚洲最新在线| 婷婷性网| 在线播放欧洲免费av| 亚洲亚洲亚洲天堂天堂| 91亚州欧美| 天天爽夜夜欢视| 日日橹狠狠爱欧美超碰| 91夜夜蜜桃臀1区2区3区| 超碰99热中文字幕| 亚洲男人天堂2013| 91激情综合| 欧美色图在线视频少妇| 精品人妻视频一区二区在线播放| 色天天野狼综合社区| 久射吧| 无码九九| 日本三级精品| 亚洲图片欧美色图| 成人av在线播放| 日本操大逼| 免费看久久久性性| 亚洲欧美日韩精品久| 综合色99| 麻豆区99999| 亚州乱码中文字幕综合久久久| 亚洲诱惑| 国产又粗又长又大的视频| 久久精品久| 精品午夜福利国产一区二区在线观看| 久热九九| 欧美韩国你懂得在线| 熟女91网| 91久久| 97人妻免费中文字幕| 狠狠中文字幕| 99在线啪| 亚洲色婷婷综合久久一区二区三区| 国产精品爆乳懂色蜜乳| 乱伦日本色图AⅤ| 欧美专区第一页| 亚州国产成人精品女人久久| 国产夫妻性生活视频| 国产精品不卡一区二区三区av| 操逼视频国产无套| 无码精品一区二区三区潘金莲| 无码国产精品午夜不卡(| 久久97资源 网| 人妻天堂综合网| 男人天堂久久精品| 日韩无码精品综合久久| 久久av无码| 日韩性爱1级片视频| 大香蕉一线视频| 97国产精品国| 伊人久久大香蕉线AV五月天| 日本一卡二区在线| 国产精品无套内谢| 91国产丝袜足交精品视频| 丰满熟妇大乳做爰| 国产探花精品在线| 日本九九久久99| 成人自拍三级在线观看| 久久香蕉综合一本到3atv| 天天看特黄的免费网站| 啊啊啊好多水| 1024人妻熟女一区二区三区| 久久9亚洲| 搡老女人911熟妇老熟女| 色婷婷丁香五月| 天天做天天爽| 清纯唯美综合| 看一级特黄a大一片| 久久日本熟女精品一区| 天天操天天干一区二区 | 91色色综合| 国产高清在线观看欧美| 免费99精品国产自在在线| 国产成年免费大片黄在线观看| 最新av在线| 色欲av一区二区三区蜜芽| 欧美97日韩精品| 国产亚洲性生活视频播放| 久久天天性久久伊人| 日韩啊V| 大香蕉一人在线| 自拍偷拍 高清无码| 十八禁电影伊人网| 成人美女av| 9久久久久久| 思思热在线观看| 97色网| 精品一久久久| 日韩精品黄片免费观看| 国产91丝袜 在线播放| 91在线页| 久久性生大片免费观看性| 嗯嗯啊啊用力视频免费| 国产一级137片内射麻豆| 热的中文 热的有码 热的国产| 人成午夜免费大片| 99热在线播放| 粉嫩AV一区夜夜嗨| 激情五月综合网| 久9re热视频这里只有精品| 目产99999久久999| 亚洲精品国产熟女| 曰韩香蕉97| 草莓精品视频| 欧美天天干| 曰本91情色| 久久美女福利是上海美女| 中英熟女操女| 中字幕人妻一区二区三区| 日韩人人精品| 精品.99999| 久久婷婷综合国际产色怕| 国产色图乱伦| 97中文字幕一区| 日韩精品99久久久久久中文字幕 | 欧美少妇一区二区三区| 日本操嫩b网| 密臀在线一区尤物| 视频在线中文字幕| 开心激情站| 日本高清_区二区三区| 99热在线观看| 人妻第一页| 亚洲 图片 欧美 色图| 美女刺激久久国产欧美| 欧美性爱日韩性爱| 综合网91| 国产精品一二三| 香港成人一级视频在线青青草| 在线国产探花| 五月综合婷婷久久网站| 91午夜无码| 被男人添B超爽视频| 日本成人免费一区二区三区| 欧美激情区| 成人情色综合网| 国产一区二区在线看| 色婷婷一区二区三区久久午夜| 禁片 高清 在线观看视频网站| 欧美日韩中文亚洲v在线综合| 狠日操| 国语国产操逼伊人AV网| 青娱乐福利99| 国产亚洲精品无码三区| 激情五月天插| 色综合av男人天堂| 亚洲自拍偷拍视频在线| 曰韩香蕉97| 国产污视频麻豆传媒一区二区| 97超碰国产精品| 99久久这里只有精品| 麻豆国产免费影片| 久久精品美女一区| 婷婷五月天补不补| 一区,二区,三区网站| 性爱动态120秒| 国产精品久久久久绯色| 性性久久| 亚洲熟女乱综合一区二区三区| 高清不卡 中文 人妻| 人妻少妇精品久久久| 丰满少妇精品一区二区| 上特色A在线| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 日韩精品第3页| 精品一区二区三区四区外站| 玖玖大干人妻| 国产资源中文字幕在线| 九月丁香综合网| 99激情| 蜜桃中文字日产乱幕4区| 五月天亚洲网| 国产美女在线精品免费看| 精品伊人久久久大香线蕉小说| 天综合网| 大白逼三四级| 精品欧美老熟女一二区| 岛国黄色大片网站| 成人久久无码www| 乱人乱色一区二区三区免费| 婷婷中文字幕| 亚洲欧美日韩精品久久久一区二区| 无码抄逼网| 亚洲综合码| 久久精品超碰| www.大香| 成人色女网| 亚洲欧美天堂| 97干在线| 日本最新1区2区3区| 成人自拍三级在线观看| 亚洲,欧美,春色,另类| 中出人妻中文字幕91在线| 黑人精品XXX一区一二区| 黄页网站免费高清在线观看| 亚洲操操操| 色盈盈影院| 亚洲欧美不卡线| 天天日天天爽| 97亚洲国产| 岛国在线一区二区三区| 超碰夫妻97| 乱伦一区二区三区‘| 美女露胸露奶头| 91熟女视频| 俺去久久| 中文字幕丰满子伦无码专区在线视频最新| 九九香蕉网| 九九热精品视频六| 67914亚洲精品| 亚洲女人91| 日本一区二区三区精品| 大色综合| 江都AV在线| 成 人 A V免费视频在线观看| 久久久久久精品免费看A级| 青青草日韩免费观看高清在线| 超碰国产精品久| 91久久久视| 一区操逼日比视频| 日本道日本道中文字幕日本道最新日本道在线观看 | 日本狂喷奶水在线播放212| 人妻五十路在线| 91九色丨国产丨爆乳| 岛国激情视频在线观看| 婷婷五月天无码| 国产理论视频在线播放| 欧美在线干| 天堂蜜桃无码视频一区二区| 天天影视色香欲综合网小说| 国产精品午夜成人福利| 黄页视频网站野外| 亚洲男人在线观看天堂| 国产亚洲人妻综合日韩 久久| 免费A片三p视频| 99热日| 欧美亚州手机在线| 中欧人妻丝袜中文字幕| 精品国产99| 亚洲天堂久久| 国产精品久久天天干| 日日干夜夜骑| 久久久999日本大片| 操逼逼中文字幕| 91欧美亚洲| 蘋果手機免費看成人Av| 在线性黄高清免费视频| 精品国产三级av韩国在线| 超碰在线成人电影|