国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲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
返回資訊列表
福利视频一区二区微拍| 少妇专区一二三四五| 日韩精品第3页| 日本孕妇一区二区视频操逼免费看 | 免费综合亚洲中文| 色综合超碰超| 婷婷色中文字幕| 偷拍色图| 国产精品无码AV网站| 大香蕉综合久久| 精品人妻1区| 天天干天天日天天射黄色大片 | 国产日韩人人| 美国人人操人人操| 天天综合麻豆视频| 国产自偷自拍一区| 天天欧美| 国产97亚洲| 亚洲欧美精品福利在线| 美女黄页网站| 一区二区三区精品黑丝白丝酒店对鸡| 97视频在线播放| 色五月婷婷麻豆在| 2024黄色视频| 婷婷五月天久久精品视频一区二区三区| 高清孕妇孕交 交| 九九热在线视频| 精品视频在线观看| 91美女视频直播| 久久久网站| 9丨久久九九九| 第二页中文字幕| 亚洲无码国产探花在线观看| 久久亚洲色图中文字幕| 久久久久久午夜男人的天堂| 97视频网站| 有码人妻系列| 夜夜操二区| 久久久9999| 久久欧洲| 色九九九九久| 最新日日夜夜天天干干| 久久九九精品一区二区| 亚洲黑丝在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 超碰亚洲97| 蜜乳AV免费观看| 60秒免费小视频| 欧美午夜一区二区三区| 91丝袜美女视频| 色五月第四色| 一区二区日韩欧美久久| 日韩色欲久久一二三四区| AV久日| 亚洲精品久久久久久久久豆丁网| 丰满岳乱妇一区二区三区| 超碰社区97| 91久久久久久久久久久| 国产又黄又粗又猛大片| 国产欧美后入| 台湾大香蕉99热| 国产精品久久99日日| 少妇内射视频| 清清一区二区三区四区不卡视频| 色欲蜜臀AV| 理论久久婷婷网8| 日韩人妻资源在线看| 婷婷久久五月| 欧美丝袜中文字幕07在线| 97se综合| 国产精品无码论坛| 日本国产亚洲一区在线观看| 制服丝袜第二页| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 国产精品久久泡妞网站| 亚洲人91| 国产婷婷一区| 思思99热| 91三级理论片播放器| 96精品久久| 男人精品天堂一区| 色老汉色| 国产精品久久久久久夜夜夜| 男人的天堂2010| 日韩国产成人自拍视频| 日韩美女操b| 超碰97久久| 老司机福利社视频在线观看| 伦理弟一页| 亚洲码和欧洲精品激情系列| 色诱中文字幕| 超碰午夜在线| ′ !γ}丶。。久久精品欧美一区二区三区 | 亚洲极品| 欧美成人国产精品| 人妻少妇无码| yw尤物av无码点击进入麻豆| 天天日天天操天天射河南省| 色综合一本| 综合九九| 亚洲91少妇| 五月激情小说| 亚洲综合激情五月久久| www网站黄| 免费精品人妻一区二区三| www.色吧5.com| 午夜视频黄| 大香蕉久久| 97国产精品一区二区传媒公司| 物业黑人 AV一区| 内射中国少妇高清视频免费视频 | 免费公开人人操| A级国产欧美激情在线| 91欧美在线| 78超碰| 色图四区| 91老熟妇| 国产探花日韩援交| 婷婷91| 色婷亚洲五月在线观看| 色嘟嘟人妻天堂网| 第四色亚洲色图| 台湾佬中文娱乐自偷自拍| 国产性刺激| 农村妇女精品一区二区| 精品国产乱码久久久久久久久久毛片 | 日本视频在线观看污污污| 欧亚在线视频| 人妻少妇久久久| 蜜臀久久99精品久久久老,,| 欧美色图亚洲色图成人在在线| 91原创在线观看| 裸模AV女优| 青青草成人视频在线观看二区| 国产精品久久久久久久久久久久久久久久 | 亚洲综合骚逼| 亚洲熟女一区二区| 精品福利| 国产精品无套内谢| 67194无码不卡| 亚洲 欧美 小说| 亚洲久久东京热一二三四五区视频| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 久久亚洲一区女同性恋中文字幕| 熟妇综合一区二区三区| 青娱乐国产精品| 久久综合激情| 精品一区二区三区四区外站 | 天天操天天谢| 偷拍精品一区二区三区| 国产精品青草综合久久| 日韩无码嘿咻黑热久| 国产精品色哟哟| com 首页 18岁 禁区 女优 免费 精选 同城 | 极品五月天噜噜| 精品成人女人久久| 久久超碰网| 国产女人高潮嗷嗷嗷叫小说| 开心婷婷五月| 裸体1区| 不卡二三区人妻少妇| 国产亚洲精品一区二区三区| 肥臀熟女福利视频一区二区| 欧美天天综合网版| 在线看免费无码AV天堂的| 99色悠悠| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 26uuu欧美| 久久精品免视看国产成人﹣蜜臀av一区. 久久精品免视看国产成人,蜜臀av一区 | 色婷婷视频| 麻豆精品久久久久久久| 九九人妻| 国产精品极品美女视频| 大香蕉 222| 91中出视频| 国产小黄片在线免费观看| 欧美午夜精品久久久久久3D| 亚州高清AV| 久久超碰爱| 久久久少妇诱惑精品视频| 黄色免费一级在线毛片| 加勒比综合88| 后入综合久久| 97bbn| 又大又黄国产| 天天日日舔舔| 97色色婷婷| 日韩精品在线观看观看| 操屄日韩| 中国AAAAAA黄色片| 小说区 图片区色 综合区| 9ⅰ久久久天天| 国产黄色动态精品| 久草色悠悠在线视频| 激情久久久| 人人操人人大香蕉| 日本护士高潮| 99热超碰在线| 长长久久88视频| 色色操| 中文字幕成人理论在线| 911粉嫩人妻| 中文字幕奈奈美被公侵犯| 亚洲人妻中文在线视频| 日本在线观看网址| 国产精品一区二区亚洲人成毛片| 亚洲av性爱电影| 搡老女人老91二区| 亚洲日韩天堂| juliaann丝袜大战黑鬼| 老鸭窝亚洲毛片| 性做久久久久久久| 亚洲熟女性高潮久久久| 国产精品天干天干综合网麻豆| 99综合免费视频| 日韩乱伦影音先锋| 蜜乳AV一区| 国产久久成人| 91成人久久| 国产亚洲精品av一区| 国产精品成人AV片免费看网站| 大香蕉日韩| 亚洲一区中文字幕| 蜜桃久久久久久久久久久久| 婷婷干黄色| 日韩成人小视频| 日韩精品三级片长长久久| 精品网站9999| 国产精品亚洲一区二区三区四区| 91呆哥人妻| 国产精品免费美女视频| 亚洲夜夜欢无码一区二区| 美女极品一区二区三区| 熟女乱伦A| 欧美日韩性爱操大逼| 欧美人妻一区| 五月激情啪啪| 精品国产乱码久久久久久久久1 | 欧洲视频在线| 超碰97久久| 自拍偷拍第26| 五月天色综合| 欧美情色男人的天堂| 欧美亚洲高清不卡| 欧中美三级一区二区三区| 91亚洲最新在线| 亚洲精品人体| 中文字幕一区二区日韩网| 97香蕉网| 91在线无码精品秘 软件| 综合久久欧美| 欧美熟妇人体| 欧美男人的天堂| 激情欧美97| 一本色道无码DVD中文字幕| 国产真乱mangent| 亚洲av综合色区无码一| 按摩中文字幕| 亚洲日韩欧美一区二区| 99色网| 亚欧免费| 男人的天堂2010| 97在线欧洲| 伊人aaa| 97香蕉网| 国内精品久久久久影院亚洲| 三级片大波波| 国色综合天| 色色网91| 色综合久| 成年人免费观看网站| 人妻丝袜日本| 亚洲第一无码播放立川理惠| 99热在线播放| 成人一区二区三区四区| 97碰碰色| 口爆吞精在线观看| 九九久久99| 久久精品国产亚洲粉嫩| 凹凸视频在线观看伊人| 亚洲中文字幕日产无码久久| 久久久久久久唑| 日本三级一区二区 在线| 天天做天天爱| 青青草原成人| 又黄又粗又硬又长又大| 久久性爱精品一区| 91精品国久久久久久无码| 精品国产乱码久久久A| 国产 热久久久久国产精品| 中文字幕黑人大片| 久久久久深夜无码| 操婷婷逼| 日日躁天天躁狠狠躁| 人妻人人做人人澡人人爽欧美一区| 欧美|91色综合| 91熟女丨91老女人| 日日夜夜干| 清纯唯美第一页| 亚洲中文字幕三级在线| 中日992视频| 午夜理论片在线观看免费| 欧美 传媒 麻豆 日韩 偷拍| 日韩美女操b| 校园春色亚洲| 色五月天AV| 91国精产品| 日韩免费高清大片在线| 大色综合网| 久久美女福利是上海美女| 亚洲欧美另类小说| 激情熟女12P| 国产操伦| 神马久久啊啊| 沈阳熟女高潮对白视频| 欧美乱色| 超清福利精品视频在线| 国产污视频麻豆传媒一区二区| 永久电影三级在线观看| 欧美大香蕉97| 国产操伦| 熟女熟妇伦久久影院毛片一区二区| 亚洲国产精品9999在线观看| 青青草五月份天| 人妻激情偷乱视频一区二区三区| 超碰在线一区| 日韩av三四区| 美女极品一区二区三区| 97欧美日韩综合| 97视频观看| 日本一区二区亚洲综合| 精品网站99999| 黑人操一区二区| 人妻夜爽夜夜爽| 99性爱视频| 97视频免费在线观看| 亚卅熟女乱色| 91人妻人人澡人人爽人人精品| 欧美激情片一区二区| 欧美久久人体| 久久綜合很很很| 国产高清成人mv在线观看| 亚洲精品白浆高清久久久久久| 大香蕉狠狠爱| 久操在97| 国产后入精品| 强奸乱伦AV网站| 欧美成人色| 超碰人人妻| 熟女这里只有精品6| 少妇精品久久久八区九区| 中亚精品极乱| 嫩草一区二区在线观看| 8x福利精品第一福利视频导航| 国产人妻精品一区二区三区秋霞| 视频在线观看一二三区| 国产亚洲禁久一区二区| 国产精品又黄又猛又粗| 大香蕉啪啪啪啪在线| 久久97| 欧美午夜视频免费观看| 天天做天天爱| 欧美一区二区| 物业黑人 AV一区| 午夜成人福利影视| 婷婷97| 口爆吞精在线观看| 亚洲国产av中文字幕久久 | 91丨精品丨国产丨丝袜| 99爱在线视频| 密桃99999| 国产综合操逼高清| 日韩欧美tv一区二区在线观看| 欧美精品黑人猛交高潮| 91中出在线| 国产精品大屁股999| 91jk色拍| 亚洲人妻熟妇三十三区| 激情图片亚洲色图| 亚洲A色| 人妻精品4K4K4K4K4| 骚逼高潮久久精品| 丁香五月天啪啪| 一区三区啪啪| 婷婷五月天影院| 久久九九99| 日韩黄色一区二区三区| 久草网站免费在线观看| 神马久久久久久伦理片| 最新亚洲人成网站在线影院| 啊啊啊不要啊啊受不了了视频在线 | 东京热毛片调教| 亚洲欧美色图小说| 操我啊啊啊啊啊| 亚洲综合色男人网| 蜜臀久久99精品久久久老,,| 98一区二区精品| 337p大胆噜噜噜噜噜91Av| 欧美顶级黄色大片免费| 国产自偷自拍一区| 大香蕉丝袜一级片| 六月天婷婷| 91综合在线| 99精品在线播放| 丁香五月偷拍| 91久久精品国产| 江都AV在线| 久久综合中文国产| 爱爱动态试试看6 0秒| 超碰97资源大奶| 青青草手机在线免费观看| 久湿久久 | 青娱乐999| 日本美女性生活久久久久久久| 亚洲综合另类欧美久久久| 日韩性爱播放| 欧美久久草熟女| 久久久久久久久久久久久久久乱码| 精品夜夜澡人妻无码| 狼人综合婷婷激情四射 | 久久这里只精品免费福利| 青娱乐福利99| 女人午夜视频777| 激情五月天婷婷| 人妻一区二区三区| 超碰 国产熟女精品一区| 中文字幕精品码亚洲| 久久九色| 日本精品第一视频在'| 高潮内射在线| 色爱综合网欧美| 色哟哟av网址| 国产伦精品| 亚洲精品性爱片| 91人妻Pr| 狠狠夜色午夜久久综合在线| 一区二区三区男人的天堂| 天天综合网在线观看| 午夜小电影在线插入淫高潮| 另类专区在线观看| 欧美老妇女内射网址| 91美女视频电影| 欧美日韩中文字幕人妻| 久久免费精品视频免一| 91爰爱欧美| 国产精品禁久久久精品| 岛国A V在线免费看| 福利在线黄片| 天天综和| 尤物av网站免费在线播放| 久久精品店| 第四色亚洲色图| 91色欧美| 欧美日韩一区二区三区四区蜜桃| 欧美激情 日韩精品| 热热色青青草| 美国人人操人人操| 91丝袜在线观看视频在线观看| 日本天堂在线播放| 日韩Va亚洲va欧美Ⅴa久久| 欧美毛片在线网| 人妻激情在线视频| 成 人片 黄色大片| 少妇诱惑视频| 久久久久久久久久va| 熟女性视频| 欧美图片校园春色| 嫖老熟女A片一二三区| 欧美另类自拍 | 天天干天天插| 色97欧美| 色婷婷综合网站| 青草精品视频一日本久久久久网站| 99热99在线播放激情| 亚洲AV不卡在线观看| 9久久久久| 精品无码久久久久久国产浪潮| 欧美少妇高潮视频| 久久激情亚洲精品无码?V| www欧美91| 天美传媒av在线| 搡老熟女免费视频| 九色 人妻 大香蕉| 日韩亚洲中文字幕在线| 91AV天堂| 久久男人精品| 久久精品国产久精国产| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 国产精品自产拍在线观看社区| 亚洲成人妻日韩在线| 免费福利视频中文字幕| 天操老女人| 操日韩第| 国产在线激情| 欧美日不卡| 国产一国产一级毛片古装| 亚洲 欧美 中文 日韩超碰| 9久精品| yazhousetuoumei| 操操逼视频| 91男人天堂网| 五月婷婷深深爱| 亚洲本色精品一区二区久久| 91久久堂| 色色色色网站| 亚洲精品久久久久久久蜜桃臀| 欧美性高潮| 黄色大片一区二区密桃丝袜| 久久亚州精品成人Av无| 国产精品69久久久久孕妇欧美| 日韩av乱伦| 韩日自拍| 熟妇最新先锋一二三区| 国产美女mm131爽爽爽爽| 中文字幕二区| 亚洲情色1区| 被体育老师抱着c到高潮| 日本Suv精品一区二区| 精品无码一区二区| 啪啪免费| 一区二区三区国产在线播放| 97伦乱| 色97| 入口操逼网站| a片自拍直播视频| 91天天美女| 91AV老熟女视频| 精品无吗久久| 神马午夜久久久| 五月婷视频| 欧美十八禁网站| 强奸乱亚洲| 亚洲国产剧情少妇激情| 国产精品嫩草久久久久| 国产精品久久久久久久久久久久| 久偷拍欧美日韩三区| 亚洲性爱高潮影院| 影音先锋中文字幕日本好一区二区| 亚洲网站一区二区在线| 日本幼女18+| 婷婷亚洲中文字幕在线| 久久人人爽人人爽人人片Ⅴ| av一区二区三区四区| 蜜臀久久99精品久久久久| 91精品免费| 日韩成人午夜精品久久高潮| 亚洲综合五月天| 日本理论在线| 精品中文字幕第一页| 亚洲欧美人妻| 天堂成人网| 欧美丝袜中文字幕07在线| 国产成人天堂| 日韩精品9999| 欧美爆操91| 一本一道人妻久久一区二区三区| 99色综合| 99ri视频| 俺去也婷婷| 日本123区操B视频| 免费看日产一区二区三区| 亚洲中文国际强奸字幕| 日本一区视频在线观看| 欧美在线永久天堂| 日本十八禁免费看污网站| 欧美成年人性爱视频免费观看| 就去色综合| 日曰骚久久精品| 亚洲狠狠入| 亚洲妇色| 99re国产中文字幕| 密桃99999| 使劲用力艹少妇视频一区二区| 亚洲图片视频小说| 色九九综合AV| 亚洲无992tv| 成人九九| 国产精品一区午夜福利| 黄片色区软件| 岛园激情| 亚洲欧美九九| 午夜天堂网| 一直超碰| 九九九久久久久| baiduhicn.com。| 精品一区二区三区四区外站| 亚洲欧美日韩中文久久自慰| 噜噜瑟| 舔足天天操天天射| 91在线免费精品视频| 丰满美女一级毛片在线播放| 高清无码一区二区三区| 亚洲AV无码国产精品久久久久| 超碰av人人人| 91热情品| 大香蕉懂9| 欧美高清无码免费视频高清版| 日逼视频日本| 综合激情婷婷| 欧美成人综合| 人人操人人肉久久精品| 1769国内精品视频| 五月丁香综合啪啪| 精品久久久久瑟瑟| 亚洲成人AB| 黄色成年| av一区二区三区四区| 99精品热| 污污污8888| 日本天天干天天操一区| 丁香六月激情| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 欧洲综合色图| 亚洲欧美综合区自拍另类| 男人天堂久久精品| 蜜桃一区二区三区| 婷婷久月| 亚洲成人免费电影| 欧洲精品一区二区三区| 女人久久久| 新婚人妻扶着粗大强行坐下| 色综合中文字幕不卡| 久久是精品| 在线观看不卡一区二区三区| 99热亚洲| 国产亲戚伦亲在线| 九九拍拍精品视频在线播放| 91色图| 欧美性爱另类综合| 亚洲综合贴图91 | 人妻81p| 久久久久久久 九九九九九九九| 大干人妻| 少妇人妻好深太紧了vr91| 精品 码产区一区二-1080P高清在线www-B029AV| 人妻一区久久二区三区色播| 97超碰9| 精品国产无码中文| 少妇无码太爽| 欧美78P| 极品欧美一区二区三区| 日韩av乱伦| 超碰一区二区| 懂色AV蜜臀无码精品APP | 日日天天久久啊啊aaa| 亚洲男人电影天堂| 99热成人| 久久久青青草| 一本久道久久综合狠狠爱| 五月天精品| 国产精品老师| 快灬快灬 一下爽蜜桃在线观看 | 伊人国产AV| 国人欧美精品一区二区| 男人的天堂2018.| 在线免费观看高清无码视频| 成年人一级黄色毛片大全在线观看| 美女黄码视频午夜| 91女优在线观看 | 超碰在线人妻不卡| 成人av性爱电影在线观看| 宗合情欲网| 中文字幕五月婷婷免费| 激情欧美日韩女同久久| 在线国产福利网址导航| 精品久久九| JULIA一区二区三区在线播放| 亚洲日本大香蕉1| 你懂得91| a片久久久久久久久久久久 | 久热九九| 一区二区三区视频| 久久久av爱| 九九久久一区二区伦理| 亚洲人妻日日日| 亚洲天堂区| 九九AV| 免费的黄片wwwwww| 91白虎| 伊人天堂在线| 精品无码久久久久久国产浪潮| 国产精品久久久999| 韩国成人精品久久久免费看| 精品人妻少妇| 久草综合京东| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 强奸乱伦AV网址| wuyechaopeng| 欧美最婬乱婬爆婬性视频 | 天天做天天爱夜夜爽毛片试看| 男人干美女| 在线观看综合精品亚洲| 男人天堂网站| 超碰天天操| 五月激情小说| 国内毛片国产欧美拍| 日韩中文字幕精品一二三事国产精品| 天天色悠悠激情| 国产av强奸美女| 2017亚洲天堂| 蜜奶av| 中文字幕一区二区三区蜜桃视频| 综合久久婷婷| 岛国1区2区3区在线观看| 99精品综合久久久久五月天| 91艹逼精品| 另类在线| 天堂中文资源在线bt| 青青草中文字幕| 日本五区不卡| 亚洲涩涩| 亚洲AV无码乱码在线观看性色| 麻豆区久久久久亚| 性无码专区2020| 四虎在线播放| 九九成人视频| 亚洲无码成人精品| 91日韩网站| 丰满人妻一区二区三区四区| 绯色AV粉色AV蜜臀AV| 九月婷婷| 97综合网| 久草午夜| 97视频免费播放| 狠狠干妹子| 欧美日韩婷婷中文| 男人的天堂.com| 午夜精品视频777| 在线人人人人人人精品超| 99久久亚洲精品无码毛片潘甜甜| 97超碰超| 天天干18禁| 亚洲97网站| 日本免费一区二区不卡| 狠狠2050在线观看| 91撸色网 玖玖网 欧美| 99久久无色码| 精品久久久九九九孕妇| 啊…啊…操我用力操我| 丁香激情网| 色综合色欲色综合色综合色综合| 欧美日本国产日韩激情视频| 人人操,操人人| 秋霞成人做爱| 精品成人亚洲午夜电影| 日韩免费高清大片在线| 婷婷在线视频在线观看| 少妇厨房愉情理伦片bd在线观看| 97综合国产| 九九九九热| 国产综合久| 国产精品夜夜| 玖草在线视频| 97色在线视频| 亚洲男人天堂Av| 开心五月婷婷| 好吊色在线观看| 后入人妻一区| 91精品婷婷国产综合久久竹菊| 看黑丝美女操逼青青网站| AV99热18这里只有精品| 性爱AV天堂| 免看60秒涩涩视频| 午夜精品久久久久久久第一页按摩| 情色五月天就去干| 国内一区二区免费| 美国黄片aaa| 三级AV入口| www黄片免费看com| 综合网色| 殴美综合色88| 亚洲se电影| 亚洲国产福利视频| 天天澡天天爽日日AV| 1769国内精品视频| 韩日性爱av| 五月天激情小说| 中文字幕在线观看网页| 国产白丝在线| JuliaAnn丝袜熟女系列| 视频不卡中文字幕| 久操网无码在线| 色色婷婷丁香| 四月丁香婷婷| 精品二区三四区五电影| 日韩啪啪视频| 国产精品一区av在线| 日韩午夜啪啪视频| 精品国产99| 中出人妻中文字幕91在线| 久久久久国产精品久久久| 天天色欧美| 欧美人妻精品一区二区| 美女尤物福利视频| 99国内熟女露脸视频| 丝袜足交视频| 亚洲黄色网址视频| 超碰亚洲欧美日韩无| 欧美在线视频观看一二三四区高清| 欧美性夜| 看大黄色大片原件| 殴美牲| 日日AAvv| 国产在线能看的你懂的| 日本中文字幕在线视频| 日韩欧美中文日韩欧美色| 日韩欧美亚洲国产日韩| 天天综合网~91| 亚洲密乳AV| 国产少妇与亚洲av| 久久有码视频| 无码 黑人一区二区三区| 国产后入精品| 天天性射网| PMv在线观看| 欧美人妻精品| 久久精品国产亚洲粉嫩| 亚洲色性情三级| 亚洲欧美骚| 五月丁香社区婷婷日韩欧美精品影院 | 加勒比海人人操超碰在线| 日韩探花精品在线视频| 亚洲男人天堂网久久| 精品无码少妇| 成人无码在线视频网站| 伊人青青一区成人视频在线观看区| 成人性交免费视屏| 精品一区二区人妖| 亭亭在线资源| 亚洲色图日韩精品| 久久久久亚洲一区女同性恋中文字幕| yw尤物av无码点击进入麻豆| 精品久久久久久亚洲| 久久久久深夜无码| 久久久国产成人一区二区三区在线| 美女91色黄18| 一级毛片久久久久久久女人18| 欧美日韩222| 小说区 图片区色 综合区| 五月丁香成人网| 男女啊啊啊啊啊| 色婷五月天| 欧美熟妇色| 亚洲人成网www| 天天综合网网欲色| 后X久久| 日本爽爽爽爽爽爽免费视频| 一区,二区,三区网站| 一区二区三区国产在线播放| 伊人97色天使| 久久av无码| 久久久久久久久久久人妻| 边做饭边操逼逼| 伊人久久大香蕉线AV五月天| 激情小说日韩无码| 日韩精品怡红院| 91呆哥人妻| 天天爱综合网| 久久麻豆一区二区| 东京热一区二区中文字幕| 色色色999| 欧美激情视频一区二区| 夜夜夜夜夜夜夜夜夜狠狠狠狠狠狠狠| 九九九久久久W精品| 一区二区三区四区色图| 国产女同在线观看视频| 欧美嫩性色| 中文字幕AV乱伦| 中文字幕伊人| 精品偷拍13p欧美dodk视频| 二级毛片| 野狼激情网| 国产一级不卡在线观看| 99最新日韩偷拍视频| 亚洲第一综合| 精品亚洲一区在线观看| 久久久久久久六六| 天天日天天爽| 欧美性生活男人的天堂| 久久久男人的天堂| 91一区二区| 久思思热视频在线观看| 正宗无毛一线天嫩逼| renqi久久久久久久久久久久| 51国产午夜精品视频| 色悠久久久av| 国内91熟女人妻丝袜天天精品视频在线| 立川理惠被中出无码| 看看日B真人视频| www.狠狠| 懂色av色欲av蜜臀av| 亚洲一区二区av| 艳尻美人妻| 99性爱| 熟女精品va中文字幕| 欧美日韩不卡传媒| 久久综合久久综合人久久夜精品| 欧美麻豆成人同性GⅤ在线| 草草电影院| 97干综合网| 色女99一级片在线观看| 日本免费亚洲欧美| 无码免费在线观看黄色片| 亚洲资源一区| 啊啊啊啊啊啊啊在线| 超踫中文字幕| 国产 三级自拍| 日本三级一区二区 在线| 91熟女网| 后入式福利| 人人爽人人精品乱人伦AV| 90后性网国产欧美| 欧美日产国产在线成人第一区| 97视频免费| 91精品少妇搡搡搡| 秋霞男人网| 北条麻妃99精品青青久久| 亚洲综合九九| 多毛小伙内射老太婆| 日本操逼视频在线| 97久久精品| 大逼色网站| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 啊啊啊好疼| 亚洲自拍另类丝袜综合| 人妻天天爽夜夜爽爽| 90后性网国产欧美| 天天躁日日躁AAAXX| 97 视频在线| 91视频精品| 最近的最新的中文字幕视频| 久久综合97| www被窝色com| 国产精品电影| 日日操丁香五月天| 日韩精品人妻| 亚洲成人妻日韩在线| 女人香蕉久久毛毛片精品| 蜜乳av一区二区三区四区不卡| 91啪9色| 欧美综合骚| 国产精品乱人伊人网| 综合啪啪| 欧美在线观看综合国产| 日本123区操B视频| 色婷婷电影网| 久久99久久99久久99人受| 99啪啪视频| 99热精品在线在线| 91黑丝在线播放| 东北夫妻性偷拍| 观看视频图片一区二区三区| 亚洲A色| 日本丝袜美腿人妻九九| 白丝jkav| 99精品丰满人妻无码| 亚欧洲一区二区视频| 日本天天干天天日一区| 亚洲骚男同com| 和协影院中文字幕三区| 九一性生活免费视频| www.人人摸在线视频| 日韩有码专区| 婷婷婷婷婷婷久久久久| 1级黄色夫妻对换性交免费看| 手机在线播放国产福利| 视频国产精品未满十八禁止在线观看| 亚洲一区二区中文字幕| 五月丁香啪啪| www.99热在线只有精品| 久久久久久久国产| 欧洲色综合| 欧美精品宗合| 国产精品久久久无码aV去| 国产操逼逼网| 欧美九9 9 9| 日韩中文字幕av在线播放| 人妻黑丝袜电影| 人人妻人人澡人人爽久久av| 国产美女口爆吞精视频| 久久社区一区二区三区| 99精品网| 少妇三P| 亚洲人妻色图| 亚洲av性爱电影| 国产偷拍自拍在线视频| 国模一区二区三区| 97久久久精品| 91宗合网| 金莲网址| 日夜啪电影| 制服中出中文人人精品| 亚洲国产综合图区中文字幕| 人人看欧美性爱| 日操粉逼逼| 草b在线 | 大屁股国产在线视频| 福利视频网站| 日本一区二区做爱的视频| 精品丰满人妻一区二区三区免费观| 最新精品久久蜜桃 | 欧美第一页| 乱伦Av网| caopeng97人妻| 97日韩超碰超碰中文字幕| 国产精品久久久久久无码红治院| 婷婷99狠狠| 乱操9999| 国产大学生口爆吞精合集| 国产又操| 任你干在线视频| 人妻偷拍一区二区三区| 熟女人妻av在线资源,黄色的资源| 殴洲老熟女| 色欲Av人妻精品一区二| 高清无码人妻久久久一区二区三区aⅴ| 欧美综合国产精品久久丁香| 日本韩欧美在线播放a| 亚洲图片欧美91N| 国产1024在线播放| 夜夜操夜夜爽夜夜高潮| 久久精品国产精品一区| 亚洲 欧美 另类 日韩 人妻一区| 成人精品在线免费视频| 婷婷中文字幕| 国产操逼网站亚洲一级黄色| 性综合网| 午夜免费视频1000| 女人天堂网| 亚洲成人福利电影免费| 麻豆 亚洲 97| 91美女精品| 中文字幕jul-617人妻熟女| 久久精品99久久久久久| 飘花国产午夜精品不卡| 久久久9视频| 人人模人人看| 精品久久在线区一区| 久久久久久久久久9| 久久精品国产免费观看99| 天美一区在线| 手机在线人成免费视频| 亚洲欧美日韩国产丝袜自拍中文| 亚洲另类欧美精品| 久久精品老司| 亚洲欧美自拍偷拍| 98福利在线视频| 亚洲人妻在线一区| 爱妻综合网| 欧美日韩第一页| 欧美亚洲特P| 婷婷激情四射| 亚州欧美色图| 久久精品72| 中国国产精品一区视频| 91热情品| 精品国产乱码久久久久久口爆网站| 97超碰超欧美。| 亚洲成?V人片在线观看福利| 久久久久幕乱码| 人妻久久久久久| 欧美亚洲中文| 色九九九综合| 免费一级特黄特色大片在线观看看| 好舒服视频| 凹凸视频特色日本特黄| 精品无吗m| 暖暖精品二区三区观看| 精品国产一区二区三区四区在线看| 夜夜操中文字幕| 99久久网站| 夜夜爽夜夜| 330Dv国产女人终合视频极品人与兽| 手机在线中文字幕国产 | 久久97精品久久久久久久不卡| 日韩AV电影网站| 看大黄色大片原件| 欧美综合色综合| 久久久98网站免费视频| {男男暴菊gay无套网站| 免费99精品国产自在在线| 曰韩无码777| 1769一区| 欧美,亚洲,日韩,v,天堂,手机在线观看 | 国产精品96| 天天综合影院91| 国产精品无码论坛| 久久性爱视频免费看| 97在线资源| 日本免费中文一区二区三区四区| 日韩熟女操逼| 90后后入| 欧美狠狠弄| 岛国视频免费在线观看| 色综合91好| 后入式视频国产自| 蜜桃精品一区二区三区ww| 韩日性爱av| 国产97在线视频| 日本精品一区二区三| 成人精品电影| 伦伦成年午夜免费视频| 狠狠干91| 欧美图片校园春色| 日韩精品99久久久久久中文字幕| 欧美性爱免费短视频| 精品一区二区三区18| 日日摸日日碰| 夜夜高潮夜夜爽高清视频一 | 日韩99神马视频播放片在线播放| 91在线秘 男同| 亚洲情欲| 嗯嗯啊啊啊好爽| 中文字幕欧美日本乱码一线二线 | 免费视频无码| 日本91白丝| 91九色蝌蚪在线观看| 日韩啪啪视频| 天天综合网亚洲综合网| 农村妇女精品一区二区| 亚洲无码99| 国产一区二区三区导航| 超碰国产精品久| 国产呦精品系列在线观看| 超碰97最新人妻| 欧美综合骚| 99综合网| 中日高清无码操逼视频| 国产精品极品美女视频| 欧美一区二区三区不卡高清视频| 国产成人五月天丁香花| 老色鬼成人精品视频下载大在线观看| 啊啊啊97视频| 色官网在线| 秋霞曰韩R级| 操我无码| 国岛片视频| 久久‘黄片视频| 搡老女人老妇女AAA一VU麻豆 | 1区2区3区在线视频| 开心五月婷婷| 强免费黄色网址| 综合色色网| 91精品久久久久久77777| 殴美大黄片| 強姦亂倫a| 国产家庭乱伦性爱视频| 国产一区二区三区白丝| 欧美一区二区三区四区综合| 日B操| 性色AV蜜色av色欲av| 亚洲AV麻豆Aⅴ无码电影一| 欧美色www亚洲国产阿娇要播| 欧美v日韩v亚洲v最新在线| 91美女视频| 在线观看中文字幕| 亚洲成人精品在线一区| 影音先锋每日最新资源在线观看| 国产日韩无码一区二区三区久久区| 久久线上视频免费看|