精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

這個主流大法竟是大坑!Redis 大 Key 問題怎么破?

數(shù)據(jù)庫 Redis
要解析 RDB 文件 ,首先得理解其二進制格式 ——Redis 的 RDB 文件是按特定協(xié)議存儲的二進制數(shù)據(jù) ,包含數(shù)據(jù)庫選擇、鍵值對數(shù)據(jù)、過期時間等信息。

在 Redis 運維中 ,大 Key 始終是威脅集群穩(wěn)定性的 “ 隱形炸彈”。我梳理 Redis 大 Key 解析系統(tǒng)時 ,在比較了scan查找大key方案 ,以及使用官方的redis-cli --bigkeys方案后 ,選擇 “基于 RDB的離線解析” 方案 —— 它完全不影響在線集群 ,還能獲取全量鍵的精確內(nèi)存數(shù)據(jù) ,特別適合非實時性的大 Key 排查場景(實時的可以用慢查詢系統(tǒng) ,這個以前曾在dbaplus分享過)。最近我用 Golang 實現(xiàn)了這套方案 ,今天就從場景需求、技術(shù)實現(xiàn)到實際落地 ,和大家詳細分享整個過程。

一、為什么要造這個 “輪子”?

市面上其實有現(xiàn)成的 RDB 解析工具( 比如 Python 寫的 redis-rdb-tools ),但在實際運維中,我遇到了兩個關(guān)鍵問題:

  • 性能瓶頸:面對 GB 級甚至更大的 RDB 文件 ,Python 工具解析耗時過長( 曾試過解析20GB 的 RDB ,跑了近 1 小時),而運維場景中常需要批量處理多集群的 RDB 文件 ,效率亟待提升;
  • 定制化不足:現(xiàn)有工具輸出的結(jié)果多是通用格式 ,無法直接對接我們內(nèi)部的運維平臺( 比如按業(yè)務(wù)線分類大 Key、 自動同步結(jié)果到 Grafana 面板),需要額外寫腳本二次處理。

考慮到 Golang 的并發(fā)優(yōu)勢和高性能特性 ,以及能直接編譯成二進制文件(方便在不同服務(wù)器部署),我決定用 Golang 從零實現(xiàn)—套 RDB 離線解析工具 ,核心目標是:快解析、可定制、易集成。

二、Golang 實現(xiàn) RDB 解析的核心思路

要解析 RDB 文件 ,首先得理解其二進制格式 ——Redis 的 RDB 文件是按特定協(xié)議存儲的二進制數(shù)據(jù) ,包含數(shù)據(jù)庫選擇、鍵值對數(shù)據(jù)、過期時間等信息。整個實現(xiàn)過程可以拆成 3 個核心步驟:

1. 準備工作:選擇合適的 RDB 解析庫

自己手寫 RDB 格式解析會耗費大量時間(要處理各種數(shù)據(jù)類型、壓縮格式),Golang 生態(tài)中有成熟的 RDB 解析庫可以復(fù)用, 選擇了  https://github.com/HDT3213/rdb (輕量、文檔清晰,支持 Redis 6.0 + 的 RDB 格式),本來打算導(dǎo)入這個庫的解析能力擴展 ,但研究發(fā)現(xiàn)這個庫不支持外部導(dǎo)出為內(nèi)部屬性 ,不能完全滿足需求 ,考慮再三 ,最后決定通過對項目進行部分魔改 ,通過replace依賴模塊指向魔改版本來處理。

2. 核心流程:從 RDB 文件到大 Key 數(shù)據(jù)

整個解析大key的流程很清晰:備份 RDB 文件 → 讀取 RDB 文件 → 解析鍵值對與內(nèi)存信息 →篩選大 Key → 輸出結(jié)果 ,下面—步步拆解關(guān)鍵代碼。

步驟 1 :讀取 RDB 文件并初始化解析器

首先要打開 RDB 文件 ,然后用 NewDecoder 初始化解析器, 同時定義—個 “結(jié)果處理器”(用來接收解析出的每—個鍵值對數(shù)據(jù))。

