日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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
返回資訊列表
成人久久久| 中文AV制服乱伦| 亚洲图片欧美色| 国产野战露脸在线播放| 欧美国产有色电影| 久久国产热视频97电影| 91天美传媒在线观看| 大香蕉78| 欧美日韩国产中文精品字幕自在自线,| 老司机免费视频在线91| 天天插夜夜操| 精品中文字幕第一页| 91快色色色色色| 超碰1997| 精品一啪| 密臀在线一区尤物| 欧美熟女少妇| 亚洲男人天堂av| www.激情| 久久9久久| 99re公开精品免费视频| 亚洲男人的天堂网| 国产成人自拍视频在线| 超碰吊日色| A片 AV一级在线播放观看免费 | 欧美一级美片在线观看免费| 美女淫穴| 影音先锋每日最新资源在线观看 | 思思热在线视频在线| 久久人妻办公室视频| 密臀国产在线| 天天天天操| 日韩日韩日韩-国产乱码精品一区二区| 亚洲激情综合另类男同| 亚洲综合射| 国产精品极品美女视频| 91超碰丝袜制服| 婷婷五月天影院| 久久久精品一区二区| 性无码专区2020| 中文字幕一区 二 区 三 四 五 区日 日 骚 | A片大香蕉在线| 禁片 高清 在线观看视频网站| 久久中文字幕在线观看| 久久黄黄| 大香蕉乱级| 久久一二三四不卡 | 国内一级精品| 顶级少妇BT天堂| 国产狂喷潮在线精品| 日韩中文字幕av在线播放| 精品成人无码| 丝袜美腿91| 亚洲夜色在线| 国产亚洲中文不卡二区| 精品久久久久久久| 国产又长又大又粗的视频| 久操婷婷| 欧美乱伦专区| 国产精品久久久久久久久久久久久久久久 | 日本淫色网| 欧美91在线+|+欧美| 亚洲av影音先锋| 中文字幕黄色一起草| 另类综合另类| 欧美黄片视频在线观看免费| 国产在线综合网| 久九9精品| 99无码精品| 丁香婷婷五月| 东京太热男人的天堂久久久| 激情综合av| 五月丁香综合网| 欧美日韩大香蕉| 91AV天美在线视频| 色婷婷aV一区二区三区麻豆综合| 亚洲第一无码播放立川理惠| 在线日韩精品一区二区三区| 狠狠色五月亚洲91| 久久m| 蜜桃视频精品一区二区| 九色婷婷| 视频分类 国内精品| 17c嫩草51久久91嫩草| 狠狠躁日日躁夜夜躁A| 女优免费一区二区永久| 欧美国产日韩清纯唯美| 成人免费在线网站| 丰满美女一级毛片在线播放| 九九九九九精品| 蘋果手機免費看成人Av| 久久不卡一区二区| 婷婷五月天激情网| 人妻熟女字幕一区二区| 天天综合网~91入口| 九九综合九九综合| 久草色悠悠在线视频| 啊啊啊啊啊啊好多水| 色娱乐色呦呦夜夜夜夜av| 国产高清免费不卡av| 亚洲图片偷拍欧美| 五月天伊人| 富二代亚洲精品99| 综合五月婷婷亚洲一区| 久久只有精品一区二区三区| 婷婷伊人綜合中文字幕| 啪啪资源网| 亚洲国产尤物yw在线观看| 亚洲欧美情色| 久久久久久九九九九| 9997se| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 淫荡网址| www.亚洲黄色| 天堂俺去俺来也www久久婷婷| 97在线视频观看| 九九九热| 亚洲一区二区三区在线激情| 狠狠爱夜夜干| 自拍第一页| 久久久专区| 九九夜精品九九在线| 伊人97色天使| 天天弄欧美| 久操 高清| 囯产精品强| 韩日自拍| 97在线视频网站| 大香蕉日韩| 久久这里只| 欧美天天综合网| 久久久久久精| 国产成人91一区二区三区| 国产在线观看一区二区三区| 91久久免费视频互動交流| 性色av大全| 久草国产在线视频| 丁香五月社区| 91色综合激情| 欧美亚洲成人在线一区二区三区| 婷婷人妻激情| 啊啊啊水好多| 日韩在线国产字幕| 国产日逼视频| 国产激情在线观看| 91网站18在线观看| 欧美青青视频| 三久久久四久久久久| 欧美综合国产精品久久丁香| 久草福利在线资源站| 国产激情久久久| 精品久一区免费| 色娱乐色呦呦夜夜夜夜av| 日本九九久久99| 有码专区最新中文字幕有码| 亚洲影院成人| 国产激情av女片自拍| 人人操AV| 天天射夜夜| AV天堂因数| 男人的天堂午夜av| 99热这里只有精| 嗯嗯啊啊好疼| 欧美色性情| 久久久久久99AV无码免费网站| 中国zzijzzijzzwww精品| 亚洲精品成人激情在线| 亚洲第一页欧美| 加勒比无码毛片| 日本孕妇一区二区视频操逼免费看 | 大香樵伊人网| 国产1727欧美| 农村女一级毛卡片| 熟妇熟女视频一区二区三区| 欧洲亚洲天堂精品| 国产欧美日本亚洲精品| 亚洲精品视频二区| 国产后入清纯| 免费一级性爱久久| 亚洲图片 91| 国产精品第一页国产大屁股视频免费区i | 色婷婷五月天| 亚洲色图第四色| 欧美情色亚洲| 日韩欧美字幕亚洲一区二区| 东京热不卡视频| 嗯嗯啊好爽| 色狠狠综合| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 97干在线视频| 亚洲激情在线观看一区| 亚洲,欧美,春色,另类| 91美女视频电影| 中文字幕日韩电影人妻| 久久9 9 9精品| 精产品久久| 温婉少妇玩3p| 久久久久久久久久久久九| 五月丁香激情四射| 伊人影院中文字幕| 99精品国产户外露出| 婷婷五月丁香五月| 久久啊啊| 99色| 欧美狠狠狠| 一本一道vs波多野结衣| 视频在线观看青青99国产| 色色香蕉| 67914在线兔费成人视频| 欧美日韩午夜精品一区二区三区| 久九干| 男人天堂网址| 艳尻美人妻| 99e久久国产精品| 热久久精品| 探花视频免费观看国产专区| 狠狠搞 亚洲91| 免费成人自拍视频在线| 日韩国产十八禁| 日韩内| 激情五月丁香五月| 少妇精品久久| 日韩 欧美 校园一区| 亚洲精品免费中文字幕| 黄色十八禁| 日韩啪啪视频| 免费岛国一级片| 婷婷国产精品九区| 日本一区二区三区午夜观看| 伊人亚洲综合| 91neishe| 人人人人插| A一级色女| 都市久久精品激情亚洲| 啊啊啊啊在线播放| 亚洲欧美九九| 中国大陆国产高清AⅤ毛片| 东北女人操比视频| 伊人久久艹| 欧美色图20p| 中文字幕乱码人妻一区二区三区,99精品 | 久久精品视频在线观看| 免费a在线播放v| 熟妇人妻精品一区二区| 久超超碰| 超碰人妻在线| 成人一道本免费视频| 日日夜夜模| 99视频只有精品| 最新无码国产| a片亚洲一本通视频| 日本操色导航| 美女天天干| 亚洲怡春院| 后入 亚洲 美女 射| 日韩免费大片一级播放| 91综合色噜噜| 欧美高潮| 嗯嗯嗯不要不要免费视频| 天天激情干| 久久久一区二区三区麻豆| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 欧美自拍偷拍综合图片| 亚洲双插| 久久久久ab| 大香蕉97久久| 九九无码视频| 在线免费观看日韩一区| 国产精品久久| 青青操在线视频| 欧美国产一区二区三区麻豆传媒| 久久精品视频久久久| 青草av在线| 热久久国产| 欧美 亚洲 第一页 | 91色五月俺来也| 国产精品久久久久久久久AV大片| 九九无码| 精品人妻一区二区三区视频在线| 色欧洲97| 一区二区三区 丝袜高跟| 色色色热| 精品一啪| av在线一区二区三区| 国产一区二区二区按摩精品啪视频| 91精品久久久久久久久久| 国产精品小视频一区二区三区| 日韩丰满熟妇| av最新免费中文字幕| aa片毛片| 啊啊嗯嗯好爽| 精品熟女呻吟久久91| 综合网亚洲1| 激情四射五月天| 色婷婷丁香五月| 久久久国产成人一区二区三区在线| 蜜乳av一区二区| 91久久| 亚洲牲交| 久久久亚洲熟妇熟女| 99国产女人| 天天夜夜rb| 久久久国产护士丝袜美腿一| 99久在线精品99re8| WWW.加勒比人妻一区不卡.com| 91丝袜美腿网站| 久久性视频| 精品国产肉丝袜在线拍国语| 亚洲各类熟们中文字幕| 亚洲成人久久美女| 婷婷综合在线| 五月丁香大香蕉| 亚洲综合婷婷| 亚洲欧美经典一区二区| 天天爽天天操| 欧美第38页| 九九英色视频| 大香蕉男人的天堂| 精品女同一区| 色香av| 婷婷丁香激情| 欧美一级久久久丰满| 亚洲国产精品有声| 91在线精品| 国产亚洲禁久一区二区| 六月丁香婷| 亚洲综合小说另类图欧美视频激情小说色五月天| 国产亚洲精品第一最新| 乱人伦 国语对白:视频直接看| 色综合色色| 一色网男人的天堂| 欧洲亚洲天堂精品 | 男人天堂2012| 九九九久久久久| 330dv亚洲成年视频网| 天天激色| 本道综合精品| 呦呦影院| 超碰人人干| 欧美综合97www| 久久久久9999妇女| AV女资源| 午夜操逼不卡| 狠狠操综合| 热天堂一区二区| 亚洲综合情色| 亚洲综合首页| 人人人人插| 精品国产乱码久久久久久久久1| 亚洲中文制服诱惑| 久久视频少妇美女| 美女诱惑一区| 玖玖资源综合在线视频| 91亚洲黑人| 欧美亚洲国产日本在线,久久精品国产| 国产AV线| 欧美v亚洲v综合v国产v妖精| av国产无码| 蜜桃久久久久久久| 久操视频这里只有精品| 国产综合网站在线播放 | 中文字日本乱码| 国产一区二区a毛片| 极品少妇久久久| 美女久久久久久久久久久| 人妻久久| 亚洲婷婷综合网| 91成人高清在线观看| AV天堂国产| 一本精品日本在线视频精品| 国产精品干干干| 久久久亚洲精品电影免费看| 大稥蕉免费视频这里只有精品| 99无码精品| 少妇高潮一区二区三区在线| 99精品人人爽| 国产91影院| 亚洲婷婷综合网| 2020中文字幕在线| 中日韓欧美高清| 日本熟女中文字幕一区| 欧美色色色| 四虎国产成人精品免费一女五男| www.成人无码| 懂色天天爱天天日天天射天天澡| 一区二区偷拍拍视频| 色五月婷婷久久| 爆乳免费黄网站| 91美女看B| 色妇综合网| 日本中文字幕在线视频| 裸体美女免费看网站青草| 97一区二区三区视频| 日本大香蕉综合网| 伊人久操| 超碰偷拍| 天天爱天天韩国日本牛牛牛牛| 日操粉逼逼| 日本精品久久久久久久| 日本色色色视频| 99日视频在线免费| 亚川综合视频| 久热伊人99re| 国产免费黄色一级大片| 97超碰碰碰| 亚洲国产综合图区中文字幕| 超碰免费人人| 欧美一区二区| 国产在线76页| 黄色操人| 欧美 综合 亚洲| AA特级绝黄| 五月丁香六月激情综合| 久久大黄片| 亚洲无码com| 99色悠悠| 日韩一区二区高清在线观看的| 伊人久久大香线综合无码| 96麻豆精品一区二区三区| 亚洲九月丁香| 蜜臀一区二区三区在线| 综合婷婷| 女人天堂av在线播放| 情色五月天网| 精品一区二区三区蜜桃| 黄页av| 91天美传媒精品| 99re9| 亚洲欧洲另类| 狠狠久久手机视频精品| 久久精品国产久精国产| 亚洲精品一区二区三区新线路| 一级性爱视频免费在线| 91美女高潮| 欧美日韩电影一区二区| 丁香六月天| 国产亚洲精品激情| 超碰欧美| 日日骚中文字幕| 美女网站黄页| 人妻内射一区二区在线视频| 黄色电影观看久久9| 91一区二区三区蜜桃| 青青草福利视频| 精品人体无圣光凹凸| 丁香五月天堂网| 黄色片,com| 97欧美超碰| 九久久精品| 欧美一二在线| 第四色亚洲色图| 最新三级网址| 天天综合网日韩7799| 免费精品国偷自产在线在线| 国产激情视频一区区三区| 久伊人网78| 国产丝袜一区二区三区| 天天日天天插| 久久精品三级影视| 国产在线视视频有精品| 国产成年女黄特黄| 亚洲天天做日日做天天谢日日 | 少妇久久久| 久久免费少妇| 日韩免费av片高清无码| 99re公开精品免费视频| 天天性射网| 少妇的嫩逼图片| 2020天天色综合| 一区二区视频在看| 欧美性第一页| 欧美劲爆视频一区二区| 涩五月婷婷| 亚洲日韩肥臀视频在线观看| 欧美色图校园春色| 人妻二区| 九九久久久| 操操逼视频| 免费A V在线| 美女国产一区二区久久| 久久婷婷色| 欧美精品丝袜久久久中文字幕| 亚洲自拍欧美国产首页网曝 | 私人尤物在线精品不卡| 97人人操人人摸| 大香樵伊人网| 怡红院网站在线视频| aaa亚无码专区| 日本在线播放不卡一区| 人妻插插人妻人| 久久老熟女| 久久精品国产亚洲AV嘿嘿| 欧美拳交在线播放| 欧美在线视频播放| 96精品久久久久久久久久| 尤物一级在线免费观看| 天天色天天干天天射| 国产日韩欧美亚洲精品95| 精品丰满人妻一区二区三区免费观| 久操在97| 人妻丰满熟妇一区二区三| 翘臀vidoes| 亚洲第一视频 欧美风情 日韩| 91色人妻| 91麻豆天美传媒HD| 精品国产一区探花在线观看| 人妻啊啊人妻啊| 天天欧美| 后X久久| 成人五月天丁香激情综合| 99在线精品观看99| 男人天堂2017| 少妇一区二区三区在线观看| 中文字幕丰满人妻日本| 加勒比无码一区二区三区| 亚州国产成人精品女人久久| 老熟女搡BBBB搡BBBB视频| 国产亚洲精品一区二区三区| 风月影院男女十八禁| 欧美性天天影视| 欧美三级中文字幕hd| 婷婷五月天激情网| 久久內射| 欧美成人都市人妻| 亚洲一欧洲中文字幕在线| 伊人网综合在线视频| 大香交伊人网| 中文字幕人乱码中文字的预防方法| 秋霞操逼片| 日韩图区| 婷婷99| 9118禁| 男女91| 国产诱惑| 亚洲精品一区二区三区新线路| 97碰| 啊啊啊啊啊好多水| 91久久久久久| A啊啊在线观看| 久久国产三区| 久久黄人人爽视频| 综合熟妇一区二区三区| 一区超碰一区| 翔田千里一区二区三区奶水| 日韩乱伦视频| 免费在线观看国内色片网站网址| 久久伦理视频久久大香蕉视频| 观看视频图片一区二区三区| 蜜桃久久久久久| 色久桃花影院在线观看| 久久超碰av在线| 欧美页片| 欧美男人一区| 男人的天堂2010| 久久9精品视频| surenchaopeng| 午夜男女爽爽爽在线视频| 久久久9品一区二区三区| 日韩午夜精品一区二区三区电影| 九九综合九九综合| 在线αⅴ| 中文字幕高清精品一区| 国产又粗又大硬免费色网视频| 亚洲情色 自拍| 亚洲精品人伦一区二区| 激情五月天校园春色网| 2019午夜福利视频| 大香交| 天天干电影| 91精品人妻偷情| av激情亚洲五月天| 超碰人人操97碰| 久久性爱免费送| 日韩久久三区| 国产精品一区二区黄片| 操逼日韩无码| 伊人96在线| 精品91摸| 欧美综合色综合| 日韩福利电影网| 操逼日批| 久久成人东京热人妻| 1204人成网站色www| 91宗合网| 亚洲图片激情综合另类| 99操视频| 91黑丝操| 亚洲最新a在线观看| 红杏大香蕉| 9997se| 精品三级在线专区| 精品精品精品| 99re99在线视频| 亚洲小电影免费涩涩成人在线高清| 新版天堂中文资源8在线| 98色网| 日韩电影中文字幕| 婷婷爽人人婷婷爽视频| 国产亲戚伦亲在线| 四虎影视国产精品| 91精品人| 一牛影视久久久一区二区三区| 欧美色66| 亚洲天堂,男人| 狠狠躁天天躁日日躁97| 欧美人人操人人插| 7月婷婷综合| 成人怡红院| 色婷婷网| 91亚洲综合在线| 色性综合| 亚洲天天综合| 国产盗摄美女如厕大神作品在线观看| 欧美中文综合| 丝袜夫妻自拍| 国产操逼视频在线观看| 加勒比少妇AV婷婷六月天超碰超碰| 日本一区99| 强奸乱伦中文字幕AV| 五月天黄色av| 不卡中文字幕aⅴ在线| 日日夜夜青青草母狗| 日韩噜噜69| 国产精品探花视频| 99re欧美| 丝袜狠狠草尤物人妻av91| 日小BB小视频| 久久精品一区| 午夜啊啊啊| 天天日少妇逼AV| 强奸乱伦AV网址| 91neishe| 在线综合 亚洲 欧美中文字幕| 人人澡人人爽人人精品| 91视频伊人| 久草电影网| 91九色丨国产丨爆乳| 国产精品成人蜜臀AV在线| 亚洲欧美97| 伊人久久亚洲色欲综合网站| 视频二区美腿丝袜制服人妻欧美 | 青草精品视频一日本久久久久网站| 99无码视频| 国产呦精品一区二区三区下载| 久久国产视频性吧| 国产免a费看黄片在线| 999精品乱码| 偷看洗澡一二三区美女| 亚洲成人帖图| 嗯嗯,啊啊,国产精品| 亚洲古典另类欧美在线| www欧美91| 中文字幕免费看| 一本一首道人妻少妇免费久久| 国产精品久久久久久久黄无码 | 老司机福利社视频在线观看| 人妻少妇av在线观看| 国产精品日本无码A片| 国产婷婷一区| 国产av高清版| 成人网址在线观看| 亚洲中文字幕av| 亚洲春色欧美激情自拍| 人人澡人人爽人人精品| 三四中文字幕| 欧美性视频二区三区| 亚洲av热热色| 久久久性爱视频| 日日爽熟女| 国产一区二区三区,在线观看观看| 操逼啊啊啊91| av片在线观看免费播放| 日本精品国产视频| 尤物网址| 天天干天天操天天干天天操| 性色综合网| 亚洲乱码精品一区二区| 91人妻最真实刺激绿帽| 熟妇熟女一区二区三区| 97亚洲国产| 亚洲人人夜夜澡人人爽| 色网亚洲人| 久久婷婷成人综合色怡春院| 校园春色AV天堂| 老外又粗又长一晚做五次| 啊啊啊好大好深| 91伊人久| 五月丁香| 人妻素股| 国产在线视频二区| 成人免费视瓶| 欧美一级久久久久久久大片动画| 成人免费性爱视视| 久久AV无码网址| 久热69九色熟妇97| 天天干天天日天天射黄色大片| 夜夜骑天天燥| 国产无码三级视频在线观看| 亚洲制服欧美另类内射| 97 国产一区| 美女网站91| 岛园激情| 2026国产精品视频| 大香蕉乱级| 丝袜AV一二三区| 97神马久久| 睡产熟女乱伦| 第45页一区二区| 欧美日动态视频| 精品欧美А∨无码黑人大荫蒂 | 精产品久久| 高清无码 国产精品| 欧美精品91| 五月天久久综合网| 精品久久久久黄少妇| 国产熟女高潮一区二区三区| 日韩精品在线观看观看| 超硑97精品| 尤物视频一区| 国产精品高朝久久久久久久| 天天看天天在线精品| 日韩 成人 有码| 91丝袜激情在线| 国产成人精品午夜福利| 亚洲AV成人无码一二三久久| 懂色AV中文| 探花激情视频| 亚洲无992tv| 97网址97| 91色碰| 十八禁的黄污污免费网站| 亚洲三级。日韩三级| 91骚妇| 啊啊啊啊啊啊啊国| 日本东京热加勒比久久| 九九九九免费| 78m成人视线| 高清肉丝中文无码| 久久大香蕉手机高清| 91九色精品熟女内射| 欧美一级特黄淫片在线观看| 欧美在线综合| 亚洲91网站| 欧美熟妇精品黑人巨大一二三区| 欧美黄片视频在线观看免费 | 综合熟女| 日本道日本道中文字幕日本道最新日本道在线观看 | 日本免费专区| 一本色道久久综合狠狠操| 狠狠综合网| 国产av美女被艹的乱叫| 亚洲乱伦图片视频| 免费黄色片。| 精品久久久久久无码| 精品高潮| 一起草三级AV电影在线观看 | 国产精品色哟哟| 国产女人高潮视频| 国产乱婷婷精品二区三区| 欧美成人免费在线观看| 亚洲一区二区三区婷婷| 久久中久文96| 国产精品视频| Aa东京男人的天堂| 四虎影视永久在线观看精品免费网站| 亚洲欧美setu| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 精品人妻中文字幕高清| 无码精品久久久久久亚洲| 欧美日韩国产一区二区小黄片大全| 亚洲AV色图一区| 青娱乐国产精品| 色色福利| 97爱爱爱| 91在线超高颜值国产| 国产精品一区二区三区,亚洲综合| 国产亚洲中文不卡二区| 日本精品一区二区中文字幕| 精品性爱一二三区| 欧美不卡二区| 97人人草| 日韩欧美偷拍美女视频| 天美一区在线| 中文字幕丝袜| 亚洲天堂一区二区久久| www.色操逼| 亚欧性爱ab| 欧美性爱在线无码| 日韩国产十八禁| 日韩久射综合| 九月丁香综合网| 麻豆区99999| 欧美 亚洲精品首页| 国产黄片精品在线| 亚洲欧洲小说图片视频 | 亚洲AV无码天美传媒一区| 色眯眯av| 午夜性生活av免费在线看| 人妻AV在线| 中日韩久久久免费看| 在线a v| 综合激情97| 色网站导航大全| 999狠狠综合| 九九九免费视频| 五月婷婷六月丁香| 9 1果冻精品视频| 六月丁丁香| 久久久啊啊啊| 日本大片日本一区二区免费高清| 色婷婷A V一二三四区麻豆综合| 国产成人一级av88| 91爰爱欧美| WWW啪啪的com| 2017超碰| 亚洲第一精品在线视频| 美女黄码视频午夜| 懂色AV蜜臀无码精品APP| 人妻少妇无码| 欧美性爱五月天| 91色狼| 久久一二三四不卡| 国产精品视频| 黄色免费网| 精品网站99999| 欧美啪啪女女| 亚州综合网| 欧美性高潮| 日本人妻中文字幕精品| 婷婷久月| 欧美另类色| www欧美91| 成人性爱av.com| 91中文精品日韩欧美在线 | 国产v片在线免费观看| 搡老女人老熟女91老熟女综合网| 国产特级毛片AAAAAA高潮流水 | 婷婷五月天基地| 91路www| 亚州性色| 欧美日韩一二三| 屁屁影院一区二区三区国产| 一牛一区二区三区久久| 9久9久9久9久视频网站| 久久人人妻| 亚洲涩图欧美| 三级片网站在线播放| 欧美日韩国产精品久久色婷婷| 九九精品热| 四虎免费看黄| 久久a久久| 麻豆国产免费影片| 亚洲av综合伊人久久| 天天干1区2区在线| 91色花堂| 丰满少妇一区二区三区免费看| 日韩99神马视频播放片在线播放| 日韩成人精品视频自拍| 欧美日韩操操操| 色哟哟综合| 加勒比AV天堂| ss久久| 欧美综合色综合| 日本色日夜干| 97综合久第一页| 超碰视97中文| 久久久久9久久久久| 开心激情婷婷| 九九Av| 日熟女| 亚洲综合欧美| 一本大道青青| 另类 综合 日韩 欧美 亚洲| 欧美激情 日韩精品| 亚洲AV无码天美传媒一区| 六月丁香网| 亚洲男人天堂Av| 旡码电影特区| 国产精品一二三区福利| 国产熟妇一区二区| 日本阿v天堂在线观看| 国产一区二区av综合| 亚洲男人天堂2012| 2017天天插| 久操网无码在线| 亚洲最大无码中文字幕网站| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 欧美性生活免费网| 国产树林里野战在线看| 99999精品视频| 欧美猛交黑寡妇中文字幕| 国产不卡中文字幕免费avi| 亚洲老司机123专区| 成人性交午夜免费片| 日本精品无码三级网站| 欧美成人精品A片免费一区99| 成人精品视频一区二区| 国产精品夜夜夜| 成年人网站在线免费观看| 欧美精品999| 精品人妻一二三四区视频| 亚洲国产精品成人久久蜜臀| 中文字幕av乱伦| 中文字幕一区二区三区蜜臀| 日本2020一区二区| 久久激情亚洲精品无码?V| 极品粉嫩少妇视频| 久久精品国产99精品亚洲蜜... | 婷婷亚洲综合| 国产又长又大又粗的视频| 亚洲熟女av中文字幕| 美日韩成人| 99在线精品视频| 啊啊啊啊嗯嗯嗯用力好爽 | 好爽视频在线观看视频| 玖玖资源中文字幕制服丝袜| 97在线观看免费| 一本一道波多野毛片中文在线| 久久婷五月天| 成人性爱免费播放| 91新在线欧美| 日韩精品黄片免费观看| 婷婷深爱五月| 欧美99| 啊啊啊97视频| 黄骗免费| 高清视频一区| 国产有码一区| 凹凸精品熟女在线观看| 久草综合视频| 亚洲清纯唯美| 人人操人人摸人| 国产久久天堂资源| 国产精品欧美激在线| 欧美十八禁在线看| heyZO天然素人无码AⅤ专区| 婷婷精品久久av影视| 密臀在线免费观看| 猛交交| 欧美做爰无码A片视频| 久久久国产av美女私房| 国产一区二区二区按摩精品啪视频| SUV一区二区在线看| 嗯……啊…嗯嗯…啊…好舒服| 国产精品99久久久www| 色在线亚洲视频www| 亚洲天堂久久久久久粉红视频| 天天操熟妇| 亚洲欧美变态| 97射欧美| 国产精品一区二区麻豆| 中文字幕精品亚洲熟女| 欧美天堂亚洲电影院一区在线播放 | 亚洲欧美精品福利在线| 色色色五月婷婷| 天天干一干| 久久综合乱子伦国产免费| 欧美后进式| 日韩亚洲美女一区久久| 久操B网| 午夜福利区| 午夜后入| 中文字幕黄色一起草| 天美传媒婬乱在| 一区AV| 亚洲日韩美女中文字幕乱| 国产精品一二三在线看| 中文字幕精品资源在线| 丁香六月婷| 欧美色图成人网一区二区| 丝袜美女诱惑 91 视频| 91老司机视频| 国产精品一区av在线| 久久人人爽人人爽人人片Ⅴ| 蜜臀久久99精品久久久久久久久| 夜夜夜久久| 蜜乳av一区二区三区| 91久久青青草原精品| 成人av影院在线观看| 天天综合网站| 久日综合网| 亚洲视频中文一区| 亚洲AV成人无码久久精品播放| 欧美色九九九| 九九精品网| 久久av一级av少妇av高潮| 日本天天吊| 久久99久久99精品天美传媒棢·纸:.| 日韩97在线| 亚洲精品乱码久久久久久蜜桃麻豆| 中文字幕少妇色 | 亚洲av青草久久一区二区| 亚洲AV无码久久久国产精品| 亚洲精品天天影视综合网| 91丝袜视频在线观看| 国产精品宅男免费| 人妻丝袜肏逼| 国产91av在线播放| 7月婷婷综合| 97操| 亚洲情色一区三区| 国产精品人妻无码久久久互動交流 | 99精品九九九九九九| 在线国产一区二区av| 欧美日韩人妻少妇 一区二区三区| 日本欧美韩国国产在线| 奇米狠999| 国产精品久久久久久久黄无码| 91网18| 人人摸.人人色| 久久同城AV| 国产91久久九九免费精品无码| 亚洲十八禁止| 超碰成人国产| 日韩精品啪啪啪| 天天欧美色| 无码区蜜乳| 九一精品牛牛一区二区| 精品成人无码| 久肏视频字幕| 激情六月天| 乱伦一区二区三区‘| 亚洲熟女乱色一区二区三区久久久 | 色婷婷亚洲婷婷| 欧洲黄色网| 欧美精品三区| 欧美熟妇视频| 国产不卡免费在线视频| 96国产精品| 久久久久久久78| 99亚洲天堂| 性爱免费视频成人| 亚洲综合网91| 色九九九综合| 久久久无码国精品无码三区三区| 久久五月天婷婷丁香中文字幕| 精品丰满熟妇人妻一区| 国产乱婷婷精品二区三区| 福利在线观看一区二区| 男人天堂欧美| 久久精品国产97欧美精品亚洲 | 久久精品女同亚洲女同13| 超碰三级秋霞| 日本中文字幕在线视频 | 玖玖久久久| 1024久久高清视频| 久久性爱网站| 亚洲国产欧美一区二区潘金莲 | 激情文学88| 亚洲少妇视频| 97操B| 欧美九一精品久久久熟妇| 91成人国产综合久久精品蜜月| 国产欧美伊人| 久久婷婷色综合一区二区三区| 五月天婷婷色色| 国产 丝袜 欧美中文 另类| 思思热在线cao| 天天操夜夜操狠很操| 成人小说另类在线| 欧美18老人禁| 无码一区二区精品视频久久久春药| 精品78| 人人干黄色| 国产日韩在线播放av| 思思热在线cao| 亚洲中文一区二区三区| 99这里只有精品国产| 亚洲无码太久| 久久久久国产一区二| 99精彩视频| 狠狠躁AV| 成人一区二区三区四区| 亚洲黄a三级三级三级看三级| 亚州图片第一页| 蜜臀99久| 久久午夜鲁丝片| 黄色网址久久精品欧美喷水| 久久,精品一二三| 青青草白白色| 亚洲成人AB| 99老司机精品视频在线观看| 日韩女模中文造逼| 超碰性爱97| 亚洲天堂久久| 中文字幕国产| 天无日色综合| 日本一二三免费久久| 成人五月天丁香激情综合| 色哟哟511老熟女| 97国产精品国| 国产91 丝袜在线播放| 内射老妇BBWX0C0CK| 久热无码| 超碰 国产熟女精品一区| 囯产精品久久久久久久久久梁医生| 免费观看的黄色的网站| 青青草在线视频人人想人人上 | 2023天天操夜夜操| 麻豆国产免费影片| 超碰久在线天天做| 丁香六月激情| 97视频7| 久艾草在线精品视频在线观看| 五月婷婷影院| 午夜一区| 香一区二区三区| 精品国产乱码久久久| 白嫩国模丰满一二三区| 日本精品性生活久久久| 无码精品久久| 嗯嗯嗯啊啊啊操的我好爽| 78操B| 麻豆天美国美国产| 国产精品噜噜噜日日日| 欧美色综合影院| 水滴偷拍| 美女人妻色网站| 免费A片三p视频| 91美女色视频亚洲| 伊欧美综合视频| 午夜噜噜噜| 国内91熟女人妻丝袜天天精品视频在线 | 欧美亚洲小说| 亚欧中文字幕在线视频| 日韩精品1区2区中文字幕| 国产女主播视频在线观看| 欧美性爱在线无码| 国产精品剧情| 后入式在线免费观看60秒| 国产高潮AA片免费看| 亚洲黑人在线| 97爱b| 亚洲少妇色| 亚洲色 国产 欧美 日韩| 日日不卡av| 日韩av情韩国爱禁区av一区二区| www.夜夜| 久久性爱大全| 欧美操人视频| 国产精品久久久久9999小说| 超碰 av 女人天堂| 九月色婷婷| www.黄色在线| 91综合熟女| 亚洲天堂性爱| 亚洲AV无码国产精品久久久久| 日韩肏逼视频| 超碰在线日韩一区| 青草视频人妻在线观看| 亚洲最大黄网| 日本三级黄页| 久热九九| 熟女色综合久久| 色狠狠 - 百度| 秋霞操逼片| 思思热在线视频免费| 国产精品操| 亚州欧美在线| 欧美日韩狠狠爱|