99精品久久精品一区二区-亚洲熟妇无码?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ù)庫。它的核心特點(diǎn)是所有數(shù)據(jù)都存儲(chǔ)在內(nèi)存中所以讀寫速度非??旃俜浇o出的基準(zhǔn)測(cè)試中單實(shí)例 QPS 可以達(dá)到 10 萬級(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ù)庫數(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 分頁查詢。時(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ù)庫如果進(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ù)庫中也沒有導(dǎo)致每次請(qǐng)求都直接打到數(shù)據(jù)庫。如果有惡意攻擊者持續(xù)構(gòu)造不存在的 key數(shù)據(jù)庫壓力驟增。解決方案緩存空值查詢結(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ù)庫查詢 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ù)庫。解決方案互斥鎖只允許一個(gè)線程查數(shù)據(jù)庫并重建緩存其他線程等待。邏輯過期緩存中不設(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ù)庫。解決方案過期時(shí)間隨機(jī)化在設(shè)置過期時(shí)間時(shí)加上一個(gè)隨機(jī)值避免同一時(shí)間大面積失效。Redis 集群高可用使用主從復(fù)制、哨兵或 Cluster 模式避免單點(diǎn)故障。多級(jí)緩存本地緩存如 Caffeine Redis 緩存即使 Redis 不可用本地緩存也能扛一部分流量。服務(wù)降級(jí)在數(shù)據(jù)庫層增加限流和降級(jí)策略保護(hù)數(shù)據(jù)庫不被壓垮。面試中更好的回答是“緩存雪崩的重點(diǎn)不是如何保證 Redis 不宕機(jī)而是要在 Redis 不可用或緩存大規(guī)模失效時(shí)系統(tǒng)依然能通過降級(jí)、限流、多級(jí)緩存等手段保持可用。”4.4 緩存一致性問題只要用 Redis 做緩存就繞不開“緩存和數(shù)據(jù)庫數(shù)據(jù)不一致”的問題。常見的方案Cache Aside Pattern旁路緩存讀的時(shí)候先讀緩存緩存沒有則讀數(shù)據(jù)庫并回填寫的時(shí)候先更新數(shù)據(jù)庫再刪除緩存。延遲雙刪更新數(shù)據(jù)庫后刪除緩存等一段時(shí)間再次刪除避免并發(fā)下讀到舊數(shù)據(jù)?;?Canal 監(jiān)聽 MySQL binlog異步更新緩存。面試中不要只說一個(gè)方案要能分析利弊。比較推薦的回答一般業(yè)務(wù)采用 Cache Aside 模式更新時(shí)“先更新數(shù)據(jù)庫再刪除緩存”如果要求更高的一致性可以引入分布式事務(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 高頻面試題庫根據(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ù)庫”。展開原因和原理說明為什么會(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一條命令完事要聊到鎖釋放的原子性、看門狗、集群下的問題??照劯卟l(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 有幾百萬個(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)命令語法錯(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ù)庫一致性出問題業(yè)務(wù)中曾經(jīng)出現(xiàn)過修改用戶信息后緩存里還是舊數(shù)據(jù)的情況。原因是代碼里先刪緩存再更新數(shù)據(jù)庫并發(fā)情況下另一個(gè)線程先查數(shù)據(jù)庫還沒寫完然后更新線程把舊數(shù)據(jù)又寫回緩存。后來統(tǒng)一改成“先更新數(shù)據(jù)庫再刪除緩存”并加上延遲雙刪兜底才基本解決了問題。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
返回資訊列表
成人精品一区二区三区四区五区| 五月天社区狠狠| 涩涩涩五月天| www.lingjunshare.com| 人妻久久久久久久久妻久久久久久久久 | 亚洲性爱AV在线| 九九热最新地址| 色婷婷大香蕉| 久久99大全| 九九99久久| 丁香五月影院| 五月开心网| 婷婷色系婷色| 国产伊人五月天| 偷偷操九九| 五月天婷婷色色| 五月婷婷五月| 五月天亚洲色| 婷婷五月天在线观看免费| 婷婷的99视频网站| 婷婷五月丁香91| 99丁香五月| 丁香六月激情综合| 久久性爱视频| 激情五月激情综合网| 五月色婷婷综合| 日本五月婷婷久久久六月丁香| 中文字幕成| 99视频| 日日夜夜婷婷| 啊v视频在线观看| 亚洲综合丁香五月天| 色五月涩涩婷婷蜜桃| 9久久婷婷国产综合精品性色| 婷婷婷久久| 免费看欧美成人A片无码| 97干视频| 婷婷五月天综合在线| 婷婷激情小说| 91人操| 丰满熟女人妻一区二区三| 五月天婷婷六月激情网| 熟女乱论网| 色综合久久88色综合天天99| 91热久久| 日本熟女三区| 五月婷婷我| 99热99思午夜精品| xfplayav在线| 久久机热/这里只有精品| 婷婷六月天精品| 婷婷六月丁香综合| 日日爱699| 常久最新免费的色吊丝| 天天日天天干天天操| 99精品免费欧美小视频| 日本天堂爱爱| 这里只有精品视频| 超碰免费成人网站| 激情婷婷视频在线| 狠狠干综合| 日本色噜| 久久丁香五月婷| 激情综合五月开心狠狠| 五月亭亭直播| 久久色大香蕉| 99福利导航| 色欲久久综合| 深爱激情网五月天| 99自拍视频在线观看| 色综合久久44| 桃色成人网| 新激情婷婷| 怡春院天天干| 丁香五月激情婷婷视频| 丁香五月天BBw| 26uuu欧美日本| 五月婷婷之婷婷| 久99久精品| 婷婷综合| 五月丁香综合网| 色蜜婷婷| 色婷婷五月网| 99热精品在线播放| 亚洲热久| 日日鲁鲁夜夜爽爽| 欧美日韩91| 国产人妻人伦精品一区二区| 久热亚洲| 蜜臀九九九九| 色色色图| 色婷婷操逼网| 淫水导航| 五月天丁香网| 97精品在线| 日韩狠狠色婷婷| www.成人婷婷综合| 中文字幕日产A片在线看| 东京热人妻一区二区三区在线| 久久丝袜婷婷| 久热只有精品| 丁香五月婷婷图片综合| 天天色天天色天天色天天色天天色天天色| 狠狠操狠狠操| 丁香五月天社区婷婷| 六月丁香六月婷婷欧美| 熟女激情五月天 | 色五月婷婷视频| 五月天啪啪啪| 超pen个人视频97| 最新久久99视频网站| 婷婷综合久久| 9久热在线视频精品| 亚洲精品国产A久久久久久| 色婷婷文字幕| 色色色9| 99思思| 有码一区二区三区| 精品人妻久久久| 99综合一区| 影音先锋91在线资源站| 五月色婷婷影视在线电影| 色综合久久88色综合天天99| 九一九九黄色| 午夜色丁香| 色五月综合| 五月停停色| 久久精品亚洲一级牲爱综合| 综合久久狠狠| 天天日天天干天天插天天射| 99九九这里有免费视频| 99热这里只有精品50| 丁香五月综合婷婷| 综合久久97| 激情五月综合| 欧美色色色色色色色色色色| 五月天婷婷色色网| 久久九九@| 国产精品婷婷午夜在线观看| 日本三级第一页| 桃色伊人在线| 91色性感五月婷婷丁香| 中文国产五月天| 欧洲S级在线观看| 人妻性爱av网站| 蜜桃婷婷丁香| 99青青草99| 伦乱美欧| 久久涩视频| 日韩久久这里只有精品| 丁香五月婷婷五月基地| 色色色综合色| 五月丁香婷草| 精品人妻一区二区三区四区不卡在| 色色婷婷婷丁香五月天| 婷婷五月天天爽| 亚洲在线播放| 天天综合网91| 国产欧美婷婷| 久久久高清| 婷婷色五月天综合网| 天天日天天插| 激情五月少妇| 色色色在线| 丁香综合婷婷五月天| 婷婷久久在线| 丁香九月激情| 激情综合色五月六月婷婷| 婷婷五月在线视频| 色色网站在线| 九九青青草成人| 欧美日韩91| 日韩黄黄| 九月激情婷婷丁香| 五月婷婷六月丁香在线| 亭亭五月丁香综合欧美| 99精品丁香五月| 国产成人+亚洲+欧洲| 中文字幕在线视频播放| 激情爱爱网站| 天天操九九插| 久久jiuwww| 久操操| 99热精在线九九久久保| 亚洲黄色av网站| 国产精品电影网| 丁香六月婷婷综合激情欧美| 久久久久五月丁香| 九九黄色网| 婷婷激情蜜桃玖玖丁香| 91九色国产熟女| 俺去也综合| 久久五月丁香激情综合| 色婷婷啪啪啪啪啪啪| 激情综合五月| 色婷婷五月中文字幕在线dvd| 久久99久久久| 综合久久五| 婷婷的色色五月天| 五月丁香婷婷俺| 九九婷婷综合| 亚洲视频另类| 国产精品久久久爽爽爽麻豆色哟哟| 六月丁香社区| 成人色情五月天婷婷丁香| 五月天久草| 99热超碰在线| 欧美日韩成人高清在线| 蜜臀嫩草| 五月婷婷久久开心网| 热婷婷久| 免费碰碰视频久| 色婷婷综合网站| 天天夜天天色天天| 激情网 五月天| 五月天婷婷久草丁香| 欧美在线视频99| 五月婷婷影院| www.henhengan| 色婷婷手机在线| 99热很操老逼| 五月天激情亚洲| www.久久久久| 综合激情视频| 日本三级大片| 五月色网| 无码啪啪| 五月大香蕉| 久草热视频在线观看| 精品无码av丁香五月激情| 丁香五月天婷婷91| 97人人干。| 91人久| 亚洲另类在线观看| 亚洲1区| 开心激情五月天网| 五月天com| 狠狠色噜噜狠狠| 色小说婷婷五月天天天| 天天插天天很| 激情五月色综合国产精品| 五月丁香在线视频观看| 中海油常州环保涂料有限公司| 91人人操| 97久久精品| 性爱人人网| 欧美日韩婷婷五月天| 色婷婷成人做爰A片免费看网站 | 99日韩| 国产免费一区二区三区三州老师F1F1.CC| 六月丁香激情婷婷| 激情婷婷五月天日本系列| www.久久五月天.com| 大香蕉伊人久久| 丁香五月婷婷色偷偷| 成人AV播放| 九久久婷婷| 亚洲视频在线观看| 1024人妻无码中文字幕| 色久99| 久久超级碰视频| www.99免费视频| 婷婷娌伦网| 九九美女视频| 久久天堂网| 色婷婷五月天偷拍| 天搞天天天天天| 最新日本A片| 欧美激情五月天婷婷| 五月天婷亚洲综合在线嫩草网| 久久精品性爱视频,| 丁香五月激情啪啪| wwwC0maV五月花| 伊人9999| 五月婷婷六月丁香玖玖玫瑰91| 五月丁香六月婷婷色情| 五月亭亭直播| 九九99精品免费播放| 丁香婷婷五月综合欧美另类| 久久综合综合久久| 午夜精品777| 互月天综合| 999影院成人在线影院| 激情综合五月开心狠狠| 婷婷五月天色色| 九九一区| 丁香五月综合| 蜜臀嫩草| 九九热在线视频观看| 99色综合| 91日韩美女被插视频| 婷婷五月天综合久久| 91操操| 五月天婷婷丁香视频| 日韩99色99| 婷婷操超碰| 成人午夜无码视频| 久久精品99久久久久久| 五月丁香在线偷拍视频| 五月婷丁香| 婷婷D区| 五月丁香综合影院| 国产一区男女| 色婷婷视频| 无码成人播放器| 香焦网五月天| 久久99成人性爱高清视频| 婷婷五月天久久| 久久天天| 久久婷婷色综合| 激情婷婷五月色| 色婷婷先锋| 国产古装妇女野外A片| 大香伊人婷婷| 久久网思思| 91干| 亚洲性视频| 亚洲激情五月婷婷日日| 久久丝袜婷婷| 色五月开心久久网| 深爱五月中文字幕| 国产免费AV网站| 99欧美热| 第四色婷婷色五月| 九九成人视频| 开心五月婷婷五月| 91色五月| 偷拍91九色| 五月丁香伊人网| 亚洲午夜视频| 9精品视频在线| 天天檫天天爽| 日韩国产在线精品| 婷婷激情五月天色| 成人无码髙潮喷水A片| 久久9热| 凹凸操Av| JlZZJlZZ8JlZZ亚洲熟女| 婷婷精品| 五月婷在线观看| 激情五月色综合网| 激情六月天婷婷| 无毒黄色网址| 五月丁香婷婷三级| 丁香五月 激情文学| 色婷婷在线视频综合| 色色五月天婷婷| 91久久久久久久久久久| 激情另类综合| 人妻AV在线| 五月天色色婷婷| 日韩无码亚欧无码| 精品色| 五月色情婷婷| 免费看成人747474九号视频在线观看| 色色婷婷丁香五月天| 亚洲综合激情五月| Www.狠狠| 久久久91| 婷婷第六色| 狠狠操狠狠爱| 五月激情丁香久久综合网| 九九视频这里只有精品| 婷婷成人网五月天| 一本大道熟女人妻中文字幕在线| 怡红院院久久| 亚洲国产网站| 超碰免费大香蕉| AV成人在线播放| 99热天堂| 播五月婷婷开心| 亚洲综合色网| 99热国产这里只有精品| 99热碰碰| 草草视频91| 开心丁五月| 麻豆AV一区二区三区| 天天干天天干天天干天天干天天| 99热大| 色婷婷亚洲婷婷在线观看| 看逼中文字幕| 久热伊人| 久久人妻系列| 99超级碰碰| 激情五月综合| 色 五月俺去也| 99爱在线| www.久久99| 九九热视频网站| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 天天干夜晚夜操| 综合激情在线观看| 欧美成人va| 五月婷婷成人w| 高清免费在线视频| 激情欧美五月丁香| 丁香色综合| 激情99| 国产精产国品一二三在观看| 丁香色五月天| 久久亚洲精品成人无码网站导航| 涩玖玖免费视频| 久久99综合| 久色国产| 久热视频A.| 亚洲182在线观看| 9月色婷婷| 亚洲色婷婷99一9|| 日韩 中文 欧美| 国产肥白大熟妇BBBB视频| 夜夜夜夜夜操| 激情网第四色| 色婷婷色99国产综合精品| 99ER热精品视频| 日日夜夜干| 婷婷5月开心6月| 色综合久久99色| 超碰国产在线播放| 思思99热| 日本一级| 天天干天天日天天操| 美女五月天婷婷| 五月丁香啪。| 在线观看日韩12345区| 翔田千里 50岁 无码| 五月婷婷开心丁香| 日韩av干| 久久亚洲色导航| 五月天伊人综合| www.婷婷com| 一起草性爱不卡视频| 99re热视频这里只精品5| 丁香色五月婷婷17C| 一级黄色操B| 亚洲视频一区| 久操热线| 99热手机在线精品| 五月停亭六月,六月停亭的英语| 五月激情婷婷开心| 五月婷婷色情| 久久成人综合五月天| 99久久99九九九99九他书对| 婷婷六月天天| 91精品91久久久中77777久久玖玖九九| 丁香六月婷婷缴情欧美| 超pen个人视频97| 99ri精品| 六月婷婷激情| 丁香五月婷婷啪啪| 9久热| 久99视频在线观看| 91操在线视频| 91久久1118| 色噜噜狠狠色综合网| 色久天| 丁香久久久| 婷婷五月免费在线| 婷婷五月天色综合| 人人爽亚洲| 婷婷五月天成人综合网| 日日爱699| 五月天激情美女久久| 婷婷丁香五月激情图片| 久久视频这里都是精品| 婷婷五月开心中文字幕色| 天天舔天天摸天天射| 亚洲色激婷| 丁香五月婷婷姐| 高清激情av在线观看| 久久成人性爱| A网在线欧洲| 综合九九| 啪啪99| 五月婷婷色综图片| 91久操| 国产亚洲精品久久久久久郑州| 91丨九色丨东北熟女| 欧洲第一无人区观看| 97人人草| 99视频啪啪| 婷婷狠狠狠爱| 99精品在线观看| 丁香激情五月综合网| 婷婷五月天亚洲激情戏精品| 丁香六月激情网C0W| 99久久玖玖| 影音先锋91资源站| 五月丁香婷婷综合| 九 九九九AV| 大香蕉久久婷婷| 91九色首页| 欧洲激情五月天婷婷| 啪啪啪五月天| 99热免费精品| 国产精品18久久久| 超碰在线网站| 婷婷五月中文在线| 夜丁香五月婷婷| 激情久久肏屄视频| 亚洲成人在线观看av| 激情五月丁香色色去久久| 99热最新| 99色视频免费在线规看| 久久婷婷亚洲| 婷婷综合在线网| 97久久精品| 五月综合激情图片 | 五月天快乐开心激情网| 五月天精品视频| 婷婷色五月激情| 日本色色色色色色色色一色二色| A1片久久久| 色情·com| 99色网站| 免费无码毛片一区二区A片| 七月激情六月婷婷综合在线播放| 日韩人妻无码一区二区| 婷婷五月丁香欧洲| 五月久久丁香| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 国外亚洲成AV人片在线观看| 97欧美在线| 五月婷婷久久内射| 大香蕉AV在线| 成人短视频在线免费观看| 亭亭丁香久久五月| 爆乳熟妇一区二区三区爆乳照片| 午夜丁香久久久久久| 丁香婷婷久久| 婷婷激情图片| 色色亚洲99com| 91欧美| 婷婷丁香五月色| 青青久在线视频免费观看| 激情六月婷婷| 日本熟女一区二区| 岛国AV网站| 无码少妇高潮喷水A片免费| 天堂综合久久| 色情婷婷五月天| 欧美大片免费播放器| 91好好热日本在线| 婷婷六月啪啪| 2015在线中文字幕| 五月天自拍视频| 五月丁香六月婷婷网| 97五月婷婷| 色色色色色网站| 极品人妻VIDEOSSS人妻| 妻久久久久| 99热老网站| 天堂网色色| 久久人妻视步| 91熟妇大香蕉| 综合一本道| 丁香激情综合| 日日爽天天| 欧美色片中文字幕久久久久| 天天操夜夜夜拍拍拍| 激情综合五月| 亚洲综合网激情小说| 亚洲婷婷免费| 丁香六月色婷婷欧美| 五月色婷婷综合| 久久久久9| 欧美久热| 久久婷婷六月| 噼里啪啦完整版中文在线观看 | 97超级碰| 婷婷丁香五月综合激情小说| 五月婷婷婷色| 中文AV网| 99无码超碰| 九九激情网| 亚洲欧洲另类| 性做爰1一7伦| 五月丁香婷婷三级| Caop在线| 婷婷丁香五月亚洲| 综合激情网| 久久ri精品| 久久人妻伊人| 婷婷内射视频在线| 人人播| 婷婷5月色| 天堂无码人妻精品AV一区| 先锋男人99资源| 五月婷婷视频| 伊人在线视频| 九九伊人网| 另类小说色婷婷| 婷婷五月天,影院| 99久99久| 精品久久99码| 西瓜美女a片| 人人操人人妻| 欧美日本黄色| 成人久久天天x资源站| 国产精品激情AV久久久青桔| jizzdr| 婷婷色播婷婷| 久久精品一区二区三区四区| 婷婷国产成人| 97色色色色| 激情四射亚洲| 五月婷婷中文字幕| 天天做天天双| 中文字幕性爱视频| 六月丁香激情网| 国产精品久久久60086| 久久久99日本大片| 日本欧美成人片AAAA| 99热这里只有免费| 欧亚洲在线高清视频| 亚洲精品久久久无码| 开心五月网 | 国产五月视频| 99噜噜| 热热久久久久久久久| 丁香五月天堂网AV| 亚洲无AV在线中文字幕| 性视频久久| 久久草婷婷丁香网站| 91狠狠色丁香| 99色人| 婷婷久久综合久| 综合图区激情| 99热这是里只有精品| 77777亚洲午夜久久| 国产看真人毛片爱做A片| 婷婷六月综合激情| 99色色最新视频| 97色婷婷成人综合在线观看| 九九激情视频| 影音 五月 婷婷 久久| 激情综合五月| 综合网啪| 婷婷五月亚洲一本在线丁香| 五月婷婷丁香大陆免费| 99九九精品| 在线看av| 激情碰碰碰| 国产FREESEXVIDEOS性中国| 亚洲旡码| 99热免费| 99热都是精品| 五月婷婷香| 天天cha成人综合网| 26uuu欧美日韩| 人人人操| 五月天婷综合| 久xxxx| Av免费网站在线| 国产精品久久久爽爽爽麻豆色哟哟| 久久丁香五月婷婷| 97视频91| 任我肏| 日韩精品一区二区亚洲AV观看 | 六月丁香婷婷综合色播| 五月丁香婷中文| 色婷亚洲| 五月天丁香综合在线| 香港九九六区八区99| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 六月婷婷视频| 丁香婷婷五月天亚洲| 9+1视频网址| 五月停停999| 14色综合婷婷| 99在线69| 掩去也综合五月视频| 中文激情网| 亚洲小视频免费播放| 爱操人妻| 色婷婷六月性| 五月天开心婷婷久久| 五月婷免费视频久久久| 天天日,夜夜爽| 久香草视频在线观看| 天天久久综合| 色五月六月| 狠狠狠色激情综合适合| 国产精品电影网| 99九九综合久久九九| 亚洲无码播放| 五月色综合| 丁香六月激情蜜桃| 婷婷五月天激情免费在线观看| 色五月天成人| 91精品婷婷国产综合久久| 天天日天天爽夜夜爽| 狠狠干,狠狠操| 极品人妻VIDEOSSS人妻| 日本三级99人妇网站| 色综合网页| 丁香五月天.com| 九九精品在线视频观看| 久草五月天电影网| 色99网| 色播综合| 婷婷五月丁香激情| 欧美色97| 好好日激情五月天| 第五色色色婷婷| 丁香五月电影| 日本91在线播放| www.五月天婷婷| 婷婷基地成人五月天| 久久久人妻系列| 超碰日日操| www.99热| 综合五月丁香六月婷婷| 袁子仪视频观看| 欧美丁香婷婷五月天| 91性高潮久久久久久久久| 国产精品人人做人人爽人人添| 中文字幕av久久爽| 五月丁香成人网| 五月丁香花激情综合网| 久久婷婷精品| 9l视频自拍九色9l黑人| 开心五月婷婷五月| 99爱视频在线| EEUSS鲁片一区二区三区| 久久精品日| 亚洲成人色五月婷婷综合| 99久久6| 丁香六月婷| 涩涩婷婷五月| 亚洲激情五月丁香久久久久| 91viP在线看| 91精品91久久久久77777| 99啪啪视频| 色丁香六月| 在线不卡视频| 色久女| 日本久久爱| 99色热| 婷婷97碰碰| 26uuu亚洲欧美| 亚洲中文字幕av| www、丁香五月天| www,av好吊操| 免费看欧美成人A片无码| 婷婷激情九月| 丁香六月激情综合| yirenjiqingshiping| 新99思思视频| 国产成人99久久亚洲综合精品| 久久一操| 九九视频这里只有精彩| 精品国产AV色一区二区深夜久久 | 婷婷综合网| 中文字幕在线不卡| 五月婷婷成人| AV中文字幕夜夜操b天天摸bb | 九九色影视| 精品99在线观看| 天天射色五月天| 久久这里只有欧美| 操操综合网婷婷| 五月丁香在线婷婷蜜桃| 国产做A爰片毛片A片美国| 丁香色五月婷婷17C| 国产在线中文字幕| 色玖玖爱| 色婷久久| 久久久精品视频79| 午夜婷婷| 性爱先锋AV| 婷婷五月丁香六月| 在线国产精品色| 99精品在线观看| 久er免费视频| 天天插天天日| 99热在这里只有免费精品| 久久九九色| 婷婷色激情网| 激情综合网五月激情| 天天爽在线视频| 可以看的av网站| 婷婷四月 成人 狠狠干| 久久精彩视频| 欧美综合婷婷网| AV中文网| 五月丁香六月综合基地| 日本人妻操| 激情av在线| www.五月婷婷久久.com| 九九这里都是精品| 伍月激情天| 久久婷婷六月综合国际| 97色色在线视频| 欧美日韩五月婷婷| 色婷婷狠狠爱| 亚洲精99| 丁香五月停停av| www.五月天婷婷| 99ri国产在线| 色婷五月天| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 色狠狠色噜噜AV天堂五区| 日韩av网址大全| 婷婷综合一二三| 丁香五月久久| 96性爱视频| 亚洲在线成人| 天天天干夜夜夜操| 五月天激情综合10p| 碰碰碰91| 五月婷婷综合视频| 婷婷色狠狠| 色婷婷操逼| 国产人妻777人伦精品HD| 色欲久久久久| 久久停停超碰| 日本熟妇乱妇熟色A片蜜桃| 婷婷射丁香| 五月婷婷综合激情网| 五月天久久色| 午夜成人综合| http://www.lingjunshare.com/| 丁香五月激情月| 99热99色| 99这里只有精品视频| 欧美欧盟性爱网| 久久探花91swag| 91久久久久久久久18| 欧美综合婷婷网| 丁香色成人| 国产精品18久久久| 五月天久久综合| 天天摸夜夜爽天天做| 综合玖玖偷拍| 思思久久99热只有频精品66| 偷偷操99| 操日本人妻视频| 伦乱天堂| 色射7856五月天激情四射| 五月天激情四射| 五月婷婷激情五月| 五月丁香成人| www色色com| 婷香狠狠爱五月| 疯狂做受XXXX高潮A片| 麻豆雪千夏| 午夜无码精品色综合久久| 99ri国产在线| 9在线9在线婷婷在线国产| 91九色网| 热九九精品| 五月人妻婷婷视频| 久久这里只有精品视频26| 九色视频91| 中文字幕黄色电影网址| 99热个人在线| 五月婷婷综合在线| www.久久爱.com| 丁香午夜天| 五月欧美色色五月| 玖月婷婷爱丁香| 久久女人天堂| 99.N在线视频| 亚洲丁香婷婷| 丰满少妇猛烈A片免费看观看| 91viP在线看| 超碰人人干| 久热这里只有精品99re| 色婷婷五月网| 五月婷婷丁香大陆免费| 五月天婷婷一起草| 九月婷婷综合| 丁香六月婷婷综合激情欧美| 亚洲另类毛片| 日韩成人影片在线观看| 亚洲情综合五月天| 精品成人无码A片观看香草视频| 538在线精品| 丁香六月啪啪| 日本色色网| 伊人99热| 色播五月婷婷| 日本va欧美va国产激情| 99re思思热久久| 狠狠操狠狠爱| 综合色播| 九久9精品| 综合五月婷婷| 91狠狠色丁香婷婷综合久久| 99热精品在线观看| 五月婷丁香| AA片在线观看视频在线播放| 深爱五月天| 亚洲熟妇AV乱码在线观看| 天天综合精品| 九九视频在线观看视频6| 日产精品久久久久久久蜜臀| 99在线精品免费视频| 欧美交换配乱吟粗大25P| 亚洲视频在线观看| 九八Av| 久久91久久精品久久| 99精品丰满| 久久天堂精品| 五月婷精品| 快乐婷婷五月天| 五月人妻婷婷| 五月天成人在线播放丁香| 婷婷五月天免费视频在线观看| 久久这里有精品视频| 五月性色| 九九久久五月天| 激情综合五月| 成人无码免费一区二区中文| 亚洲视频另类| 色色色婷婷五月| 综合色久| 天天色色婷婷| 六月婷婷五月天| 色婷婷丁香| 亚洲精品又粗又大又爽A片| 丰滿爆乳一区二区三区| 激情综合色婷婷啪啪六月天| 亚洲操人| 热这里| 99热都是精品| 天天日综合| 九九爱激情| 午夜成人综合| 丁香婷婷丁香五月欧美人| 九九色视频| 99久在线观看| 中国女人做爰A片| 国产精品岛国片在线观看免费| 久久婷婷影院| 激情开心五月亚洲| 另类图片激情五月| 成人午夜天| 日本乱论99| 五月婷婷六月丁香综合视频在线| 九九精品网| 五月丁香天堂网| 蜜臀av 粉嫩av 懂色av| 超碰人人操人人干| 开心五月天激情| 97干97色| 九热网站| 综合激情伊人影视在线| 综合五月天婷婷色| 欧美丁香婷婷五月| 婷婷丁香综合色AV| 丁香亭亭久久| 26UUU精品一区二区| 99热色精品| 99热九九在线| 久热最新视频| www.五月.com| 天天肏天天肏| 色的色综合| 激情综合网五月丁香| 日韩欧美成人一区二区三区| 97碰免费视频在线| 精品成人a v无码内射| 大香蕉伊人久久| 婷婷九月亚洲| 五月丁香欧美综合| 色婷婷狠狠| 99福利导航| 五月天天天色| 国产69精品久久久久999小说| 97视频.干com| 激情五月丁香六月| 男人先锋久久| 丁香婷婷五月天校园春色| 99精品无码| 国产精品 的国产| 五月丁香六月婷婷不卡免费无码| 久久99操| 色婷婷综合成人| 5月婷婷激情在线| 夜夜嗨一区二区三区直播内容 | 久久激情综合| 九九精品热| 9久热免费视频99| 99久在线精品99re8| j五月香在线| 亚洲日本激情| 国产成人网站在线观看| 色色婷婷丁香五月天| 五月婷婷丁香综合| 婷婷五月欧美综合| 激情伊人六| www.激情| 激情五月天色| 婷婷五月天成人| 女同激情久久av久久| 天天拍天天操| 激情五月天色婷婷综合| 天天爽,夜夜爽| 岛囯综合激情网| 99精品久久久久久久婷婷久久| 国产看真人毛片爱做A片| 色五月婷婷中文字幕在线观看| 九九AV在线| 五月婷婷激情久久| 国产9色在线/日韩| 人人操插| 97AV在线视频| 人妻久久久久| 久久久久9| 99久久国产成人精品| www.久久爱| 思思99精品视频在线观看| 日本久久精品| 天天噜天天爱| 日本操天堂| 玖玖资源天天无码| 91丁香色五月| 狠狠草在线观看| 婷婷玖玖五月天| 97干在线观看视频| 日本99久久| 日本片日本片祼观看网站在线看中文版网页在线看 | 桔色成人官方网站| 四虎99热在线观看网站| 99热这里只有免费精品| 色五月大香蕉婷婷| 激情爱爱网站| 啪啪综合网| 国产一区二区三区影院| 大伊久久| 九热电影av| 久99热| 丁香五月激情月| 色婷婷无吗| 伊人久久婷| 色婷婷内射| 99色免费观看全部| AV性爱网| 久久久网站| 亚洲字幕AV一区二区三区四区| 五月丁香六月婷婷亚洲视频| 香蕉大综综综合久久| 日狠狠| www国产亚洲色婷婷com| 国产精品国产| www.超碰在线| 色色丁香激情五月| 99re久热只有精品6在线直播.com| 大香蕉伊人久久| 精品福利911| 香蕉网久久| 五月丁香久久| 天天做夜夜爽| 激情五月天婷婷激情| www.丁香黄色五月天人与| 激情五月天天狠狠久久| 六月丁香啪| 久久182| 99亚洲视频| 精品成人a v无码内射| 激情小说五月天| 影音先锋五月婷婷| 超碰在线人人| 99re这里有精品手机在线| 超碰在线超碰| 荫道BBWBBB高潮潮喷| 亚洲欧美丁香五月天亚洲欧美| 开心久久xxx色| 91亚洲免费片| 综合激情五月天| 79精品视频在线观看,| 天堂婷婷五月在线| 综合激情在线观看| 熟妇人妻中文字幕无码老熟妇| 色色亚洲视频| 色婷婷色久综| 婷婷五月情| 婷婷五月天大香蕉在线视频观看| 天天精品视频免费观看| 女人天堂 AV| 色色色精品无码区| 久久久久久久8| 婷婷视频在线碰| 色五月人妻| 婷婷娌伦网| 婷婷五月天资源| 深爱丁香网| 任你操精品免费| 亚洲美女裸体被操在线观看| 五月婷婷在线视频| 五月天婷婷AV| 日韩在线五月天婷婷| 五月色丁香综合| 97色在线视频| 四季AV综合网| 超碰免费观看| 操人妻AV| 婷婷久久五月| 另类图片天天影视在线观看| 噜噜国产| 丁香婷婷十月| 亚洲 在线 性爱| 五月婷婷综合热| 99久在线精品| 六月婷婷久久| 9久9久| www.爱婷婷.com| 日本91在线播放| 大战熟女丰满人妻AV| 亚洲热热视频| 丁香六月色婷婷| 婷婷 丁香 精品| 久久人妻www| 婷婷五月深爱五月| 少妇久久诱惑视频| 久久婷婷五月草视频在线播放| 男女99免费视频| 婷婷五月综合色拍| 97色色综合| 五月五月婷婷| 大香蕉九九操| 91pornav在线| 五月激情婷婷国产精品久久久久久| 大香蕉丁香婷婷| 99久久综合狠狠综合久久| 97在线观视频免费观看| 欧美成人AAA片一区国产精品| 婷婷午夜| 九九无码| 三男玩一女三A片| 国产美女无遮挡裸体毛片A片 | 这里只有精品在线视频精品| 日本操碰碰| 99久久精品亚洲综合| 日韩三级视频一区二区| www网站在线观看| 婷婷五月激情综合网| 五月丁香另类网| 午夜激情四射影院| 九九综合五月欧美| 亚洲Av成人在线观看| 超碰人人99| 久久精品五月天| 大香蕉久久久久| 色婷婷狠狠| 色A网| www.91有码.com| 天天舔天天摸天天透| 亚洲热久久| 久久小视频| 九九青青草成人| 婷婷五月av| 97在线观看| 五月丁香综合久久夜夜| 99综合熟女| 99久久9| 婷婷五月天AV激情| 中文字幕婷婷五月天在线观看| 99热九九热| 五月婷婷天堂| 色婷婷亚洲婷婷| 婷婷五月综合社区在线| 久久宗合影| 九九伊人网| 激情五月丁香激情综合网| 99热亚洲精品| 五月丁香久久综合| 成人做爰A片免费看视频| 91精品91久久久久77777| 久久伊人婷| 亚洲午夜AV| 婷婷开心综合人妻小说网址| WWW,五月| 99热免| 久久久91精品| 任我鲁这里有精品视频| www.天天干.com| 欧美激情综合色综合色| 丁香五月区| 免费看欧美成人A片无码| 99在线综合视频| 婷婷丁香五月亚洲欧美| 99re在线这里只有精品视频首页| 日本欧美成人片AAAA| 亚洲激情综合| 六月色 亚洲| 五月婷婷干干干| 中文乱子伦视频| 中文字幕 中文字幕明步| 亚洲AV在线免费看| 色婷婷免费观看| 亚洲另类婷婷五月综合| 婷婷五月天综合久久| 午夜天堂一区人妻| 国产精品色婷婷99久久精品| 天天操天天操| 棕合影院色色| 五月天丁香啪啪网| 99色综合| 五月婷婷在线视频观看| 年轻的妺妺伦理HD中文| 色色九九五月天 | 久 久9 9 热 视 频| 99久久6| 97操| 九九久久五月天综合伊人| 五月天婷婷av| 91人人爽人人操| 丁香亚洲婷婷五月| 99碰碰| 婷婷色五月天色色| 婷婷亚洲丁香五月| 亚洲另类电影| AV在线收看| 开心五月色婷| 丁香五月天堂| 色色色五月婷| 精品,99| 夜夜穞天天穞狠狠穞AV美女按摩| 猫咪伊人久久| 婷婷激情五月综合| 丁香网五月天| av婷婷丁香 六月| 99久久久久久| 丁香花成人区| 国产高清精品色| 嫩草AV久久伊人妇女超级A| 成人在线精品| 欧美日韩成人高清在线| 人妻六月天| 伊人网色婷婷五月天| 被男人添B超爽视频| 色综合色| 黄网免费观看| 九九色院| 亚洲国产99| 丁香五月婷婷久久久| 亚洲噜色| 色.五月综合网| 激情五月综合免费| 欧美精品999| 五月婷五月婷伊人伊人五月婷| 欧美色久| 婷婷激情在线| 美女精品一级不卡视频| 五月六月丁香婷婷在线观看| 午夜日韩久久久网站| 激情激情激情网| 激情网婷婷五月天| 欧洲区自拍| 岛国AV网站| xxxx五月天色色| 美女五月狠狠| 五月天AV大香蕉| 丁香五月激情五月| 超碰高清在线| 综合XX网| 久久思思99| 99噜噜| 91人人操.COM| 99色在线视频| 五月花婷婷在线精品视频| 东京热免费视频| 五月的婷婷六月丁香| 超碰婷婷五月|