// 通過一個channel返回解析好的數(shù)據(jù),因為有多個rdb要解析,這里傳入一個channel統(tǒng)一接收,方便管理
func MyFindBiggestKeys(rdbFilename string, output chan<- RedisData,  options ...interface{}) error {
        var err error
        if rdbFilename == "" {
           return errors.New("src file path is required") 
        }


        rdbFile, err := os.Open(rdbFilename)
        if err != nil {
            return fmt.Errorf("open rdb %s failed, %v", rdbFilename, err) 
            }
    defer func() {
        _ = rdbFile.Close()
    }()
    var dec decoder = core.NewDecoder(rdbFile)
    if dec, err = wrapDecoder(dec, options...); err != nil {
        return err
    }
    err = dec.Parse(func(object model.RedisObject) bool {
        data := RedisData{
            Data: object,
            Err:  nil,
        }
        select {
        case output <- data:
            return true
        case <-time.After(5 * time.Second):
            err = errors.New("send to output channel timeout")
            return false
        }
    })


    if err != nil {
        return fmt.Errorf("parse rdb failed: %w", err) 
    }


    return nil
}

步驟 2:解析鍵值對 ,判斷是否為大 Key

這是最核心的部分 ,提取對應(yīng)的內(nèi)存大小 ,和task預(yù)設(shè)閾值對比 ,判斷是否為大 Key。

func (b *biz) ExecuteSingleTask(ctx context.Context, task *models.Task) error {
    // 1. 提取任務(wù)參數(shù)
    pwd := task.Dir
    jobID := task.JobID
    // 任務(wù)指定的大key閾值,由每個task任務(wù)傳遞
    size := task.Size


    // 2. 路徑處理
    path, err := mypath.GetLastDirAndFiles(pwd)
    if err != nil {
        return err
    }
    redisName := path.LastDirName
    files := path.Files
    slog.Info("process task", "taskID", task.ID, "redisName", redisName, "filesCount", len(files))


    // 3. Redis 數(shù)據(jù)處理
    ch := make(chan helper.RedisData, 1000)
    var wg sync.WaitGroup


    // 3.1 啟動生產(chǎn)者協(xié)程(讀取文件并發(fā)送到 channel)
    for _, file := range files {
        currentFile := pwd + "/" + file
        wg.Add(1)
        go func(filePath string) {
            defer wg.Done()
            if err := helper.MyFindBiggestKeys(filePath, ch); err != nil {  
                slog.Error("producer process file failed", "file", filePath,
    "err", err.Error())
                }
            }(currentFile)
        }
        // 3.2 啟動協(xié)程:等待生產(chǎn)者完成后關(guān)閉 channel
        go func() {
            wg.Wait()
            close(ch)
            slog.Info("task producer done, channel closed", "taskID", task.ID) 
        }()


        // 3.3 消費 channel 數(shù)據(jù)并存儲結(jié)果(
        for data := range ch {
            if data.Err != nil {
                slog.Error("data error", "error", data.Err)
                continue
        }
        
        if uint64(data.Data.GetSize()) <= *size {
            continue
        }

...

步驟 3: 輸出大 Key 結(jié)果。

解析完成后 ,需要將大 Key 結(jié)果以易讀的格式輸出。我這里實現(xiàn)了數(shù)據(jù)入庫(方便后續(xù)分析或接入運維平臺)。

// 構(gòu)造結(jié)構(gòu)體
        rediskey := &models.RedisKey{
            JobID:     jobID,
            RedisName: redisName,
            Key:       data.Data.GetKey(),
            Type:      data.Data.GetType(),
            Size:      int64(data.Data.GetSize()),
            CreatedAt: time.Now(),
        }
        
        if err := b.ResultV1().CreateTaskResult(ctx, rediskey); err != nil { 
            slog.Error("operation failed",
                "err", err,
                "key", data.Data.GetKey(),
            )
        }
        slog.Info("received data",
            "key", data.Data.GetKey(),
            "type", data.Data.GetType(),
            "size", data.Data.GetSize(),
        )
    }
    return nil
}

3. 性能優(yōu)化:讓解析更快

