久久亚洲成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
返回資訊列表
久久综合久色欧美综合狠狠| 操逼片国产| 超碰97综合网| 国产区91柔拿会所技师| 中出789在线视频| 91亚洲情色| 91精品久久久久久综合五月天| 精品中文日韩字幕视频| 女人被男人桶爽视频网站| 超碰午夜在线| 一区二区乱码福利| 五月激情综合网| 亚洲影视第一页| 天天操天天干一区二区| 久久人妻一区二区三区高清| 乱伦日本色图AⅤ| 色九九综合AV| 乱伦系列一区二区| 夜夜骑日日| 亚洲最大网站av| 超碰九7免费| 亚洲色吧网| 另类图片天天影视| 丝袜狠狠草尤物 91| 免费看黄片现成| 在线97在线| 精品无码久久久久久国产浪潮| 亚洲情色1区| 日韩熟女操逼| 91色色综合| 另类一区| 69天堂| 国产精品天美传媒| 久热香蕉精品在线视频| 9久久久久| 91超碰人人| 人妻色偷色噜| 久久婷婷欧美| 五月激情视频| 日韩欧美午夜一区二区| 0755午夜福利视频| 色女综合| 久久久免费的精品| 亚洲Av诱惑| 婷婷五月天补不补| 伊人激情| 精品亚洲国产成人AV制服丝袜 | 欧美日本国产日韩激情视频| 欧美激情精品久久久久久| 熟妇熟女视频一区二区三区| 二男一女成人A片| 啊啊啊啊在线播放| 手机av天堂久久久久| 八戒午夜福利理论片| 后入式在线免费观看60秒| 入口操逼网站| 国产精品白领在线观看| 精品9999| 温婉少妇玩3p| 国产又操| 国产自产一区视频在线| 人人操人人93| 国产精品毛片| 亚洲 欧美 另类 日韩 人妻一区| 噜噜在线| 美中日韩无码| 99re免费视频精品全部| 日韩日韩日韩-国产乱码精品一区二区| 99国产精品人妻人伦| 家庭乱伦性爱av| 9久精品| 久操av在线| 日本亚洲vr欧美不卡高清专区| 黄色AAAAA欧美| 精品人妻一区二区三区免费视频| 啊啊啊97视频| 欧美精品成人亚洲| 91超级碰碰| 人人 操人人 操人人| av影院十区| 韩日巨乳美女免费视频在线观看| 久久久一热在线播放| 久久肏大逼| 国产极品精品美女视频| 亚洲无码精品AV久久久| 99re视频在线播放青草| 亚洲综合夜色| 欧美一级专区免费大片| 天堂麻豆天美| 99.色网| 水野优香在线观看| 色色色综合网| 91蜜臀在线久久久久| 免费a在线播放v| 人人摸人人添人人操| 成人蜜乳小视频网站| 狠狠色五月亚洲91| 欧美精品成人一区二区在线观看 | 看日韩美女二区三区免费操逼视频 | 91丝袜在线视频| 欧美色图偷拍另类| 天天摸夜夜摸| 神马久久中文字幕| 久久內射| 亚洲色图 图片| 日韩三级网址| 亚洲AV高潮| 欧美在线色图| 我中文字幕6区| 亚洲大胆人体av| 色好看av| 中国91AV| 伊人一级免费黄片| 十八禁的黄污污免费网站| 黄色片,com| 女同女同恋久久级三级| 欧美亚洲尤物久久| 人妻99p| 全免费a敌肛交毛片免费| 亚洲蜜乳av| 美中日韩无码| 欧美婷婷五月天| 九月婷婷| 欧美A√综合网| 玖玖爱一区在线| 金典av| 牛牛久久国产精品视频一二三| 粉嫩小泬久久久一区二区| 国产亚洲日本| 久久久一区二区三区四区五区| 欧美色视| 国产亚洲性生活视频播放| 亚洲国产一区二区入口| 国模精品娜娜一二三区| 又大又黄国产| 91艹| 国产 日韩 欧美一区| 亚洲AV成人精品网站在AV| 亚洲欧美综合区自拍另类| 99精品视频在线观看免费| 欧美性爱另类综合| 九九热五区| 成人熟女区| 9 1超碰九色| 亚洲爽图| 亚洲av影院在线观看| av大香蕉| 97色涩| 78操B| 26uuu性物| 全球成人中文在线| 国产一区二区三区不卡手机在线| 久久综合av| 亚洲久9| 亚洲精品一区二区精品| 91GD.COM| 亚洲色图国产另类| 色爱亚洲| 国产亚洲精品美女久久久m| 夜夜爽爽爽| 91N综合在线| 国产精品第一页国产大屁股视频免费区| 草草电影院| 日本人人操人人操| 操b网站亚洲无码| 欧美人妻制服| 粉嫩av在线一区二区| 99re9在线| 精品二999| 9丨久久九九九| 小日子操bb在线看| 亚洲av无线观看| 五月天啪啪| 欧美色另类| 欧美日韩国产成人高清| 欧美国产伊人久久久久| 热久久国产精品视频大陆精品| 哈哈操 大香蕉| 性久久久| 国产精品丝袜久久亚洲不卡| 秋霞 色色| 亚洲成人网站在线观看| 中日韩久久久免费看| 无码137片内射在线影院| 激情五月天色播| 性交一区二区在线播放| 影视综合无码少妇| 日韩AV中文字幕电影| 欧美色91| 久草五月| 熟女少妇视频| 久久久九九网站| 欧美第二页午夜| 岛国片在线播放| 日韩欧美视频青青| 96麻豆精品一区二区三区| 久久精品国产亚洲AV成人直播| 久久偷拍人| 日韩精品资源专区二区| 久久超碰大香蕉| 综合影院永久入口国产| 日韩影片中文字幕一区二区三区| av网站在线看| 成 人 影视 一区 二区 三区 四区| 久草这里只有精品| 婷婷综合视频| 九九九色| 91新在线欧美| 岛国片在线播放| 精品久久久久黄少妇| 久久人妻| 国产日韩欧美| 国产乱人伦AVA麻豆软件.| 大香蕉一人在线| www.av在线视频| 欧美日韩青操| 天天草天天干天天日| 一级免费精品| 97天堂| www.91视频网| 欧美色66| 日本一级二级三级网站| 0755午夜福利视频| 人妻天堂综合网| 久九九九| 国产91精品久久久久久久网曝门| 人妻丰满熟妇一区二区三| 乱久久久| 91无码中出人妻视频| 久久久久99999| www.狠狠干.coom| 影音先锋乱伦资源| 一区二区播放| 国产欧美美女免费观看视频| 免费观看网黄| 中文字幕在线第二页| 五月婷色| 欧美伊人久久综合网| 夜夜操一区二区| 亚洲日韩精品在线播放| 性色AV网站| 欧美 牲| 五月婷婷丁香| 91人妻精华帖| AV女优男人的天堂| 老司机久久| 久久美女福利是上海美女| 熟妇一区二区| 久久女同性恋一二区| 五月色网| 性爱网站一区二区| 91丝袜人妻| 欧美激情超碰777| 一起草精品人妻| 97超碰欧美中文字幕| 人妻熟女一区二区三区在线| Julia在线播放亚洲久久| 欧美日韩午夜精品一区二区三区| 四季av一区二区凹凸精品小说 | 一区二区三区四区理论片| 澳门人妻久久| 操碰97| 干干干天天| 天天做天天爱| 亚洲天堂电影网99999| 99热aaa| 激情五月天色色| 日韩乱伦AⅤ| 另类小说欧美激情校园春色| 一级免费精品| 中文久久96| 亚洲天堂人妻一区二区| 熟女视频久久| 中文字幕一区电影在线观看| 精品高清一区二区三区三州| 呦呦影院| а√天堂资源官网在线资源| 91内射| 91亚洲欧美激情| 亚洲欧美综合网站| 欧洲亚洲天堂精品| 天天舔天天日天天射| 亚洲日韩av一区二区三区百合| 岛国精品视频在线观看| 人妻av在线| 十八禁的黄污污免费网站| 成人av性爱电影在线观看| 91亚洲欧美激情| 欧亚日本情色| 亚洲人妻久久久| 亚洲天天影视色综合| 神马久久久久久久久久| 美女的肌被草喷水视频| 色狠狠综合噜一二三区| 动漫片子网站3黄| 熟妇人妻一区二区三区| 国产日韩精品一区二区三区| 射丝袜高跟鞋99| 天天看少妇| 99999无码| 亚洲最大黄网| 亚洲涩涩| 久久精品成人| 97干在线视频| V A在线| TS人妖另类精品视频系列| 女人综合网| 淫荡网址| 91亚洲色图| 人妻一区二区三区四区视频| 亚州熟女乱伦| 亚川综合视频| 蜜乳av首页| 亚洲激情网一二三四区| 精品网站9999| 99蜜桃臀久久久欧美精品网站| 国产美女激情| 天天综合,91入口| 成人青青草原伊人| 一起草在线视频| 精品久久久av无码免费| 乱伦av国产| 丁香成人五月天| 国产13区| 亚州九九九精品视频| 88在线一区二区三区| 国产一线二线三线av| 91国模| 亚洲无码超碰免费| 十八禁视频网站| 蜜桃成人1区2区3区| 超碰在线人妻不卡| 黑人粗大V S日韩女优视频| 97色操| 操碰97| 国产一级不卡在线观看| 久久人妻视频| 亚洲熟久久| 久久九九97| 亚欧毛片基地国产毛片基地| 欧美成人性爱视频大全| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 91扒丝袜综合在线| 影音资源男人日韩| 国产精品白领在线观看| 韩国三级理论在线| 久草综合京东| 久久久久久久久久久精| 超碰免费人妻人人| 欧美性爱在线无码| 伊人青青草久久| 九九九九亚洲| 一区二区影院| 偷拍超碰| 九九九九9999| 午夜丁香| 欧美 综合 亚洲| 天天草天天日| www.激情| 青青青在线高清视频在线一二三四区| 男女激烈网站最新| 亚州伊人色综台| 日日噜噜夜夜久久亚洲一区二区| 好色综合| 丁香五月婷婷啪啪| 91综合天天看| 手机在线人成免费视频| 麻豆 亚洲 97| 强奸乱伦 亚洲一区| 天天爽天天| 在线 欧美 亚洲| 日韩精品人妻一| yirendaxiangjiashipin| 亚洲性天堂| 曰韩无码777| 国产自啪精品视频网站黑丝| 国产高清精品一区二区三区毛片 | 激情婷婷| 大香蕉中文网| 国产一级片| 青青草女人天天干| 亚洲砖码砖专无区2023| 精品视频久久区| 强奸乱伦AV网站| 日夜久久久九九九久| 精品少妇999| 婷婷五月天小说| 日韩91网| 99精品视频在线观看| 99少妇| 欧美色五月| 中文字幕熟女人妻丝袜丝| 久久亚洲AV无码专区国产精品| 亚洲色图美腿丝袜| 欧美视频一区二区在线| 99热线麻豆 | 青娱乐999| 人妻天天爽夜夜爽精品2| 欧美在线啊啊| 91人人看| 久久精品国产AV一区二区三区| 丝袜性亚洲| 亚洲日韩精品久久久久一区壹牛 | 一区二区你上我| 欧美激情专区| 操B久久| 国产AV精久久| 欧美日韩精品久久久久东北老熟妇| 黄色av一区二区在线| 欧美日本不卡在线| 富二代亚洲精品99| 国产精品亚洲天堂网址| 我想要啊 啊 啊| 99热这里只有精品地址| 91宗合网| 9精品在线| 91爆操视频| 熟妇人妻精品一区二区| 麻豆黄色五月天| 日韩激情啪啪啪| 欧美久久人体| 人人手机欧洲亚洲国产人妻| 超碰成人公开| 成人无码欧美一级A片狼牙直播| 久久久人体| 性爱视频无打码在线观看| 嗯嗯啊啊的视频| 超碰国产在线| 黄色大片免费在线| 亚洲精品九九九九九九| 青娱乐av在线| 久久久精品成人国产| 青娱乐91| 九九av| 亚码激情| 国产乱伦性爱AV| 家庭乱伦麻豆| 亚洲色天堂九9| 久久综合久久综合人久久夜精品| 日本一级二级三级网站| 日本熟女不卡视频| 玖玖综合网| 久久久男人的天堂| 久草精品国产蜜臀| 婷婷久久久| 欧美一级特黄淫片在线观看| 蜜臀久久99精品久久久久久酒店| 亚洲超碰综合网| 77777亚洲蜜臀精品久久综合蜜臀| 国产精品宅男免费| 久久久久久久免费A片国产成a人亚洲精∨品无码 | 麻豆天美国美国产| 天天做日日爱夜夜爽| 女性喷水高潮在线观看| 中文字幕乱妇免费视频| 久久视频,这里只有精品| 99久久这里只有精品| 在线人人人人人人精品超 | 亚洲性高潮| 骚逼自拍99| 97色诱| www鬼畜国产男人的天堂| 五月天婷精品激情| 爽极品影院| 国产强奸AV在线| 男女国产精品| 一级AAA片一区二区三区| 蜜桃一区二区三区| 91 亚洲情侣偷拍 久久| 欧美熟妇精品黑人巨大一二三区| 人夜夜精品网站香蕉嫩草| 黑人精品成人一区二区三区| 视频黄色国产一级| 一本色道久久天天射天天干| av网站免费看| 亚洲欧美电影| 好属操| 亚洲欧美另类图片| 久久久9999| 夜色91| 久久69| 亚洲日韩国产精品| 精品久| 啊啊啊啊网站| 国产精品精品系列在线观看| 思思热在线视频在线| 日韩无码一级黄色av片| 91国产操逼视频| 日本韩高清无砖码22o| 亚洲少妇在线观看| 日韩亚洲欧美中文字幕| 国产精品com| 欧美日韩*字幕一区| 超碰日韩人妻| 国产最新小视频在线播放下载 | 污色区网站| 精品欧美老熟女一二区| 老外又粗又长一晚做五次| 精品久久久久久无码| 天堂а√在线最新版在线| 国产一区二区三三视频| 强奸乱伦Av网| 亚洲五月婷| 欧美精品四区| 夜夜操av亚洲一区二区| 欧美色www亚洲国产阿娇要播| 99人妻| AV乱伦国产| 性久久| 操屄不卡视频| 另类综合另类| 91美女视频在线免费观看| 欧美日韩人妻少妇 一区二区三区| 妇女乱色二区| 懂色aV一区二区天美传媒| 欧美gv在线观看| 亚洲字幕一区二区| 五月天社区| 91色黑人少妇| 国产精品69久久久久孕妇欧美| 传媒在线观看一区二区三区| 丰满的三级少妇欧美久久久| 国产成年女黄特黄| 人人操人人干网页| 九九色逼| 久久99手机免费视频| 职场同事知名国产国产精品久久欧美日韩 | 九九内射在线| 国产日韩人人| 国产视频第二页| 人人操人人干xxx| 亚洲一区二区三区AV无码| 蜜桃臀av在线观看| 中文熟女五十乱码在线| 美女诱惑一区| 天天精品| 99只有精品| 97免费视频在线| 亚洲精品xxx| 另类图片五月| 超碰 国产熟女精品一区| 极品另类| 色优久久| 欧美熟女逼久久久久久| 久久国产AⅤ| 欧美激情综合| 九九亚洲色在线观看| 欧美激情激情xxxx欧美专区| 五月婷婷AV| 牛牛久久国产精品视频一二三| 91精品久久久久| 国产欧美精选自拍一区| 婷婷四五区| 噜噜瑟| 中文字幕一区二区三区高清| 暖暖精品二区三区观看| 久久久999国产精品| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 精品日韩产品在线,日韩在线不卡视频,欧美日韩免费专区/久, | 69视频入口| 99久re热视频精品98| 青草影院内射高潮| 免费?级毛片无码?∨蜜芽试看| 九九亚洲| 超碰色97| 婷婷色在线| 91操熟女视频| 极品白嫩美女白浆成人福利在线看| 久久精品老司| 亚洲成人性爱网站在线播放| 男人天堂站| 久久久少妇| 99re9在线| 欧美高清色| 激情五月天丁香| 精品丰满熟妇人妻一区| 国产激情在线观看| 亚洲 欧美 日韩另类 麻豆| 国精精品无码一二三区水多多| 久久久久久中文版| 精品人妻一区二区视频| 啊啊啊啊啊啊啊啊啊啊在线观看| 日韩免费高清大片在线| 国产传媒一区日韩| 色在线亚洲视频www| 久久久久9999妇女| 高潮毛片无遮挡高清免费| 精品一区二区三区麻豆| 色情五月婷婷| 在线中文字幕视频| 天天综合AV| 精品国产一区探花在线观看| 偷拍亚洲高清图片| 精品国产一区二区三区在线播出| 欧美韩国你懂得在线| 日韩综合成人免费视频| 国产十八禁视频| 操高情无码| 夜夜骑日日| 婷婷久久综合| 国产精品人妻免费精品| 人人超碰在线观看黄| 中文字幕乱在线伦视频中文字幕乱码在线| 极品色电影院| av资源在线观看少妇| 亚洲97精品| 日韩熟女精品无码专区一区二区| 久综合国内精品自在自线| 碰超人人在线一区二区三区| 色婷婷网| 日日操免费视频| 9 9无尺码天堂网| 婷婷色影院| 日本一区不卡| 校园春色综合香蕉| 五月天伊人| 超碰日韩人妻| 大香蕉手机在线| 不卡超碰护士AV在线免费播放| 欧美特大AA级黄片| 91老妇女| 佐山爱中文字幕| 粉嫩在线一区二区懂色| 精品人妻一区二区三区四区不卡在| 91黑丝美女| 综合色色婷婷| 99久久久无码精品国产人| 97久久综合网| 97超碰逼| 久操大香蕉手机视频在线看| av日韩国产一区二区| 懂色Av一区二区三区| 97精品97| 久久久啊啊| 操我无码| 欧美激情视频在线一区| 99re视频在线播放青草| 欧美成人综合| 少妇国产不卡| 九九色精品| 密乳无码| 欧美片第一页| 欧美美女视频| 欧美久久人体| 成人在线永久| 毛片17S| 99性爱| 亚洲骚男同com| 丝袜喷水在线| 婷婷av在线中文字幕| 成人十八禁日韩欧美一二三| 中文字幕一区二区三区人妻少妇在线| 郑州宾馆老熟女露脸啪啪| 夜夜躁狠狠躁日日躁av| 亚洲性综合| 91麻豆天美传媒HD| 久久天天摸| 久9视频| 国产性久久久| 欧美爱三级日韩久久| 后入国产| 成人青青草原伊人| 亚洲人综合| 超碰碰激情97+久| 后入人妻一区| 久久久久性熟视频| 啊啊啊啊嗯嗯嗯用力好爽 | 青青草AV色| 大香蕉92| 北野未奈加勒比av| 蘋果手機免費看成人Av| 色噜噜人妻丝袜AV资源| 少妇被玩视频二三区| 91在线色综合| 天天色粽合合合合合合合| 国产精品视频白浆免费| 无码天天操| 99久久婷婷丁香| 国产精品亚洲天堂网址| 2020中文在线一区二区三区| 999精品国产高清一区二区| 日韩av在线精品观看| 91美女在线观看| 国产成人久久精品蜜臀| 亚洲日韩天堂| 老司机福利青青草| av网站免费线看| 色色网91| 91成人久久| 日韩黄色成人性爱| 五月丁香啪啪| 久久久久13| 人妻日日夜夜精品| 色天使大香蕉| 2019午夜福利视频| 欧美后入式| 欧美劲爆第一页| 91 欧美| 极品综合| 在线人人人人人人精品超 | 国产亚洲日韩在线三区黑人| 日本色色色色色视频| 亚洲制服欧美另类内射| 超碰av在线| 欧美亚洲国产自久久| 中文字幕十五区| AV在线播放网址| 欧美综合天堂| 久久久久亚洲熟妇熟女| 国产成人无码啪| 亚洲熟女中文字幕在线| 嗯啊不要啊在线 | 超碰调教97| 日本人妻天堂网站在线播放| 中文字幕av片| 乱欲视频| 午夜精品五区| 欧美夜夜狠| www.高清无码诱惑一区.com | 一级二级在线观看| 岛国色情视频在线观看| 五月丁香色色网| 青青草吊丝| 男女香蕉一区二区| 97精品久久| 人妻一区视频| 久妇网| 久久久久国产精品人妻aⅴ天堂| 91亚洲网站| 人人操人人操人人人操| 男女一级A片大黄,一进一出| 强上我不卡卡| 欧美综色欧| 国产精品永久免费10000| 91GD.COM| 啊啊啊不要啊啊受不了了视频在线 | 美国久久一二三四| 麻豆熟妇乱妇熟色A片在线看| 日韩 国产 欧美自拍| 秋霞一级视频在线观看免费| 久久的网站啊啊啊啊啊| 久久激情视频| 免费一级精品啪啪视频| 欧美日韩高潮喷水91| 亚洲色图伊人网| 亚洲中字幕日本一区二区三区| 留下AⅤ黄色片| 青青草吊丝| 日本媚薬中文字幕在线| 乱伦Av网| 99啪啪| 成·人免费午夜在线观看| 粉嫩av在线一区二区| 91偷拍欧美亚洲| 欧美天天搞| 一级性爱aaaa| 欧美日韩亚洲五月天婷婷| 无码人妻一区二区三区免费九色| 国产 v乱码一区二| 亚洲色香| 国产女s强制榨精视频| 中文字幕精品一区二区精品| 亚洲在线观看| 逼逼逼逼操操操操操操操操操午夜剧场 | 日韩啊V| 99国产人成精品| 另类图片五月天| 久久精品店| av久日| 亚洲国产精品9999在线观看| 夜夜高潮夜夜爽| 97视频网站| 国内91熟女人妻丝袜天天精品视频在线 | 六月天婷婷| 日本不卡中文| 女人被添高潮免费视频| 呻吟 欧美 日本 中出| 伦伦成年午夜免费视频| 欧美色图 人妻| 亚洲精品毛片在线观看| 大香蕉一人在线| 午夜亚洲国产理论秋霞| 亚洲大色堂| 欧美一区二区三区四区综合| 欧美久久久15P| 国产视频一区二区三区在线免费观看| 91久久午夜无码鲁丝片久久人妻| 欧美操人视频| 日韩AV色图| 69少妇一区二区| 搞中出视频在线观看| 精品中文字幕第一页| 九九九九九九九九九五码| 精品欧美А∨无码黑人大荫蒂| 97伪v| 艹比视频国产精品| 青青草在线视频美女| 日本免费亚洲欧美| 高清孕妇孕交 交| 久久婷婷一区二| 亚欧免费观看视频| 9精品在线| 国产精品一级片在线看| 人妻天天爽夜夜爽2| 久草视频分类在线| 97免费在线观看视频| 久9久| 日韩精品国产一区二区| 天天情欲宗合网| 99热66| 青春草莓视频在线观看网址| 色婷婷婷五月天激情四射| 久久久久久日韩| 亚洲日本大香蕉1| 怡红院视频在线| 草莓精品视频在线免费观看| 亚洲丰满很很操| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 神马九九九| 欧美综合站| 欧美日韩国产另类综合| 亚州五月| 欧美色图天堂网m| 夜夜影视四色| 亚洲天天在线| 天天操天天谢| 97超碰69| 日韩亚洲Av人人夜夜澡人人爽| 丝袜足交视频| 青青伊人久久| 色婷婷丁香五月| AA级电影三区| 九九九999久久久网站| 亚洲妇色| 欧美色婷婷| 美国人人操人人操| 国产精品视屏| 蜜桃臀AV在线| 97超碰色屌| 开心激情婷婷| 中文字幕精品日韩中文字幕| 少妇综合网| 18禁久久| 嫩草伊人久久精品| 五月激情小说| 久久久久国产精品片区无码直播| 国产亚洲色停停久久99精品91| 狠狠97| 久久久99999久网站| 懂色综合久久久| 久久久精品成人国产| 亚洲激情在线观看一区| 久久春色| 婷婷国产精品一区二区| 射丝袜大香蕉| 成人热久久精品| 久jiu久神马影院| 立川理惠加勒比无码| 日本 色 导航| 国产综合日韩伦理| 国产97亚洲| 91麻豆天美国产欧美高潮| 欧美一区二区成人一卡| 亚洲AV免费在线观看| 99热这里是精品| 日韩去日本高清在| 欧美性爱中文字幕无线码| 五月丁香黄色网| 神马午夜久久| 欧美性夜| 国产精品一区二区三区在线| 夜夜嗨老熟女AV一区二区三区| 中文幕97| 中文幕97| 日韩电影天堂视频二区三区| 91麻豆天美传媒HD| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 亚洲色五月| 91色久| 婷婷丁香成人| 激情久久av一区av二区av| 黑人操一区二区| 亚瑟国产精品久久无码| AV天堂国产| 亚洲超碰97| 91美女网站| 久久伊人最新网址视频| 91亚洲色图| 曰韩人妻中文字幕在线 | 另类成人首页一区| 学生妹天天看| 老色鬼成人精品视频下载大在线观看| 久久AV色| 免费精品AB| 我要色综合网站| 女生看匆91网站| 欧美美女视频| 久久久97| 久久精品国内Av熟女高清| 欧美黄色手机在线观看| 国产精品盗摄 偷窥盗摄| 老司机深夜18禁污污网站| 1人人看人人摸人人操| 国产高清无码一区三区二区| 大黄片做爱的大的| 国产中文字幕曰本毛片| www.色婷婷色综合| 天天操天天插| 18精品一区| 久久久久久中文版| 国产亚热在线久久| 600国产精品视频| 亚洲自拍偷拍视频在线| 一区二区三区亚洲| 欧美熟女操屄| av天堂影视中文在字幕在线中文| 一色网男人的天堂| 九九久久99| 四虎在线观看网站| 成人三级片一区二区三区视频| 日日超碰亚洲| 亚川综合视频| 我要看免费韩日黄片| 亚殴在线| 欧美在线视频观看一二三四区高清| 男人的天堂三级| 亚洲综合另类| 亚洲天堂人妻熟妇视频| 婷婷色色五月天| 亚洲男人的天堂AV| 人妻色情天天操| 五月天亚洲色图| 国产精品久久久久久照片| 强奸xx国产| 丝袜性亚洲| 色九九九九九九| 老司机午夜精品视频| 能直接看AV的网站| 北条麻妃99精品青青久久| 偷拍综合亚洲| 免费试看60秒| 3D污黄视频在线观看| 欧美黑人XXXⅩ高潮交| 97在线青| 日本精品一区二区三区四区的功能| 国产精品国产自产高清AV| 丁香五月天激情综合| 蜜臀99999| 久热最新在线杭州| 日本操逼视频导航| 色一射色一射| 婷婷人妻激情| 69少妇一区二区| 日韩另类色图| 国产丝袜一区二区三区| 国产一区二区成人av在线播放| 无遮挡h肉动漫在线观看| 欧美久久婷婷| 极品色| 日韩啪啪视频| 久久综合久色欧美综合狠狠| 国产91影院| 婷婷五月天基地| 亚洲情色综合网| 最新日日夜夜天天干干| 韩日精品四区| 日韩欧美天堂| 亚洲精品xxx| 91+欧美| 91亚洲网| 丁香五月婷婷基地| 精品人妻一区二区三区蜜桃视频| 在线岛国新天堂8| 91大胆欧美| 亚洲 日本 不卡| 日本一区二区做爱的视频| 五月天久久婷婷亚洲 | 美女诱惑久久| 无码抄逼网| 啊啊啊啊啊好舒服视频| 国产女同视频在线播放| 中文久久一区| 最新亚洲黄色免费电影| 久久久久久国产精品| 高清无码学生妹高潮| 欧美十八禁网站| 日本免费一区二区不卡| 国产精品亚洲一级av第二区| 色女综合| 国产亚洲日韩欧| 99re9这里只有精品| a亚洲欧美色欲| 人妻一区二区三区| 精品蜜乳AV免费观看| 丁香五月天婷婷姐| 蜜臀在线视频| 亚洲情色五月天 | 国产农村妇女毛片精品久久| 婷婷亚洲五月***久久| 大但人体久久久久| 久久精品国产免费观看99| 超碰在线1234区| 一区二区三区精品视频| 亚州五月| 涩五月婷婷| 噜噜瑟| 国内毛片无码一级毛片| 五月综合色| 欧美姓爱综合网| 99热思思| 天天日夜干| 天堂九九九九九九九九九| 人人妻人人爽一区二区三区| 97人人干人人操| 后入人妻无码| 99综合| 欧美一区二区三区成人性生活| 国产精品69人妻无码久久久| 91久久堂| 国产成人免费观看在线视频| 夜夜嗨一区| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 欧美男人一区| 日本阿v天堂在线观看| 五月天丁香欧洲日韩| 1769一区| 欧美亚州色的图| 中国女人内射6XXXXX| 99re这里只有精品2| 97超碰碰碰| 亚洲国产精品久久AV| 狠狠夜色午夜久久综合在线| av日韩在线观看电影| 78操B| 亚洲熟妇无码一区二区三区| 精品人妻av在线播放| 九七超碰人人乐| 91 丝袜在线| 高清无码在线播放网站| 密臀成人视频久久久| 欧美激情总合网| 亚洲天堂中文字| 欧美96交| 中文字幕一区二区三区人妻少妇在线| 日本日逼高清| 99精品综合久久久久五月天| 97人肏| 黄色区免费观看中文字幕| 久久精品女同亚洲女同13| 国产精品青青草| 亚洲色图日韩精品| 爱丝福利| 91精品国产综合久久久蜜臀| 老司机深夜影院18未满| 国产9区| 九一精品牛牛一区二区| 亚一综合久久久久久久久久| 成人九九| 欧美国产一区二区三区麻豆传媒| www.狠狠| 青娱乐国产盛宴视频| 超碰色综合| 色香综合天天影视综合 | 熟女丰满人妻一区| 国产黄色在线播放观看| 亚洲中文丝袜美腿诱惑字幕| 啊啊啊快操我视频| 久热9| 日韩色欲久久一二三四区| 老女人综合网| 91国产丝袜白虎| 久久免费精彩视频| 国产成人一级av88| 国产女大学生AV| 啊啊啊啊好疼| 人妻无码一区二区三区久久99| 免费视频在线观看啊啊啊啊啊| av资源在线播放天堂| 曰韩精品视频一区二区| 密乳视频在线| 欧美色老汉| 精吧天堂| 久久久专区| 九九热五区| 亚洲天堂区| 亚洲AV免费在线| 人妻乱仑一区二区三区| 男女性无套 免费九一| 亚洲女人91| 黑人精品欧美一区二区蜜桃| 99re在线视频国产| 亚洲中文人妻色| 国产馆极品诱惑| 夜夜中出国产| 四虎影院成年人片| 亚洲色图殴美色图激情乱伦| 丁香六月激情| 天堂а√在线最新版在线| 少妇色| 五月丁香激情四射| 色与欲影视| 很狠操| a片亚洲一本通视频| 日本蜜桃| baiduhicn.com。| 任我爽视频在线观看| 日韩中字av一区| 久草综合京东| 大香蕉伊人一区在线观看| 日本欧美成人片AAAA| 丁香六月综合激情| 亚洲激情综合| 精品一区二区三区蜜桃臀赵总 | 国产亚洲99久久精品| 国产免费永久精品无码| 免费看一级a性色生活片久久无| 性色生活片久久毛片婬片免费放女人一级毛片| 日本爽爽爽爽爽爽免费视频| 中文字幕第9页萱萱影音先锋 | 操人妻逼91| 亚洲欧美日产国产91毛片| 91丝袜激情在线| 亚洲欧洲精品成人| 久日91在线| 超碰久久网| 精品视频一区二区| 日本亚欧爱爱| 成人三级片一区二区三区视频| 国产AV中文| 天天躁日日躁狠狠躁| 国产无码成人无码| 天天狠操| 欧美日韩国产高清在线一二三区 | 久久97| 日本操逼视频不卡直接放| 天天色天天干天天射| 国产女生在线| 日韩女模中文造逼| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 蜜臀Av一区二区三区| 啊啊啊啊啊好多水| 亚洲国产精品无码AV久久久| 亚洲欧洲综合av在线| 少妇人妻太紧太深av| 亚洲一区二区三区欧美日韩| 亚洲综合激情五月久久| 嗯嗯啊啊亚欧精品| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 啪啪视频免费在线观看| 天天干天天燥| 欧美一区二区三区蜜桃| 99热最新网址| xxx亚洲午夜天堂| 日韩精品影视| 欧美日韩制服| 日欧操屄| 9久精品| 亚洲色91C| 九九九九一区| 丰满美女一级毛片在线播放|