日韩精品一区二区三区在线视频放-无码中文字幕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
返回資訊列表
亚洲国产欧美日韩人妻日中文| 成人精品在线免费视频| 亚洲最大黄网| 人妻蜜桃臀| 天天操人人操骚逼网站| 天天影视综合色| 97资源久久| 国产成人精品日本亚洲语言| 加勒比五月天| 乱伦a片视频| 中文有码第五页| 3PAV乱伦视频| 2020中文字幕| 亚洲丝袜综合| 麻豆久久久一区二区| 超碰在线综合97| Av手机版天堂网| 欧美性爱97超碰| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 午夜福利免费福利视频| 亚洲精品国产熟女| 91成人无码| 偷拍新久久| 蜜乳中文字幕a在线| 久久久亚洲精品电影免费看| 高清在线偷拍自拍视频| 97精品视频在线| 亚洲激情在线观看一区| 久热伊人99re| 欧美呦呦性爱| 亚洲清纯唯美| 国产激情久久久| 夜夜骑日日| 逼逼逼逼操操操操操操操操操午夜剧场 | 欧美熟女操屄| 久久精品导航| 99色| 国产福利一区二| 好湿好紧好爽 视频| av毛片aaaaa免费看| 久久国产精品一级二级三级| 九热久| 日韩乱码Av| 中文字幕一二三| 水野优香在线观看| 亚洲天堂久久久久久粉红视频| 丰满人妻一区二区三区免费,| 97天天日| 99久久9| 五月婷婷久久综合| 蜜臀99久久精品久久久懂爱| 精品久久久av无码免费| 射丝袜高跟鞋99| 日韩精品中文字幕人妻| 中文字幕人乱码中文字的预防方法 | 婷婷丁香在线| 亚洲色交| 国产精品一区二区后入| 高清国产av无码| 天堂精品一区| 精品福利视频| 高清无码 国产精品| 日本最新1区2区3区| 丁香九月激情啪| 欧美AB在线| 九九九久千久久激情蜜桃在线看 | 日韩欧美性吧婷婷乱伦大香蕉| 欧美九九99久久精品| 久久爱超碰网| 97爱欧美| 欧美激情精品| 2010男人的天堂| 亚洲男人综合| 亚洲中文电影| 久久久精品一区二区| 男人的天堂无码| 久久91| 十八禁av无码免费网站APP| 熟妇一区,二区,三区。| 久久啊哟| 亚洲欧美一区二区三区一猛片| 国产丁香精品露脸视频| 超碰538| 亚洲精品久久久久久久蜜桃臀| 美女网站91| 色香在线| 久久久中文版| 麻豆60秒| 97色色婷婷| 欧美一二三区四五区| 两性色网| 国产无马在线| 久久女同性恋一二区| 天堂8在线新版官网| 超碰欧美97| 2019亚洲男人天堂| 国产午夜福利视频在线| 五月丁香啪啪网| 影视综合无码少妇| 强被迫伦姧在线观看无码网站| 欧美91久久久久| 欧美亚洲激情小说| 蜜桃臀av在线观看| 性爱精品一区| 在线观看成人性爱免费小视频| 在线视频资源| 日韩猛交| 国产sv美女内射| 欧美色图 人妻| 国产操伦| 伊人久久综合影院| 波多野结衣之双飞调教在线播放| 亚洲中文字幕在线视频一区二区| 国产综合久| 九九九精品色乱九九九| 一区二三区四区视频大全套| 欧美日韩国产精品久久色婷婷| 欧美性爱一内片一区二区三区| 九九av| 亚洲成人美女无吗| 国产品精品自在在线午夜免费| 亚洲一区二区中文字幕| 后入式999| 亚洲欧美精品久| 91新在线欧美| 中文字幕久久精品一区| 欧美老妇女内射网址| 欧美亚洲另类在线蜜桃| 无码人妻精品一区二区中文| 啊啊啊好舒服视频| 翔田千里AV无码秘 三区| 嗯嗯不要 视频| 外国免费性情大片| 亚洲精品国产精品成人| 91狠狠| 欧美在线播放aaaa| 97超碰美女| 国内精品久久人妻性色av| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 成人av在线播放| 人妻少妇精品| 男人久久天堂| av黄图片在线观看| 曰韩中文人妻视频| 人人操人人色网| 亚洲欧美首页| 少妇熟女1区2区3区| 人人操人人93| 2019久久久久久久久福利| 91c色| 91精品人妻| 一个人免费视频观看在线WWW| 三级日本一区二区三区| 天天色天天干天天爱| 小日子操bb在线看| 亚洲成人性爱在线观看| 黄aaaaaaaaaaaaaaaaaa色网站| 激情接吻视频久久久久久| 无码精品蜜桃一区二区三区ww| 欧美午夜视频精品久久| 日本综合久久| 欧美日韩操逼动图| 亚洲精品久久久久久久蜜桃臀| 国产小u女在线观看| 色婷婷六月| 精品久久視頻在线| 日本精品免费一区二区三区四区| 色综合超碰超| 欧美v日韩v亚洲v最新在线| 日韩免费福利在线观看| 人妻81p| 天天做天天爱天天高潮| 99热精品在线观看| 蜜桃臀一区二区aV| 五月天亚洲色图| juliaann丝袜| 国产午夜精品在线观看| 精品国产无码中文| 人妻少妇一区二区| 欧美精品久久| 人人妻人人澡人人爽人人精品浪潮| 蜜臀无码视频在线观看| 91艹B视频| 久久九九99| 欧美 综合| 日本免费一区二区不卡| 夜色91| 久久久新亚洲AV| 一区操逼日比视频| 婷婷五月丁香五月| 精品丰满熟妇人妻一区| A级国产欧美激情在线| 最近2019中文字幕国语免费版| 超碰久热| 久久伦理视频久久大香蕉视频| 日曰骚久久精品| 国产日韩精品suv| 探花激情视频| 国产av热热色| 国产精品久久久啊| www.久久| 夫妻AV网站| 国产一级内射高清视频| 黄片在线免费在线观看| 伊人操操| 天天上日日上日韩精品| 欧美综合骚| 99综合视频一体| 精品一区二区成人| 国产人伦精品一区二区三区| 五月天激情小说| 插欧洲美女欧美精品| 青青国产精品在线| 久久99久久99精品天美传媒棢·纸:. | 嫩草一区二区在线观看| 日本天堂网| 中出20p| 一区不卡在线观看av| 大香蕉色十月| 天堂性色| 人妻人人做人人澡人人爽欧美一区| 中亚黄色三级大片| 国产成人91一区二区三区| 亚洲精品99| 一区二区三区精品黑丝白丝酒店对鸡| 亚洲图片欧美另类综合免费视频大大香| 91天天| 91精品久久久久久77777| 久草婷婷| 国产精品96久久久久久| 亚洲黄网在哪免费看| 免费看日产一区二区三区| 精品久久99| 久久国产乱子伦精品免费女,网站| 大香蕉一线视频| 超碰综合色| 男啪女色黄无遮挡免费观看| 蜜臀无码视频在线观看| 六月婷婷综合| 不卡在线一区,精品一区二区三区中| 97超碰免费生活| 亚洲图片日本AⅤ欧美在线| 国产欧美日韩女同性恋ww喷水精品 | 中文字幕艹艹| 91社区伊人| 综合熟女| 极品白嫩美少妇在地板上位骑射淫水泛滥| 精品久热| 人妻熟女一区二区在线视频| 99综合免费视频| 青青久草| 亚洲……91| 97色碰| 91女人的网站| 欧美成年人性爱视频免费观看| 嗯啊啊啊轻点视频 | 男人天堂导航| 亚州国产精品乱| 九九九只有精品| 国内毛片国产专区二| 夜夜免费视频| 人妻少妇久久久| 91新在线欧美| 九九精品99| 97超碰影音| 秋霞视频一区二区| 国产一级内射无挡观看| 精品日韩人妻精品一二三区| 欧美日韩狠狠爱| 亚洲日本男人天堂网| 亚洲涩涩| 五十路熟女在线不卡观看一区二区| 92大香蕉| 精品久久視頻在线| 秋霞一集毛片观看| 欧美强奸乱能| 欧美少妇色图| V A在线| 日本不卡高清免v欧美日韩在线观看| 91N欧美| 91操熟女| 啊啊啊啊在线播放| 久久婷婷影院| 欧美日韩大香蕉| 久草草一二三四区久久| 青青草中文-久久青草精品一区二区三| 色与欲影视| 欧美狠狠弄| 一个色导综合| 丝袜美腿91| 日韩乱码Av| 在线观看无码三级少妇| 亚洲男人的天堂网| 涩涩五月天| 91在线超高颜值国产| 人妻精品一区一区三区蜜桃91| 国产AV超爽| 天天干18禁| 日韩钢筋无码高清啾啾啾| 最新啪啪视频| 国产精品久久久久久高清无码免费看 | 日韩av不卡在线观看| 欧美97在线欧| 一二三卡欧美日韩人妻免费精品| 不卡在线观看视频| 天天操人人操骚逼网站| 美女尤物福利视频| 女人 A一级| 啪啪综合网| 午夜精品久久999热蜜桃介男人用| 五月婷色| 日韩精品亚洲专区在线影视| 成 人片 黄色大片| 淫荡网址| 日日AAvv| 欧美在线|亚洲| 香一区二区三区| 综合自拍| 国产一区二区在线播放量| 欧美性夜| 91天美免费| 熟妇高潮一区二| 天美麻豆精品视频99| 久久久久国产一区二| AVE乱伦| 亚洲美女黄色| 欧美日动态视频| 国产刺激视频| 全球成人中文在线| 黄片com.| 婷婷超| 欧美性夜| 91久久婷婷| 91碰碰| 裸体美女久久久| 亚洲aw毛茸茸在线| 色激情五月天| 日本污ww视频网站| 久操婷婷| 久久久97| 欧美性爱五月天| 一区二区三区精品视频| 三级特黄60分钟播放| 日本不卡在线二区三区| 熟女熟妇一区二区三四区| 日韩资源网| 国产高清不卡视频| 91色五月俺来也| 国产精品久久久久绯色| 欧美色九九九| 青青草亚洲一区| 五月婷婷基地| 91蜜臀熟女| 婷婷激情啪啪| 国产精品天美传媒| 蜜桃臀 后入 一区 二区 三区 在线| 婷婷五月天在线观看| 丁香五月性爱| 国内毛片免费h片在线| 亚洲乱码国产乱码精网站| 国产黄色 A 片免费看| 国产毛片在线| 777奇米影视777四色| 国产欧美日韩精品中文| 日本肏逼视频在线观看| 搡老熟女老女人老熟妇免费视频| 激情五月天色色网| 色性综合| 午夜欧美J进J出白浆流出久久久 | 天天碰操中国年青熟妇| 新97国产超碰| AV色五月| 粉嫩av一区二区三区天美传媒 | AV色女综合| 久久老熟女| 先锋音影AV| 夜夜青青无码影院| 欧美宗合网| 日韩一级二级三级在线不卡观看完整| 亚洲春色一区二区三区| 欧美的性爱网站免费| 国产在线观看91精品一区| 蜜乳AV.COM| 污污汅18禁网站在线永久免费观看 | 欧美性爱中文字幕无线码| 这里都是精品在线观看| 久操99| 九九九综合精品| 久久超碰97中文字幕| 久偷拍欧美日韩三区| 日本高清一本二本免费不卡| 国产丸一视频| 蜜臀久久久99久久久久 | 欧美日本不卡在线| 综合av社区| 一级黄色牲爱A级片| 久久久久久久久久8888| 欧洲Au麻豆| 加勒比少妇AV婷婷六月天超碰超碰| 91在线国产后入风骚翘臀美女素人| 亚洲日本天堂| 亚洲av综合伊人久久| 蜜乳Av成人片网站| 日本三级韩国三级99| 久久久穴999| 亚洲情色综合网| 色99999| 999亚洲国产视频| 亚欧精品久久久久久久久久久| 天天日天天射天天干| 青青伊人这里只有精品| 久久91| 久久久久免费看少妇A片特黄| 99婷婷| 国产乱弄免费在线视频。| 国产中文福利| 中文字幕乱亚洲美女精品一区| 国产日韩在线播放av| 五月丁香影院| 亚洲黄色网址| 欧美综合在线91| 爱我干综合| 天天综合欧美综合| 国产精品一二三在线看| 精品一区二区3区| 超碰伊人在线| 亚洲欧洲中文日韩女优乱码| 熟妇熟女视频一区二区三区| 97se综合| 日韩字幕一区| 99精品久久| 金典av| 熟女人妻精品一区二区视频 | 91成人高清在线观看| 九九人人操| 午夜性| 日日操夜夜操天天操免费观看麻豆| 三级色综合| 有码免费观看| 超碰97人妻在线| 久久草大香蕉| 91天天综合在线观看| 神马久久久久久久| 久久久亚洲精品电影免费看| 熟女久久| 国产福利影视| 天天日美女的B| 91五十路| 精品夜夜澡人妻无码| 欧美天天拍| 天美一二三在线观看Av| 妇女乱色二区| 啊啊啊啊啊啊啊啊视频| 日韩操逼HD| 欧美精品999| 一个人在线看的黄色电影网站| 久久综合精品一区二区三区| 欧洲成人性爱视频| 欧美少妇色图| 日韩黄片视频试看| 97色伦欧美| 欧美性夜| 看黄片视频免费| 大香蕉十区| 成人国产视频在线观看| 超AV色女| 日韩三级伦理中文字幕| 一区二区三区日韩欧美| 亚洲**2021在线观看| 后入内射蜜桃臀| 草草电影院| 欧美亚洲性爱一区二区| 午夜舔阴达高潮视频免费看| 中文字幕一区二区三区人妻少妇在线| av2014 日韩在线中文字幕| 久操凹凸视频| 99只有精品| 伦伦成年午夜免费视频| 美女网站黄页| 东京热免费视频| 超碰美国| 国产视频一区二区在线| 伊人操你| 99精品丰满人妻无码| 精品一区二区成人动漫| 久久久久久久9| 精品人人| 日韩一级特黄av毛片| 97网址97| 三级网色| 熟女少妇视频| 冬京热男人的天堂| 欧美,日韩综合久久| 老女人碰碰在线碰碰视频| 中国东北熟女老太婆内谢| 9997se| 少妇高潮九九九九| 91天堂色男人的天堂| 91亚洲欧美色图| 色哟哟综合| 欧美精品另类人妖xxxx| 欧美操人视频| 黄色二级片网站| 亚洲日韩精品久久久久一区壹牛| 伊人操操| Sekablack无码一区| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 日本性爰一道本| 日本中文字幕在线视频 | 秋霞Av理论一级在线| 97精品免费| 激情综合五月丁香| 5278欧美一区二区三区| 色色99| 国产激情在线| 亚洲本色精品一区二区久久| 一区二区三区亚洲| 91老司机精品| 色女网日韩| 另类 日韩 熟女| 91老司机在线| 97色视频在线| 天天插天天插| 久久毛卡| 大香蕉免费3| 九九九九九九免费视频| 日产中文字幕2020| 亚洲久热| 日韩欧美一级特黄大片| 日韩中文字墓| 一本色道久久综合精品婷婷| 嗯嗯啊啊好疼| 91美女视屏| 91粉嫩萝控精品福利网站_精品影音先锋国 | 91人妻视频| 中文字幕乱亚洲美女精品一区| 97干天天| 中文字幕在线观看AV| 欧美一级A片在线看视频性色| 青娱乐999| 91久久久久久久| 精品久久在线区一区| www激情| 狼狼色丁香久久婷婷综合五月| 中文字幕精品久久久久人妻红杏ⅰ| 日韩啪啪啪啪啪| 国产精品岛国片在线观看| 日欧操屄| 自拍第一页| 综合色拍| 97超碰资源网| 日韩二三区| 欧美夜夜狠| 国产精品探花视频| 强奸国产精品视频| 18禁在线视频| 蜜臀久久99精品久久久久久婷婷| 久久香蕉国产线看观看亚洲女人| 久久久专区| 久久精品国产亚洲AV高清演员表| 色色综合97| 少妇久久久久久久| 国产一级137片内射麻豆| 大香蕉婷婷| 精品婷婷| 岛国视频一二三区| 无码人妻毛片丰满熟妇精品区| **一级毛片国产| 国产激情在线观看| 日韩AV一起草| 久久香蕉国产线看观看猫咪av| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 九九久久99| 亚州免费啪啪视频| 午夜福利av电影在线| 人人人摸人人| 欧美精品一区二区少妇免费A片 | 91动漫操逼视频| 男人a天堂手机在线版| 欧美强奸乱能| 精品性爱一区二区| 99色色网| 婷婷激情啪啪| 日本有码影片下载| 欧美图片色综合| 亚洲免费97免费| 啊啊啊啊啊,啊啊啊啊好舒服,操我舒服啊啊啊 | 国产日韩无码一区二区三区久久区| 日本操逼视频免费| 国产精品不卡一区二区三区av| 国产亚洲福利第一页丝袜| 99少妇| 天啪| 欧美一级黄色免费专区| 岛国A V在线免费看| 亚洲国产尤物yw在线观看| 操逼片国产| 亚洲色图殴美色图激情乱伦| 中文字幕aⅴ在线视频| 欧美极度丰满熟妇hd| 婷婷久月| 1024亚洲中文字幕久在线看片你懂的| 在线视频一区二区传媒| 91精品又粗又猛又爽| 亚洲骚男同com| 91模特在线观看| 国产精品久久久久久久久久久久久久吹 | 久久超碰天天| 国产精品乱码久久久久| ji熟女.com| 超碰成人国产| 亚洲黄色影视| 97超碰无码网| 九九九九九九九九九九九蜜桃 | 亚洲天天自拍| 性无码专区2020| av无码精品久久久久| www.色五月| 久偷拍| 国产超碰97| 国产精品人妻无码久久久互動交流| 97资源视频| 亚洲乱熟女一区二区三区大香蕉| 麻豆亚洲Av成人无码一区精品| 黄呦呦在线| 国产第11页| 亚洲性天堂| 国产51色综合久久免费| 五月天婷婷激情| 啊啊啊快操我视频| 蜜臀网 一区| 亚洲av性爱电影| 精品国产乱码久久久久久口爆网站 | 成人午夜无码视频| 97精品第3页| 性欧美精| 人妻天天爽夜夜爽爽| 久久综合18p| 久久久精品一区二区| 九九热精品| 91人妻尻屄视频| 日韩无码服务区| 人人摸人人干人人拍97| 中文字幕色AV| 日韩精品一区二区三区色欲| 99999国产| 大香蕉碰| 午夜激情成人在线观看| 99精品无码| 天堂精品在线| 97热视频在线观看| 亚洲国产精品无码AV久久| 青青草白白色| 欧日韩在线观看| 75大香蕉| 欧美丰满少妇交换91欧美精品| 人人爱人人乐人人操| 人人射人人操人人摸| 日本不卡三级网在线播放| 啊啊在线| 啪啪啪精品视频| 久久大线蕉一区| 亚洲丝袜在线观看| 在线观看国产黄色| 男人的亚洲天堂| 男女猛烈无遮掩视频免费软件| 无码自拍SM| 五十路人妻在线| 亚洲熟女精品| 亚洲狼狼干综合1| 亚洲97在线观看| 伊人女女资源在线观看| 曰本91情色| 国产一区二区在线播放量| 小草精彩毛片| 色吧91| 亚洲国产婷婷在线播放| 伊人97色天使| 日本人妻最新在线中| 大胆91| 九九热三级片| 国产AV超爽| 久久中文字幕女同性恋一区| 污污汅18禁网站在线永久免费观看 | 激情欧美日韩女同久久| 久操91视频| 一区二区三区男女操逼黄色小电影| 亚洲天堂男人的天堂| 亚洲丝袜二区| 欧美91变态| 91 手机在线播放 绯色| 九月伊人中文字幕| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 99视频自拍区| 成视频在线观看免费看| av天堂加勒比| 色色色网站| 色臀AV| 精品丰满人妻一区二区三区免费观| 国产成人五月天丁香花| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 亚洲国产成人综合碰碰三级经典| 欧美成人午夜免费福利785| 熟女熟妇伦久久影院毛片一区二区| 成人免费在线网站| 青青草精品| 亚洲一级性爱视频免费看| 久久久久国产| 强奸乱伦中文字幕AV| 五十路人妻在线| 99re在线观看| 97视频免费在线观看| 亚洲激情 欧美色图| 午夜精品久久一区二区| 97超碰天天| 操逼操逼视频操逼| 欧美综合中文| 丁香激情五月天| 亚洲国产综合视频| 午夜精品久久久久久久男人的天堂 | 超碰97综合| 天天综和| blacked精品一区国产| 天天摸天天舔天天操| 狠狠操官网| 国产精品夜夜夜| 久久久九97| 9色国产精品一区粉嫩| 久久亚洲熟妇在线视频| 91黑人无码激情在线| 青青草原香蕉日本Ap| 黄页18禁| 精品一区二区国产日韩| 1024午夜激情男人的天堂| 五月丁香婷婷综合网| 99久久久无码国产精品性啊聊| 无码人妻精品一区二区三区九九 | 国产欧美日本亚洲精品| 国产自啪精品视频网站黑丝| 91neishe| 久久东京伊人一本到鬼色| 色悠久久久av| 五月黑AⅤ| 亚洲综合97| 国产一区二区久久| www成人啪啪18秘 免费| 日韩熟女三十乱伦| 五月天久久婷婷亚洲| 久久婷婷综合国际产色怕| 久久78| 岛国不卡超碰护士AV在线播放| 五月丁香啪| 亚洲va有码在线天堂| 亚洲欧美自拍偷拍| 久热久| 国偷自 一区二区| 啊啊啊啊好疼| 黄片无码在线制服| 久久久久921| 超碰97综合在线| 日本网色| 97在线亚洲| 一起草日韩| 天天综合有色网| 色吊丝 日日骚 清纯唯美| 高潮毛片无遮挡高清免费| 久久99国产综合精品女同| 蜜臀AV一区二区三区| 国产精品视频精品一二| 美女干逼2| 高清成年美女黄网站免费大全 | 日欧操屄| 9 7超碰在线免费观看| 麻豆久久精品亚洲精品88 | 午夜噜噜噜| 欧美激情性久久久久久| 情色五月天久久久| 欧美 色 亚洲| 色情综合| 久啪视频| 99啪啪| 国产又粗又大硬免费色网视频| 老师充足的奶水小说| 伊人午夜福利视频| 日本中文字幕不卡视频| 色婷婷aV一区二区三区麻豆综合| 欧美综合国产精品久久丁香| 国产成人天堂| 精品亚洲国产成人精品| 精品无码一区二区三区| 97天天摸天天爽| 精人妻一区二区三区| 无码九九九九| 97爱爱爱综合| 亚洲91极品| 蜜臀国产AV中文字幕| 超碰人人草| 婷婷AV一区二区三区| 黄色性爱网网| 久久鲁干| www成人啪啪18秘 免费| 国产 日韩 欧美高清| 豆花视频操逼网址| 在线中文字幕| 亚洲精品99999| 国产精品久久久视频| 亚洲国产午夜真人一级片中文字幕精品黄网站 | AV一二区| 日韩免费人妻色情网站| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 一区二区免费电影久久| 男女啪啪啪18禁网站| 熟女精品日韩一区二区三区| 麻豆成人影音在线| 97在线视频观看| 日本成人在线不卡一区二区三区| 操国产高清| 97日韩| 东京热一区二区中文字幕| A 天堂| 日韩欧美性爱电影在线观看| 亚洲无码电影久久久| 日韩黄片影院| 岛国视频一二三区| 成人性爱AV在线免费观看| 大香蕉乱级| 乱伦熟女论坛| 欧美国产欧美在线观看| 超碰美女97| 无码视频一区二区| 亚洲人妻中文在线视频| 青草草免费网站av| 免费伦费视频在线观看| 黄色网址在线免费观看| 国内毛片免费h片在线| www.色婷婷| 人妻嗯啊啊在线播放| 五月色综合| 日本少妇va7777| 无码视频一区二区| 色制服丝袜夫妻av一区| 欧美色图在线视频少妇| 国产超碰97| 91人妻人人澡人人爽人人精品| 欧美性爱超碰97| 人人搞人人插人人操| 欧美亚洲图片| 亚洲天堂一区二区久久| 精品人妻av在线播放| 日本 欧美 国产一区| 久久久精品国产亚洲伊人| 久草新免费| 黑人粗大V S日韩女优视频| 久久成人东京热人妻| 插入粉嫩少妇视频| 欧美肥臀在线| 夜夜无码| 亚洲狠| 97在线免费观看视频| 色色色日本| 亚洲精美粉嫩嫩泬在线观看| 色婷婷狠狠| 99精品伊人| 亚洲日韩欧美一区二区| 少妇无码999| 在线观看无码三级少妇| 五月丁香婷婷综合网| 97色97好| 97久久超碰日韩精品| 天美传媒精品一区二区| 亚洲 国产 精品一区| 国产精品久久久久久久黄无码| 九九色逼| 天天日天天操VV| 无码人妻一区二区三区四区老鸭窝| 久久久久夜夜夜夜| 中文字幕日韩专区精品系列| 久久精品美女一区| 91九九九小逼| 97超碰香蕉| 伊人精品久久网站| 操我无码| 亚洲午夜免费狠狠干| 国产性感骚丝袜在线| 婷婷精品久久av影视| 国产精品视频自拍在线| 涩五月婷婷| 久久久精品一区二区| 亚洲男人综合| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 色原狠狠天天天| 色欲av一区二区三区蜜芽| 亚洲天堂区| 中文字幕av片| 94色色电影网| 亚洲第一成人影院色播| 男人的天堂2018.| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 精品97精品97| 操逼操2| 伊人AAA| 久久精品99| 天天干18禁| 日本亚洲熟女视频| 中文字幕久久精视频久久大全| 国产丁香精品露脸视频| 人妻一区视频| 97超碰久久色| 久久草草亚洲蜜桃臀| 青青草视频久久| 奶水 人妻 哺乳 在线| 熟妇xxxxx性春色| 91丝袜美女| 五月天婷婷社区| 99久久久无码国产精品性男| 欧美影音在线| 日韩卡一卡二卡三在线| 人妻大相焦在线| 久9re热视频这里只有精品| 射 色综合| 亚洲熟妇综合久久久久久| 久久美女国产| 蜜臀亚洲综合一二三四区| 成人性爱av| 日本在线不卡123| 91 丝袜在线播放| 国产精品免费视频人成| 一区中文字幕二区日韩| 亚洲AV无码乱码| 99婷婷| 午夜啊啊| 91 亚洲 欧洲| 啊啊嗯嗯好爽| 久久精品性| 欧美性夜| 亚洲,欧美,春色,另类 | 无码操逼视频一下| 成人一区二区三区四区| 久热在线精品免费观看| 色色99| 激情综合二| 亚洲亚洲亚洲天堂天堂 | 新版天堂中文资源8在线| 九草九九九| 久草视频分类在线| 丰满人妻一区二区三区色-百度| 91在线视频免费中出| www.色吧5.com| 精品久久九| 狠狠色综合网| 91成人18| 国产熟妇一区二区| 国产麻豆福利av在线播放| 日韩人妻网站| 成人三一级一片aaa| 后入日本1234| 俄罗斯一区二区视频在线观看| 狠狠亚洲| 国产粉嫩出水在线播放| 欧美激情黑人| 国产 日韩 欧美 人妻 熟女 中文| 综合欧美亚洲| 天天舔九色婷婷| 国产精品无码在线| 久久女人| 五月黑AⅤ| 国产自制av蜜乳| 亚洲色香| 久久9视频| 亚州黄站| 91色黑人少妇| 国产色呦呦| 97视频在线视频| 黄片无码在线制服| 78久久| 99只有精品| 99爱视频| 国产一级137片内射麻豆| 久久久涩| 亚洲天堂另类小说男人| 八人操人人摸人人看| 欧洲精品二区| 色色99| 日韩黄片视频试看| 伊人国产AV| 色色激情五月天| 翔田千里爆乳巨臀无码| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 91AV天美在线视频| 人妻天天夜夜爽一区二区| 欧美性爱91| 清纯唯美亚洲综合| 蜜臀久久99'精品久久久| 国产11页| 精品伊人久久久大香线蕉小说| 久草午夜| 日本精品国产视频| 日韩婷婷| 操逼片国产| 超碰97综合在线| 欧美天堂超碰97| 老鸭窝亚洲毛片| 波多野结衣先锋影音| 67914在线兔费成人视频| 男人的天堂色偷偷青青草视频婷婷网| 五月丁香婷婷色| 五月丁香拍拍激情综合三级| 欧美色网| 一区二区影视| 午夜福利一区二区三区四区五区色婷婷| 大香蕉AV在线| 日本护士高潮| 秋霞影音一区二区三区| 熟女乱3伦999| 日本欧美不卡| 欧美成人贴图| 中文字幕久久亚州无码| 激情文学网伊人| 麻豆国产免费影片| 91丨国产丨白浆秘 洗澡动漫| 91操熟女视频| 日本孕妇孕交| 国产第11页| 欧美成人亚洲精品| 十八禁啪啦拍视频无遮挡| 久久久亚洲高清不打码| 久久视频,这里只有精品| 女人的天堂大香蕉网| 少妇诱惑视频| 天美传媒国产原创中文字幕亚洲欧美另类 | 天堂涩涩| 天天夜夜久久| 宅男午夜在线视频| 婷婷国产精品九区| 欧美夜夜狠| 乱人伦 国语对白:视频直接看| 成人性爱电影一区二区| 欧美A片中文字幕| 日韩免费中文字幕视频| 91老女人| 激情综合网亚洲| 老熟女91视频| 特色a在线上| 91精品导航| 97超碰欧美精品| 亚洲a色| 国产又粗又长视频| 91痴汉| 欧美日韩天堂| 天欧美在线| 日韩美女高潮喷水视频| 99热超碰| 九九精品美女高溯喷水| 一道本东京热加勒比一区二区三区| 极品五月天噜噜| 日韩美女久久一区二区三区| 天天综合在线4| 九九热免费国产视频婷婷伊人| 69超碰综合| 欧美日韩成人在线| 97久久久久久久精| 欧美一区二区日韩传媒搭讪精品| 毛片17S| 97色论| 日韩av色图| 超碰午夜| 九草九九九| 97日韩欧美亚洲| 日夜伊人网| 天天视频网站黄| 久操com| 人人爱人人操人人性| 大香网伊人久久综合| 天天日日舔舔| 日韩少妇丰满亚洲| 一区二区三区色综合| 色婷婷日韩精品一区二区三区| 久久精品成人| 久久视频,这里只有精品| 超碰天天去日穴| 日本不卡一区二区| 免费视频一二三区| 亚洲资源站| 激情小说日韩无码| 欧美成人性爱视频免费观看| 国产一区二区三区影片| 99久久婷婷国产综合精品草原| 欧亚乱色熟一区二区三四区| 欧美精品 - 91爱爱| 91老熟女老女人国产老太| AV色五月天| 另类图片天天影视| 少妇久久久久久久久| 日韩精品99久久久久久中文字幕| 久草在| 久久华人网| chaopen97久久| 国产精品久久久久久久久久久久| 99无码狠狠久久| 成人羞羞视频国产| 天堂精品一区| 爱爱动态试试看6 0秒| 国产亚洲色婷婷久久99精品91 - 百度| 丰满人妻一区二区三区| 亚洲AV麻豆Aⅴ无码电影一| 精品高清一区二区三区三州| 人人做人人妻人人夜视频| 亚洲经典啪啪| 台湾佬中文娱乐网久久久久久久久久com | 性天堂| 国产玖玖| 日韩欧视频| 欧美精品成人一区二区在线观看| 中文字幕精品丝袜| 精品网站99999| 国产家庭乱伦性爱视频| 亚洲狼狼干综合1| 亚洲一区二区在线观看91| 91|九色|国产熟女| 超碰 欧美| 日本国产成人亚洲精品无码| 92大香蕉| 91伊人| 亚洲欧洲偷拍一区| 久久六六| 暖暖精品二区三区观看| 97久久精品亚洲| 宗合情欲网| 色婷婷六月丁香七月婷婷| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 国产一级内射无挡观看| 久久久av爱| 国产无码高清操逼视频| 超碰97在线 欧美 国产| 东京热视频网| 91骚妇| 又大又长又粗又爽又黄| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 大香蕉99999| 91麻豆天美国产欧美日| 色欧洲| 嗯嗯嗯嗯啊啊啊好紧好大| 大香蕉欧美| 人人爱夜夜爱| 97在线视频观看| 亚洲美女精品| 中文字幕在线免费观看2| 天天做天天爱天天高潮| 欧美高清色| 蜜桃久久一区二区三区| 国产精品96久久久久久| 3571色综合一区二区二区| 欧洲亚洲人妻无码高清久久三区四区| 手机看片91人妻| 91视频成人福利网站在线一区| 这里只有精品视频在线观看麻豆| 欧美青青草视频| 色五月亚洲| 久久这里只| 97欧美精品综合|