Golang 本身性能已經(jīng)很好 ,但面對超大 RDB 文件( 比如 20GB 以上),還是需要做—些優(yōu)化,主要從以下兩點入手:

優(yōu)化 1 :并發(fā)解析(利用 Golang 的協(xié)程)

RDB 文件是按Redis分片集群來備份導(dǎo)出的 ,核心思路是將不同RDB的解析任務(wù)分配到不同協(xié)程中 ,提升并行處理效率。具體代碼這里就不展開了 ,需要注意協(xié)程安全 ,用 sync.WaitGroup 等待所有協(xié)程完成。

優(yōu)化 2:減少內(nèi)存占用

解析大 RDB 文件時 ,容易出現(xiàn)內(nèi)存暴漲( 比如解析 20GB 的 RDB ,可能需要占用幾十 GB 內(nèi)存)。可以通過 “邊解析邊輸出” 的方式優(yōu)化:解析出—個大 Key 后 ,立即寫入channel ,而不是先存在切片中(避免大量數(shù)據(jù)堆積在內(nèi)存),入庫的協(xié)程讀取channel進行插入數(shù)據(jù)庫。

修改思路:將key ,parse過程中判斷是大 Key 后 ,直接寫入channel文件 ,無需存儲到切片。

三、實際落地:從代碼到運維工具

代碼寫完后 ,還需要做—些 “工程化” 處理 ,讓它成為真正能用的運維工具:

1. 編譯成二進制文件

Golang 可以跨平臺編譯 ,通過 Makefile可以快速支持編譯各種平臺的二進制文件 ,并且快速啟動調(diào)試:

# 運行程序(用于開發(fā)調(diào)試)
    run:
        @echo "運行程序 ..."
        go run $(MAIN_FILE) -c configs/rdb-server.yaml


    # 交叉編譯:生成Linux-amd64架構(gòu)的可執(zhí)行文件
    build-linux:
        @echo "編譯Linux-amd64架構(gòu)程序 ..."
        mkdir -p $(OUTPUT_DIR)
        GOOS=linux GOARCH=amd64 go build $(GO_BUILD_FLAGS) -o 
    $(OUTPUT_DIR)/$(BINARY_NAME)-linux-amd64 $(MAIN_FILE)
        @echo "Linux版本編譯完成:$(OUTPUT_DIR)/$(BINARY_NAME)-linux-amd64"


    # 交叉編譯:生成Windows-amd64架構(gòu)的可執(zhí)行文件
    build-windows:
        @echo "編譯Windows-amd64架構(gòu)程序 ..."
        mkdir -p $(OUTPUT_DIR)
        GOOS=windows GOARCH=amd64 go build 
    $(GO_BUILD_FLAGS) -o $(OUTPUT_DIR)/$(BINARY_NAME)-windows-amd64.exe $(MAIN_FILE)
        @echo "Windows版本編譯完成:$(OUTPUT_DIR)/$(BINARY_NAME)-windows-amd64.exe"

將二進制文件放到服務(wù)器上 ,直接運行即可:

./rdb-bigkey-linux-amd64  -c configs/rdb-server.yaml

2. 定時任務(wù)( 自動執(zhí)行)

通過定時任務(wù) ,設(shè)置每天低峰期自動執(zhí)行按集群列表執(zhí)行 RDB 備份任務(wù) ,備份任務(wù)完成后將結(jié)果入task表 ,任務(wù)自動觸發(fā)大key解析處理。

3. 集成到運維平臺

這里沒有開發(fā)前端 ,而是基于Grafana ,將大 Key 從數(shù)據(jù)庫(如 MySQL)讀取 ,再通過Grafana 配置面板 ,展? “每日大 Key 數(shù)量趨勢”“各業(yè)務(wù)線大 Key 分布” 等圖表 ,實現(xiàn)可視化監(jiān)控。公司如果有其他運維平臺 ,也可以集成進去 ,定制更靈活。

四、踩過的坑與解決方案

在實際測試和使用中 ,我遇到了幾個問題 ,這里分享給大家 ,避免踩坑:

坑 1 :RDB 文件格式不兼容

問題:解析某些老版本 Redis(如 Redis 4.0) 的 RDB 文件時 ,出現(xiàn)錯誤。

