亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
高树玛利亚无码流出| 国产亚洲精品A在线观看下载| 超碰成人最新最好看| 丰满熟女人妻一区二区三五十一路| 日本黄色大片一级视频免费麻豆| 啊啊啊好疼| 亚洲欧美精品一区天堂久久 | 91成人无码| 亚洲网自拍| 中日高清无码操逼视频| 日本2020一区二区| 97干天天| 十八禁网站在线| 97在线精品观看视频| 美女黄色91| 超碰精品| 射 色综合| 亚欧无码在线| 亚洲国产丝袜熟女av| 久久精品老司| 97人人爱人人做人人乐| 蜜臀av在线播放一区二区三区| 国产精品美女在线一区| 黄色视频高清无码网站| 99热这里都是精品| 人妻美腿丝袜日韩| 欧美 亚洲 制服 精品| 少妇人妻太紧太深av| 天天干夜夜鈤| 啊啊啊轻点在线观看| 精久久久91| 日韩性爱再线视频| 国产成年女人免费视频播放a| 亚洲综合20p| 神马久久久久久久久久久久| 99无码| 国产拍偷精品网站| 日韩三级伦理中文字幕| 青娱乐黄色录像| 久久有码视频| 亚洲AV色图一区| 亚洲国产综合久久天堂| 97色碰| 中日韩欧美精品无码AⅤ一区二区| 亚洲天堂一区二区久久| AV一起草在线| 伊人女女资源在线观看| 成人性爱美曰韩| 亚欧无码在线| 免费伦费视频在线观看| 思思热影视| 欧美精品一区二区少妇免费A片 | 97资源视频| 私人尤物在线精品不卡| 亚洲精品无码少妇久久| 99久久网站| 亚洲日本成人动漫| 天天摸夜夜摸| 99热一区二区三区四区| 男人天堂久久精品不卡| 熟女熟妇一区二区三四区| 玖玖爱视频网站| 激情文学小说一区二区 | 无码日韩网站| 67914亚洲精品| 囯产精品强| 亚洲无限观看| 后入式视频国产自| 97精品在线视频| 日本不卡二区| 亚洲一区二区中文字幕| 强上我不卡卡| 午夜精品久久久久久久久久久久久| 96国产精品| 久久夜夜| 精品一区二区人妖| 啊啊啊啊啊啊啊国| 欧美暴力猛交| 99精品无码| 亚洲资源站| 97久久久久| 9久精品| 久久九九视频九九视频| 青青操97| 色天天野狼综合社区| 中文字幕色AV| 91黑人无码激情在线| 欧美色棕合| 91色黑人少妇| 91天堂丝袜美腿| 一二三区操逼国产91| 26uuu性物| 乱老女人一区二区视频| 亚洲日韩黑丝| 97干97色| 99热综合| 啊啊嗯嗯好爽| 国产黄色小视频网站| 亚洲国产成人精品无码专区| 欧美天天谢综合网| 情色大香蕉| 天天视频网站黄| 日韩中文字幕视频在线观看| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 五月天激情小说网| 天美一二三在线观看Av| 91色夜| 国产精品 久久久精品一牛| 欧美综合区| 99蜜桃臀亚洲成人在线观看| 麻豆三极片| 色99视频| 亚洲十八禁止| 免费无码国产精品v片在线观看| 中文字幕jul-617人妻熟女| 一区 欧美 日韩 麻豆| 91人妻人人澡人人爽人人精品| 亚洲免费成人在线高清无码视频 | 亚洲,欧美,春色,另类| 欧美色图片91| A V视频日本| 免费看污网站| 成人毛片免费| 99超碰色| AV乱伦国产| 色色婷| 婷婷九月丁香| 丁香五月天激情| 免费男人的天堂| 丝袜熟女一区二区三区| 疯操AV| 在线观看色视频| 日韩99神马视频播放| 后入日本1234| 久久亚洲精品成人av| 丝袜av一区二区三区| 性猛交| 亚洲情色91| 国产精品97视频| 白嫩嫩一区| 日韩欧美女求操每天更新| 曰韩av中文字幕专区| 天天综合,91入口| 激情视屏国产乱伦强奸| 日韩八十路老熟女| 久久乐| 97在线视频免费| ss久久| 亚洲中文字幕熟女| 97色色色综合网站| 久操网视频| 欧美精品不卡一二三四在线91| 久久av成人无码免费| 婷婷五月天无码| 欧美国产欧美在线观看| 九九九只有精品| 综合色图亚洲欧美| 国内毛片热久久思思热| 国产综合久| 亚洲第一页色| 黄色电影在线播放综合网站| 久久久精选| 亚洲五月丁香花狠狠干一区二区三区| 自拍鲍鱼一区在线高清观看免费| 欧美性高潮| 中文字幕视频在线观看一区二区| 天天日天天搞天天干| 夜草欧美| 欧美一级三级| 国产日产精品久久快鸭的功能介绍| 91九九九吃| 亚洲另类在线观看| 成人精品久久久午夜福利| 超碰1997| 99久久久er直播网址| 久区视频| 亚洲第91页| 色五月婷婷中文字幕| 免费精品无码一级毛片牛牛影视| 麻豆天美在线喷水AV| 亚洲精品亚洲人成在线麻豆| www.av家庭乱伦| 久久久久久久久久久久黄色 | 青青青青青手机视频| 久久久久久久久九九久孕交| 女同亚洲欧美一二三区久久电影| 日韩乱中文| 4虎在线观看| 天综合网欧美| 精产国品一区二三产品| 欧美极品女人的天堂| 中文字幕日韩人妻视频一区二区三区 | 99热99re6国产在线播放| 人妻夜夜爽天天爽麻豆三区网站| aaaa少妇高潮大片| 日韩黄片视频试看| A一区片| 亚洲色图综合| 亚州综合网| 女人天堂网| 亚洲精品骚逼| 国产av青草| 欧美淫穴| 亚洲有码 欧美精品| 无遮挡猛进视频免费无限观看| 国产精品无码成人精品| 成年无码动漫av片无尽在线 | 97资源站国产精品| 色综合20p| 亚州色图欧美| 欧美狠狠弄| 97人妻色| 亚洲棕合电彰| 久久999久| 欧美|91色综合| 国产高潮AA片免费看| 天天操夜夜嗨| 麻豆三极片| 国产精品国产精品国产| 97超碰色色| 欧美日韩中文字幕人妻| 色综合天天爱去电影网| 九九热三级片| 亚州欧美色图| 97在线观看播放视频| 色色色日本| 久久av无码| 成人蜜乳小视频网站| 日本精品一级二级三级| 日本孕妇一区二区视频操逼免费看| 久久久中文| 国产精品不卡av免费在线观看| 女同性恋中文字幕| 啊啊啊免费| 国产成人在线观看网址| 国产亚洲中文不卡二区| 国产色精品午夜大片| 三级三级三级a级全黄三| 日韩色欲久久一二三四区| 国产无码精品高清| 日韩一级欧美一级在线观看| 久久久无码国精品无码三区三区| 亚州伊人色综台| 熟女一区二区| 色偷偷人人玩人人舔人人操人人摸人人爽| 久操av在线| 色亚洲欧美| 99av| 成人激情无码在线视频| 99色视频| 曰本熟女视频| 欧美东京热青青草| 国产精品爆乳懂色蜜乳| 日韩性爱再线视频| 麻豆视频test| com 首页 18岁 禁区 女优 免费 精选 同城| 日韩无码服务区| 91色插| 98人妻精品一区二区色欲| 色色色色日本| 加勒比在线视频| 高潮嗯啊性感美女久久久| 中文字幕精品三级久久久| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 亚州一区二区成人片免费| 午夜高清成人在线视频| 天天干2019| 先锋音影AV| 天天日天天干天天摸天天操| 襙一襙| 国产一区二区三区影片| 二对二中文字幕。| 美女网站91| 91精品国产91久久福利| 操逼日韩无码 | 蜜桃久久综合视频| 亚州欧美总和| 青娱乐二区免费| 97人人模人人爽人人| 狠狠干综合| 亚洲综合贴图91 | 秋霞影音一区二区三区| 综合网久久| 97精品一区| 丁香五月色| 成人网欧美风情| 欧美色97| 欧美黄片视频在线观看免费 | 超碰偷拍| 亚洲男人久久综合天堂| 亚洲av夫妻操穴网| 淫荡网址| 精品性爱一二三区| 亚洲激情天堂网| 亚洲图片另类| 亚洲蜜桃V妇女| 国产精品国产自产拍高清AV| 亚州男人天堂| 欧美在线视频99| 男女香蕉一区二区| 日韩人妻 中文字幕| 婷婷美人网| 亚洲国产另类在线中文| 在线天堂999| 久久一二三四| www.色婷婷色综合| 干少妇视频| 日本色色色| 夜夜春夜夜操| 日韩美一区| 美女诱惑久久| 日韩美女久久一区二区三区| 天天操熟妇| 国语av最新自产拍在线观看| 怡红院成人视频| 色婷五月天| 国产精品乱码久久| 精品人妻一区二区免费蜜桃| 翔田千里Av在线| 综合色图区| 色综合99| 美女91在线观看| 日韩字幕一区| 91撸色网 玖玖网 欧美| 久久午夜色播影院免费高清| ,国产乱人伦精品一区二区三区| 大香蕉伊人75| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 国产熟女一区二区丰满| 天天懆天天日| 九九九九一级| 激情五月婷| 韩国三级色呦呦| 日韩av影片在线观看| 久久久久久久久久久精| 麻豆黄四叶草网站| 日本性爱少妇| 久久一区二区三区四区五区| 蜜臀AV成人精品蜜臀| 韩国一级婬片A片无码天美| 97视频620| 性爱乱伦一区| 91福利网在线观看| 一区二区三区男人的天堂| 97人人草| 国内毛片国产欧美拍| 好爽要喷了| 午夜免费视频1000| 黄色片一区二区三区四区五区| 情色五月天就去干| 亚洲91网。| 蜜乳成人AV| 日日97| 91暧暧| 综合欧美日韩在线观看| 精品午夜福利| 曰本精品久久久| 国产精品久久伊人| 国产精品久久妻无码网站 | 干干干天天| 久9爱精品| 色色99| 最新欧美色网| 91天堂色男人的天堂| 久草在线| 欧美—性—交—色| 欧美久久久| 久久久久久大| 欧美日韩超碰在线| 成人乱码一区二区三少妇| 中文字幕三四区| 超碰在线成人电影| 日本天天干天天搞一区| 狠狠综合| 在线综合色| 日韩av在线精品观看| 超碰是碰在线观看| 91久久久老司机| 综合激情97| 少妇超碰在线| 亚洲午夜免费狠狠干| 日本女优在线视频福利| 啊啊啊无码| 东京热,男人的天堂| 亚洲国产一区二区三区在线 | 久久久久ab| www.97在线| www.婷婷| 久热99| 国产无马视频| 亚乱色| 小草精彩毛片| 天天摸,夜夜摸| 婷色五月| 天天爽夜夜操| 国产刺激视频| 嗯啊啊啊轻点视频| 一二三啪啪专区| 北条麻妃99精品青青久久| 小泽玛利亚一二三| 草b在线| 97超碰热线| 久久久久ab| 日韩78m视频| 福利一级版子| 91久久国外网| 麻豆天美在线| 男人天堂网站| 三级AV入口| 欧美亚洲另类在线蜜桃| 久久久精品成人国产| 日韩人妻无码专区| 欧美亚洲国内自拍| 色大师网站www永久网站视频| 精久久久91| 99蜜桃臀久久久欧美精品网站| 鸥美插入视频| 尤物视频新赏网鲜网色诱网| 国产又粗又长视频| 亚洲图片小说欧洲| 91被操| 欧美日韩操逼动图| 日韩久久三区| 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 香蕉精品二区二区| 欧美性五月| 亚洲熟女综合一区二区| 凹凸视频在线一区二区| 日韩精品中文字幕一| 婷婷亚洲综合| 磁力99AV| 99精品丰满人妻无码| 天天欧美| 国产一区二区三区导航| 视频在线观看一二三区| 97精品视频免费| 九九亚洲色在线观看| 婷婷爽人人婷婷爽视频| 欧美日日操| 亚一综合久久久久久久久久| 色激情五月天| 精品九九淫乱男| 欧美春色| 乱伦图一区| 国产精品老熟女一区二区| 99www.bibizy香蕉资源国产一区二区三区高清 | 日本操逼无码| 欧美日韩激情无码专区| 欧美日韩国产传媒在线精品| 久欲AV| 91久久| 一区二区娱乐网站| 精品无码一二三四区| 日韩欧美性爱电影在线观看| 中文字幕第页| 精品免费一区| 色欧美色交综合| 9丨亚洲一区二区在线| 黄色大片一区二区密桃丝袜| 99在线观看视频在线高清| 国产午夜福利专区综合| 长长久久曰曰夜夜成人网| 亚洲老司机123专区| 超碰在线1234区| 欧美精品23| 91网站18在线观看| 四虎AV在线播放| 日韩乱伦影音先锋| 77国产精品| 91av一区二区在线观看| 97亚洲一区| 啊啊啊爽爽| 丝袜大香蕉| 91操人| 377p欧洲日本亚洲大胆| 99re69| 乱性AV| 操人妻丝袜高跟| 久久久久夜夜夜夜| 婷婷久草一区二区三区| 78m成人视线| 夜夜草网站| 韩国毛片一区二区三区| 最近2019中文字幕国语免费版| 神马久久久久久久久久久久| 国产亚洲深夜激情| 久草资源欧美在线视频| 亚洲影院无码在线| 欧美综合色站| 韩三级a视频在线观看| 91色图片| 天堂无码精品国产久| 大屁股国产在线视频| 操逼逼中文字幕| 天堂网 主播 亚洲| 大香网站| 欧美性综合| 国产高清精品福利| 美女毛片999| 亚洲精品一二区| 69精品在线| 美女高潮国产高清| 中文字幕亚洲欧美在线不卡| 黑人免费福利视频| 99精品伊人| 天天干天天狼在线视频| 亚洲色棕合| 五月花婷婷| 国产精品999aaa| 极品久久久久久久久久久久久久| 最近2019中文字幕国语免费版| 欧美综合亚洲综合| 偷拍色图| 一牛影视久久久一区二区三区| 夜夜影视四色| 日本国产欧美一区三区二区| 久久风骚城市人| 中文字幕乱碼在线| 婷婷五月综合激情| 思思性爱| 操逼视频色| 99re这里只有精品9| 欧美一区二区三区黄色影视| 久久国产精品一级二级三级| 国产精品视频精品一二| 国产日韩区| 热99这里有精品综合久久 | 性爱av网站| 成人无码在线超碰网| 超碰色图| 手机在线免费看的av| 国产精品色约约| 东北女人| 区一二区日韩亚洲乱码av电影| 中文字幕在线免费观看视频| 久久精品中文字幕无码l| 日韩肏逼视频| 麻豆久久一区二区三区| 国产白丝网站| 一二三四区操操Av| 偷拍片久久| 精品96久久| 粘花网06av视频| 国产久久一区二区午夜| 99啪啪| 婷婷操逼| 五月天婷婷基地| 不卡啪啪视频| 国产日韩欧美三级片| 国产强奸超碰AV| 久久精品国产亚洲AV片多多| 国产自产一区视频在线| 青青久久手机线视频| 国产精品区在线12p| 先锋影音av先锋一区| 久96热在线观看视频| 黑人娇小av在线播放| 91色狼| 日本影视久久免费| 日韩免费中文字幕视频| 国产精品第一区第一页| 午夜.DJ高清在线观看免费7 | 人人摸.人人色| 欧美高清第一页| 久久男人的天堂| 蜜臀无码视频在线观看| 久久草草亚洲蜜桃臀| 嗯嗯啊啊好爽| 日本黄色精品专区网站| 最新国内自拍av免费| 国产精品日韩在线一区| 久久精品国产亚洲AV高级北京| 亚洲国产一区二区入口| 日本一区二区做爱的视频| 亚洲无码久久久久久久| 丁香六月婷婷综合| 日本久久久久久久久| 99re3这里只有精品| 91成人国产综合久久精品蜜月| 亚洲色图国产另类| 色网亚洲人| 另类图片综合| 中日韩久久久| 成人夜夜爽| 啊啊啊97视频| 欧美日韩妖精91com| 久久久久久97| 国产精品视频麻豆入口| 强奸xx国产| 九久久九精品视频| 精人妻无码一区二区三区伊人直播 | 色九久| 高清国产性猛交xxxx乱大交| 日韩成人大片在线观看| 亚洲成人一二三区| 天天日骚逼熟女| 人妻三级在线中文字幕| 激情视屏国产乱伦强奸| 久无码| 蜜桃狠狠色伊人亚洲综合| 欧美熟妇精品黑人巨大91| 懂色中文一区二区三区| 五月婷婷基地| 日日做夜狠狠爱欧美黑人| 人人妻人人澡人人爽久久av| 久久一区二区高清免费| 色综合98| 亚洲天堂久久| 人妻中文字幕精品无码| 天美国产三级传媒| 亚洲在线A| 天堂俺去俺来也www久久婷婷| 色婷婷五月综合| 劲爆欧美人妖三区91| 黑人娇小av在线播放| 国内三级自拍小视频在线观看| 亚洲成人AB| 永久免费av无码网站国产app| 五月天婷婷久久| 欧美日韩天堂| 成人a级高清视频在线观看| 99热| 91A欧美电影网站| 日操粉逼逼| 日欧毛片久久| 人人做,人人操,人人摸| 久久精品欧美一区蜜桃| 亚洲成成熟女人综合一区二区| 成人午夜小视频手机在线看| 日韩78m视频| 无码人妻精品一区二区三区99不卡| 日韩久久三区| 欧洲视频在线| 亚洲婷婷五月天| 免费视频观看60秒| 国产精品无码AV网站| 91九九九吃| 亚洲成人日韩小说| 亚洲精品不卡一二三区| 成人性爱视频在线看| 躁躁日曰躁2020| 国产无码高清操逼视频| 亚洲综合影片| ji熟女.com| 嫩草伊人久久精品| 亚洲图片日本AⅤ欧美在线| 超碰在线974| 国产无码三级视频在线观看| 爱欲AV| 日本性爱欧美性爱| 97一区二区三区视频| 琪琪精品免费一区二区三区 | 欧美性第一页| 欧美美女在线高潮999| av网站国产主播在线| 一区麻豆 高清中文字幕| 插入逼91| 亚洲大胆人体av| 国产亚洲色婷婷久久99精品91葵花宝典| 久久一本大香蕉 | 老鸭窝黄色视频网站| 午夜精品五区| 91美女片在线| 九九九网页| 性爱视频啪啪啪啪| 91亚洲欧美综合高清在线| 欧美性爱在线无码| 久久久久久久97| 亚欧美天堂在线| 韩国黄片aaaa| 色欲久久99国产精品久久久久久| 江都AV在线| 不卡一区二区日本视频| 久草精品在线| 亚洲丝袜色图| av资源在线观看少妇| 99re超碰| 大香蕉综合在线| 婷婷五月天AV| 成人97人人超碰人人| 欧美日韩精品青青| 91老熟女逼| 国产福利小视频高清在线观看| 超碰精品97| 日日夜夜国产综合| 97人人干人人操| 欧美精品宗合| 伊人在线大香蕉视频久久| 碰碰在线视频| 国产极品美女高潮无套在线观看| 欧美日韩色| 久久啊啊啊视频| 亚洲日韩一区电影| 日本国产高清色www视频在线| 欧美日韩久久精品爱爱| 欧美伦乱爱| 婷婷久草一区二区三区| 美中日韩无码| 天天视频网站黄| 啊啊啊好大好深| 久久熟女久| 精品一区96| 99综合网| 国产欧美日韩在线不卡第一页| 精品一区二区三区国产| 国产又粗又长视频| 亚洲电影91| 天操天操夜操夜月操月年年操操| 东北黄色电影| 91操人| 手机在线看片免费人成视频| 久久久精品中文字幕爱豆| 韩国一级做a久久久久| 风间由美日韩欧美久久| 亚洲色图欧美色图制服诱惑| 欧色综合| 99r九九| 9久超碰| 久久99网站| 日亚韩精品视频二区三| 久操凹凸视频| 欧美aa一级片| 欧洲亚洲国产综合在线| 亚洲码在线中文在线观看| 亚洲成人贴图| 国产精品乱码久久| 精品人妻一区二区三区免费视频| 精品制服美女中文一区二区三区| 欧美熟女丝袜| 性交一区二区在线播放| 黄呦呦在线| 亚洲淫色网中文| 天天日天天舔东京热| 一区=区三区视频| 澳门成人网站久国产日韩| 色噜噜综合在线| 久悠悠av| 蜜臀亚洲中文| 中文幕97| 校园春色宗合网| av 模特一区了| 日韩成人人妻网站| 舔人妻中文免费视频| 91天天综合在线观看| 超碰 欧美| 日本幼女18+| 亚洲天天更新| 日韩免费a级毛片无码a∨| 亚洲综合欧美| 欧洲综合无码| 免费A V在线播放| 日韩中文字幕二区| 九九色色| 成人女人国产| 熟妇国产免费一区| 亚洲精品蜜桃久久久| 精品天堂| 夜夜操美女| 国产精品婬乱一级毛片彝族| 高清国产av无码| 日本人体九九九九九九| 丝袜综合色图| 四虎影视永久在线观看精品免费网站| 欧美性少妇| 日韩电影在线观看网址| 欧美性爱第一区| 柠檬AV导航| 嗯嗯嗯不要不要免费视频| 四季AV一区二区凹凸精品小说| 久久妇| 97在线免费看视频| 伊人一区二区在线播放| 91精品无码人妻系列| 亚洲麻豆精品二区三区| 欧美日韩婷婷中文| 天天日天天干天天摸天天操| 国产精品午夜AV完会免费 | 国产欧美美女免费观看视频| 一牛一区二区三区久久| 蜜区区视频79 | 手机在线看片免费人成视频| 韩国久久97| 在线情色电影 91大 | 久久线上视频免费看| 强奸乱伦 亚洲一区| 国产又操| 动漫区日韩区欧美区| 极品色综合| 一级黄色性爱A级片| 精品久久久久,69国产成人精| 18禁久极品美女久久哦哟呀!| 啊啊啊啊啊啊在线| 色嗨嗨在线| 大香蕉天天看妹子| 97久久国产| 欧美精品久久久久久久久88| 99天天超碰| 中文字幕在线免费观看| 日韩av一级黄片| 夜夜騷av、一區二區| 啊啊啊啊好多水| 国产1769在线| 人人噜夜夜操| 日韩偷拍一区二区三区| 人人妻人人色| 大香蕉中文在线| 高凊专区人人操| 狼天天狼天天大香蕉| 日本天天干天天日一区| 国产亚洲欧美每日在线| 日韩偷拍色图| 日日操丁香五月天| 蜜桃精品一区二区三区ww| 欧美热图99| 8050无码八戒| 国产精品午夜福利视频| 久久久久久久九九九九九九| 久无码| 亚洲熟女人妻中文字幕一区二区| www欧美性爱| 97资源站久久| 欧亚性爱啪啪| 美女让帅哥通她小鸡鸡| 天天干人人干天天日97| 国产精品亚洲四五区在线观看| 婷婷综合伊人一区| 韩国久久97| 色综合91好| 99这里有精品| 快灬快灬 一下爽蜜桃在线观看| 日本日皮视频逼| 激情文学亚洲| 成片免费观看视频大全| 人妻熟女一区二区三区视频| 欧亚免费视频| 揉揉揉夜夜| 天堂岛av| 亚洲图片欧美色图| 国产欧美一区二区| 久久av无码| 欧美日韩精品国产91| 第四色奇米影视777| 日本大香蕉| 中文字幕aⅴ在线视频| 超碰在线第一页| 中文字幕亚洲在线一区| 欧美日韩狠狠爱| 夜夜中出国产| 日韩偷拍一区二区三区| 好舒服视频| 唐山老熟妇露脸啪啪叫| 天天操熟妇| av天堂影视中文在字幕在线中文| 亚洲日韩电影| 爱啪精品一区| 欧美精品久久久久久久久88| 国产精品一区在线播放| 中文高清一区二区的| 亚洲男人久久综合天堂| 97超碰中文| 操碰97| 日韩激情无码影院| 啊啊啊啊好疼视频| 天天干少妇| 在线有码中文字幕| 久久精品一区一起草| 久久天堂婷婷网| 亚欧毛片基地国产毛片基地| 91色综合色| 蜜桃色色网站视频三区| 无码高清操逼网址| 天天干夜夜操一区二区| 欧洲综合视频| 日本成人电影资源网| 国产AV中文| 国产美女激情| 五月婷色| 搞中出久久| 青草地一本线一区二区三区| 青青草精玖玖69精品| 99日韩| 午夜视频久久久久一区| 欧美日韩制服| 欧美一区二区成人一卡| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 日韩综合97P| 中亚av| 欧美日韩香蕉| 欧美Ⅴ性爱| 日本幼女18+| 欧美韩国你懂得在线| 亚洲激情综合| 亚洲欧美日韩精品久久久一区二区| 性猛交| 亚州五月| 国产欧美黑人丰满在线| 四虎AV无码| 久久亚洲婷婷| 亚洲成a人片在线观看中文!!!| 欧美日韩1234| 日韩天天综合| 久9爱经典视频| 今日头条成人一区二区三区四虎精品| 狠狠狠狠狠狠| 国产亚州精品美女久久久免费| 岛国黄片网站| 一区二区三| 色爱天堂| 亚春色色| 中出20p| 囯产精品强| 五月天久久婷婷亚洲| 91人妻超碰| 深夜操逼网| 国产日比| 色五月激情网| 成人性爱电影一区二区| 操逼操逼视频操逼| 999亚洲国产视频| 操操逼视频| 免费国产电影一区二区| 99无码狠狠久久| 天天综合-91入口| 国产999精品久久久| 亚洲影视高清第一页| 丝袜狂射91| 2019午夜福利视频| 爱爱久久| 熟妇国产免费一区| 二三四区精品| 天堂涩涩| 黑人综合色| 久久久久久99999国产精品| 中文一区二区| 亚洲加勒比色图| 久久精品女同亚洲女同13| 97爱啪| 91久热| 夜夜高潮夜夜爽夜夜爱爱一区| 五十路成人在线视频二区三区| 欧美日日人人天天| 日本97久久| 骚货操死你| 欧美碰碰综合色| 日本不卡一区| 欧美一区二区三区互相| 岛国色情视频在线观看| 日本视频在线观看污污污| 日韩欧美俄罗斯A片| 日本韩欧美在线播放a| 五月丁香啪啪啪| 丝袜熟女2P| 爱爱动态试试看6 0秒| 欧美熟妇亚洲版| 国产精品电| 欧美92| 91av熟女人妻| 夜夜天天噜狠狠爱2021| 熟女六十路| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 亚洲强奸乱伦影视网| 熟女乱伦二区| 国产精品乱人伊人网| 亚洲免费97免费| 青青青草伊人精品| 欧美日韩精品久久久久久久久东北老熟妇| 啊啊啊啊好爽好舒服一区二区易域| 久久神马| 午夜一区二区三区国产| 亚洲啪啪性视频| 69精品在线| 精品中文日韩字幕视频| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 日韩有码免费视频| 日本99一区二区| 亚洲久久天堂| 国产丝袜欧美在线视频| 黑人黄片在线免费观看| 欧美三级一级| 韩国毛片一区二区三区| 色姑娘综合网| 久久精品国产亚洲AV片多多 | 超碰97亚洲区| 黑人猛交| 曰韩成人免费视频| 日欧美色| 人妖欧美一区二区| 老司机深夜18禁污污网站| 久久人人爽人人爽人人片Ⅴ| 亚洲欧美爆| 九久久九九久视频| 加勒比在线观看一区二区| 国产精品色色| 天堂网 主播 亚洲| 国产精品福利资源在线尤物| 精品性爱一区二区| 99re只有精品| 亚洲在线a| 激情久久久| 97超级欧美| 亚洲欧美首页| 亚洲aV无码成人在线观看| 亚洲精品国产精品乱码不卡| 亚州性色| 日韩精品一区的| 91欧美丨精品丨入口| av三级电影在线播放| 婷婷丁香成人| 91精品免费| 欧美成人A√在线一区二区| 色婷婷五月综合| 日夜尻逼网| 日本操色导航| 97色97好| 人人看黄色视频| 久久发布国产伦子伦精品| 五月天久久人妻| 日韩乱伦视频| 久污| 岛国黄色短视频| 91欧美丨精品丨入口| 无遮挡一级毛片视频免费的| 超碰久久性爱| 欧美综合天天| 熟女人妻av在线资源,黄色的资源| 99日视频在线免费| 亚洲av无线观看| 毛片麻豆91糖心精品毛情片| 久综合国内精品自在自线| 国产农村妇女精品1区二区| 91精片| 日韩情色视频| 天堂亚洲精品| 久久鲁干| 国产超碰97| 丝袜熟女一区二区三区| 欧美黑人日韩少妇色情| 殴美大黄片| 在线观看啊啊啊啊啊| 国产精品久久久三级无码| 国产自偷| 蜜臀操逼黄色视频操的好爽| 很狠操| 爱我干综合| 国产综合久久久麻桃个| 中亚av| 日本一区二区不卡| 欧美成人亚洲精品| 91露脸熟女专区| 久久久久78| 国产黄色av大片网站 | 五月婷婷综合网| 亚洲色图欧美色图另类图片| 啊a一区在线| 精品久久久久久AV无码| 亚洲人妻熟妇三十三区| 日本不卡高清视频| 操死我了啊啊啊| 亚洲丁香花色| 老司机福利青青草| 狠狠图片青青草| 懂色AV蜜臀无码精品APP| 五月天久久人妻| 99热99re超碰精品| 国产性爱在线视频一区二区| 人妻 欧美亚洲| 东京日日夜夜| 日本人妻中文字幕精品| 加勒比久久av| 婷婷日韩一区二区三区中文字幕在线| 无码高清操逼| 综合性视频99| 亚 欧 美 综合| 亚洲图片日本AⅤ欧美在线| 台湾佬中文娱乐网久久久久久久久久com| 在线视频日韩欧美国产| 亚洲色图欧美一区二区不卡| 日韩精品操少妇| 婷婷五月天成人网| 97精品一区二区视频| 久久久成人免费av电影| 亚洲日本韩国极品一区二区| 在线免费观看日韩一区| 91精品丝袜久久久久久| 国产成自自拍在线观看| 伊人99热| 亚洲欧洲综合成人av一区| 加勒比色99999| 樱花草社区www中国| AA丁香综合激情| 日韩精品国产一区二区| 香蕉精品二区二区| 亚洲一本色码中文字幕| 色色色网站| 日韩久久.一级黄色片| 九九九精品| 久久精品一区一起草| 97人人爱人人做人人乐| 五月丁香婷婷色| 美女午夜福利免费视频| 老熟女91| 精品国产乱码久久久久久免费| 一区| 久操99| 六月天婷婷| 欧美午夜视频精品久久| 思思视频免费看网站| 友优传媒精品在线一区二区| 青青青草伊人精品| 曰本精品久久久| 天天色综合图片| 欧美人人AAA| 无码高清国产AV| 日本国产亚洲一区在线观看| 4虎在线观看| 四虎884| 99re在线视频| 熟妇高潮一区二| 人人摸人人干| 麻豆天美国美国产| www.zbzhongsen.com| 黄片无码在线制服| 蜜乳AV一区| 久久久久久久九九九九九九| 国产精品久久久啊| 女生久久网| 96麻豆精品一区二区三区| 91在线国产后入风骚翘臀美女素人| 国产精品网站www| 欧美亚男人的天堂| 骚货人妻偷情自拍在线视频| www.婷婷| 欧美成人精品A片免费一区99| 成人福利视频网| 国产精品自拍欧美在线| 午夜无码精品免费看性色| 国产精品国产自产高清AV| 日本1区2区不卡视频| 欧美福利视频啊啊啊啊| 18禁看网站一区| 日韩电影在线观看网址| 农村女一级毛卡片| 成人羞羞视频国产| 26uuu最新| 亚欧高清| 男女猛烈无遮掩视频免费软件| 操b在线观看| 国产在线观看91精品一区| 一个色导综合| 国产精品呦一区二区三区| 亚洲最大成人a毛毛片| 青青久久手机线视频| 欧美性爱一区| 动漫区日韩区欧美区| 欧美天堂第二区| 国产乱青青草久久| 精品人妻一区二区蜜桃视频| 后入精品| 大色综合| 中文字幕人成乱码熟女香港|