原因:采用的庫默認支持 Redis 6.0+ ,對老版本個別編碼不兼容。

解決方案:更換為支持多版本的庫 ,或者對解析程序源碼進行二次開發(fā)。

坑 2:解析超大 RDB 文件時內(nèi)存溢出

問題:解析 20GB 的 RDB 文件時 ,程序內(nèi)存占用超過 40GB ,被系統(tǒng) kill。

原因:默認情況下 ,解析器會將整個 RDB 文件的鍵值對加載到內(nèi)存 ,導(dǎo)致內(nèi)存暴漲。

解決方案:啟用 “流式解析” ,邊解析邊釋放內(nèi)存 —— 在 Decode 函數(shù)中 ,每解析完—個數(shù)據(jù)庫的鍵值對 ,就立即處理并釋放該數(shù)據(jù)庫的數(shù)據(jù) ,避免堆積。

五、總結(jié)與后續(xù)計劃

這套 Golang 實現(xiàn)的 RDB 大 Key 解析工具 , 目前已經(jīng)在我們公司的 Redis 集群中穩(wěn)定運行了 2個月 ,相比之前的 Python 工具 ,解析速度提升了 3-5 倍(解析 20GB RDB 文件從 1 小時縮短到15 分鐘左右),而且支持自定義閾值和結(jié)果輸出格式 ,非常靈活。

圖片

后續(xù)我計劃在現(xiàn)有基礎(chǔ)上增加兩個功能:

  • 業(yè)務(wù)線自動分類:根據(jù)鍵名前綴(如 user:info: 屬于用戶業(yè)務(wù) , order:detail: 屬于訂單業(yè)務(wù)), 自動給大 Key 打上業(yè)務(wù)標簽 ,方便定位責(zé)任團隊;
  • 大 Key 增長趨勢分析:將每天的大 Key 結(jié)果存入數(shù)據(jù)庫 ,對比分析 “某鍵是否連續(xù) 3 天為大Key”“內(nèi)存是否持續(xù)增長” ,提前預(yù)警潛在風(fēng)險。

如果你也在做 Redis 大 Key 治理 ,希望這篇實戰(zhàn)分享能給你帶來幫助。如果有更好的優(yōu)化思路或問題 ,歡迎交流!

作者介紹

劉宇,翼支付云原生存儲領(lǐng)域資深專家,深耕有狀態(tài)服務(wù)云原生化全鏈路實踐,聚焦分布式數(shù)據(jù)庫核心技術(shù)攻堅與開發(fā)運維一體化體系的構(gòu)建。

責(zé)任編輯:武曉燕 來源: dbaplus社群
相關(guān)推薦

2025-05-28 03:10:00

2024-11-21 16:47:55

2023-04-17 08:04:15

Redis性能內(nèi)存

2024-12-02 01:16:53

2024-11-26 08:09:58

2024-05-23 07:59:42

RedisKey性能

2022-04-12 14:54:52

Rediskey

2018-03-19 15:26:23

數(shù)據(jù)庫Redis中間件

2022-02-19 22:02:21

Redisvalue元素

2016-02-15 10:57:39

SaaSSaaS運營SaaS服務(wù)

2021-09-26 09:16:45

RedisGeo 類型數(shù)據(jù)類型

2015-12-14 15:34:35

開源投資創(chuàng)業(yè)

2024-08-07 08:28:38

SpringHabernateJPA

2025-11-13 08:22:03

2019-08-30 08:33:59

Redis緩存高可用性

2024-07-01 08:04:38

2011-11-22 13:22:41

谷歌WiFi

2022-11-03 08:56:43

RediskeyBitmap

2011-01-18 13:41:40

運維法則

2018-05-05 09:00:40

生產(chǎn)效率
點贊
收藏

51CTO技術(shù)棧公眾號

国产成人三级| 国产1区2区3区在线| 日韩欧美一区免费| 欧美剧在线免费观看网站 | 日本福利视频一区| 天堂av中文字幕| 亚洲大黄网站| 日韩电影网在线| 日本新janpanese乱熟| eeuss影院在线播放| 激情六月婷婷久久| 欧美国产一区二区三区| 久久福利小视频| 桃子视频成人app| 国产精品久久看| 91最新在线免费观看| 免费一级肉体全黄毛片| 欧美精品国产白浆久久久久| 色老头久久综合| 中文字幕99| 日本激情一区二区| 日产欧产美韩系列久久99| 久久夜精品香蕉| 亚洲一区和二区| 日日夜夜天天综合| 亚洲综合一区二区三区| 日本电影一区二区三区| aa视频在线免费观看| 国产欧美一级| 久久久久www| 特级西西人体4444xxxx| 国产精品伦一区二区| 亚洲国产精品一区二区尤物区| 少妇精品久久久久久久久久| 亚洲欧美高清视频| 久久精品久久99精品久久| 91av国产在线| 黄视频网站免费看| 国产亚洲一区| 亚洲а∨天堂久久精品喷水| 福利片一区二区三区| 午夜激情在线播放| 一区二区三区.www| 影音先锋亚洲视频| 国产精品一区二区婷婷| 国产99久久久国产精品| 国产一区二区视频在线观看| 久久久久久少妇| 亚洲欧美综合| 在线观看成人黄色| 少妇光屁股影院| 国产96在线亚洲| 91麻豆精品国产91久久久更新时间| 欧美成人xxxxx| 男女视频在线| 国产精品久久久久久久久果冻传媒| 久久av免费观看| 亚洲第一天堂影院| 国产精品一区二区在线播放| 国产精品久久久久久五月尺 | 欧美色图在线视频| 黄色一级视频在线播放| 在线播放免费av| 国产精品免费丝袜| 日韩欧美一区二区三区久久婷婷| 国产 日韩 欧美 精品| 国产麻豆视频一区二区| 91精品视频专区| 国产又粗又猛又爽又黄的| 日本不卡的三区四区五区| 日本在线精品视频| 国产精品久久久久久人| 亚洲综合电影一区二区三区| 欧美在线视频在线播放完整版免费观看| 国产精品变态另类虐交| 黄色在线成人| 欧美激情一区二区三区成人| 欧美日韩一级大片| 激情久久婷婷| 98视频在线噜噜噜国产| 欧美一区二区激情视频| 欧美亚洲三区| 国产成人免费av电影| 在线观看黄网站| 中文亚洲字幕| 456亚洲影院| 国产91国语对白在线| 日韩在线卡一卡二| 国产精品亚洲欧美导航| 国产精品国产av| 国产精品白丝jk白祙喷水网站| 97久久夜色精品国产九色| 亚洲国产精品久久久久久6q| av在线一区二区三区| 欧美精品免费观看二区| 9色在线视频网站| 综合久久久久久| 女人被男人躁得好爽免费视频 | 日韩最新av| 亚洲高清在线观看| 午夜时刻免费入口| 亚洲高清资源在线观看| 欧美激情小视频| 国产又大又黄又粗| 久久er精品视频| 成人做爰66片免费看网站| 日韩在线免费看| 国产精品欧美综合在线| a级黄色片免费| 日本性爱视频在线观看| 欧美性猛交xxxx偷拍洗澡| 在线观看免费污视频| 中文字幕一区二区三区中文字幕 | 老色鬼精品视频在线观看播放| 91久久精品国产91久久性色| 欧日韩在线视频| 国产女同互慰高潮91漫画| 米仓穗香在线观看| 玛雅亚洲电影| 欧美一区二区不卡视频| 在线观看国产网站| 亚洲不卡av不卡一区二区| 2020国产精品视频| av观看在线免费| 久久看人人爽人人| 国产专区在线视频| 神马午夜在线视频| 日韩欧美123| 日本猛少妇色xxxxx免费网站| 极品日韩av| 国产精品自拍偷拍| 日韩av成人| 一区二区三区加勒比av| 国产一区亚洲二区三区| av自拍一区| 久久国产一区二区三区| jizz国产在线观看| 成人av资源网站| 中文字幕久久综合| 视频在线日韩| 亚洲精品福利在线| 久久久精品99| 麻豆国产91在线播放| 久久精品五月婷婷| 国产精品69xx| 日韩一区二区在线观看| 麻豆一区在线观看| 国产日韩欧美三级| 成人在线视频网址| 欧美人与动牲性行为| 欧美精选午夜久久久乱码6080| 久久久久久亚洲中文字幕无码| 精品91久久久久| 51精品国产人成在线观看| 免费网站看v片在线a| 91高清视频在线| 国产夫妻性爱视频| 日韩亚洲国产精品| 国产精品久久一区二区三区| av理论在线观看| 这里只有精品视频在线观看| 欧美性生交大片| 蜜臀久久99精品久久久久久9| 欧美在线3区| 国产高清不卡| 亚洲免费视频一区二区| 亚洲免费在线视频观看| 91色在线porny| 北条麻妃在线视频观看| 秋霞在线一区| 26uuu久久噜噜噜噜| 欧洲综合视频| 91成人免费电影| 精品日韩在线视频| 久久99精品久久久久久久久久久久| 小说区图片区图片区另类灬| 成人综合网站| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 伊人色综合久久天天五月婷| 四虎国产精品免费久久5151| 久久精品国产亚洲精品| 国产av无码专区亚洲av| 亚洲最大色网站| 人妻体内射精一区二区三区| 国产欧美一区二区三区国产幕精品| 久久综合一区| 日本.亚洲电影| yw.139尤物在线精品视频| 国产白浆在线观看| 午夜激情一区二区| 好吊视频在线观看| 精品一区二区精品| 欧美国产日韩激情| 你微笑时很美电视剧整集高清不卡 | 日本三级日本三级日本三级极| 日韩午夜av在线| 欧美在线3区| 9999精品视频| 久久久久久中文字幕| 邻居大乳一区二区三区| 欧美日本一区二区三区| 欧美日韩激情在线观看| 91色视频在线| 自拍偷拍21p| 狠狠88综合久久久久综合网| 欧美日韩亚洲一区二区三区在线观看 | 久久国产人妖系列| 久久国产精品网| 欧美日韩中文字幕一区二区三区| 91沈先生在线观看| 天堂av在线| 日韩视频免费中文字幕| 色网站免费观看| 精品视频全国免费看| 伊人国产在线观看| 国产精品激情偷乱一区二区∴| 成人欧美精品一区二区| 日韩中文字幕亚洲一区二区va在线| 黄色网zhan| 免费成人结看片| 成人免费在线网址| 欧美www.| 国内精品久久久久久中文字幕| av中文字幕在线| 亚洲精品videossex少妇| 国产精品久久久久久久久久久久久久久久久久 | 欧美日韩国产在线播放| 999精品久久久| 久久久蜜臀国产一区二区| 美女被艹视频网站| 日本伊人色综合网| 怡红院av亚洲一区二区三区h| 999精品视频| 欧美亚洲国产免费| 哺乳一区二区三区中文视频 | 一区二区视频国产| 西野翔中文久久精品字幕| 亚洲综合国产精品| 欧美天堂在线| 日韩美女在线播放| free性m.freesex欧美| 久久久www成人免费精品张筱雨 | 国产 欧美在线| 一女二男3p波多野结衣| 首页欧美精品中文字幕| 国产极品尤物在线| 亚洲精品a级片| 日韩欧美激情一区二区| 国产在线播放精品| 99久久综合狠狠综合久久止| 在线免费成人| 国产精品欧美激情在线播放| 韩国久久久久久| 69视频在线免费观看| 手机av在线播放| 欧美成人剧情片在线观看| 淫片在线观看| 色综久久综合桃花网| 成年人视频在线看| 伊人久久大香线蕉av一区二区| 男女视频在线观看| 亚洲精品一区久久久久久| 熟妇人妻一区二区三区四区 | 日韩av大片在线观看| 亚洲五月六月丁香激情| 久久一级黄色片| 亚洲午夜三级在线| 国产午夜精品一区二区理论影院| 洋洋成人永久网站入口| 九九热精彩视频| 亚洲午夜电影在线观看| 国产奶水涨喷在线播放| 婷婷中文字幕一区三区| 西西44rtwww国产精品| 欧美日韩精品在线视频| 五月婷婷视频在线| 在线精品视频小说1| 中文在线免费观看| 在线电影欧美成精品| h狠狠躁死你h高h| 欧美不卡视频一区| 日本波多野结衣在线| 亚洲精品国产精品国产自| 男人的天堂在线| 在线视频欧美日韩| a毛片在线播放| 久久久久久久影院| 在线观看的黄色| 国产精品欧美激情在线播放| 久久的色偷偷| 国内视频一区| 热久久天天拍国产| 日本黄网站色大片免费观看| 最新国产拍偷乱拍精品| 成人性视频欧美一区二区三区| 久久99热99| 高清中文字幕mv的电影| 久久蜜桃一区二区| 人妻久久一区二区| 狠狠色噜噜狠狠狠狠97| 在线免费观看一级片| 日韩精品中午字幕| 欧美日本韩国一区二区| 久久精品99国产精品酒店日本| 国产一线二线在线观看| 国产成人精品视| 免费看日产一区二区三区| 精品伦理一区二区三区| 91综合久久| 伊人成色综合网| 久久99国产精品久久99| 在线xxxxx| 国产精品久久午夜| 国产精品成人免费一区二区视频| 欧亚洲嫩模精品一区三区| 亚洲av无码一区二区三区dv| 亚洲人成电影网站色xx| 亚洲按摩av| 国产精品美女av| 久久动漫网址| 一本色道久久综合亚洲精品婷婷| 亚洲久色影视| 久久久久久久久久一区| 久久久亚洲午夜电影| 九九热只有精品| 欧美视频在线一区二区三区 | 古典武侠综合av第一页| 狠狠做深爱婷婷综合一区| 国产xxxx振车| 精品一区二区三区香蕉蜜桃 | 中文字幕欧美激情| 日韩av一区二区在线播放| 91精品久久久久久蜜臀| 东热在线免费视频| 欧美性做爰毛片| www国产精品| 手机成人av在线| 免费在线观看一区二区三区| 人妻在线日韩免费视频| 一级特黄大欧美久久久| 国产精品日韩欧美一区二区| 国产无套粉嫩白浆在线2022年 | wwwwww日本| 亚洲香蕉伊在人在线观| 99热这里是精品| 日韩在线视频网| jizz亚洲女人高潮大叫| 欧美日韩精品免费观看视一区二区| 亚洲经典在线| 亚洲美女高潮久久久| 亚洲欧美另类久久久精品2019| 中文字幕一区二区三区四区视频 | 国产iv一区二区三区| 日韩欧美综合视频| 欧美久久一二三四区| 国产精品天堂| 国产99久久精品一区二区| 亚洲精品播放| 37pao成人国产永久免费视频| 97超碰欧美中文字幕| 国产成人在线观看网站| 亚洲国语精品自产拍在线观看| 蜜臀av在线| 国产精品久久亚洲| 亚洲激情另类| 在线观看成人动漫| 五月综合激情婷婷六月色窝| 殴美一级特黄aaaaaa| 性色av一区二区三区免费| 麻豆国产欧美一区二区三区r| 欧美视频在线观看视频| www.成人在线| 国产无遮挡呻吟娇喘视频| 亚洲欧美日韩精品久久亚洲区| 欧美aaa视频| 一区二区三区四区在线视频 | 在线观看你懂的视频| 一区二区在线电影| 欧美一级淫片aaaaaa| 欧美亚洲另类在线| 精品国产一区二区三区av片| 亚洲污视频在线观看| 亚洲三级小视频| 亚洲欧美另类一区| 欧美亚洲国产视频| 成人影院在线| 熟妇无码乱子成人精品| 午夜精品久久一牛影视| 欧美女优在线| 国产精品普通话| 欧美在线亚洲| 国产麻豆xxxvideo实拍| 91福利社在线观看| 国产美女av在线| 国产伦精品一区二区三区高清| 国产精品社区| 中文国语毛片高清视频| 欧美成人精品二区三区99精品| 小早川怜子影音先锋在线观看| 色综合电影网|