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

學(xué)透 Redis HyperLogLog,看這篇就夠了

數(shù)據(jù)庫(kù) Redis
HyperLogLog 是一種概率數(shù)據(jù)結(jié)構(gòu),它使用概率算法來(lái)統(tǒng)計(jì)集合的近似基數(shù)。而它算法的最本源則是伯努利過(guò)程。

在移動(dòng)互聯(lián)網(wǎng)的業(yè)務(wù)場(chǎng)景中,數(shù)據(jù)量很大,系統(tǒng)需要保存這樣的信息:一個(gè) key 關(guān)聯(lián)了一個(gè)數(shù)據(jù)集合,同時(shí)對(duì)這個(gè)數(shù)據(jù)集合做統(tǒng)計(jì)做一個(gè)報(bào)表給運(yùn)營(yíng)人員看。

比如:

  • 統(tǒng)計(jì)一個(gè) APP 的日活、月活數(shù)。
  • 統(tǒng)計(jì)一個(gè)頁(yè)面的每天被多少個(gè)不同賬戶訪問(wèn)量(Unique Visitor,UV)。
  • 統(tǒng)計(jì)用戶每天搜索不同詞條的個(gè)數(shù)。
  • 統(tǒng)計(jì)注冊(cè) IP 數(shù)。

通常情況下,系統(tǒng)面臨的用戶數(shù)量以及訪問(wèn)量都是巨大的,比如百萬(wàn)、千萬(wàn)級(jí)別的用戶數(shù)量,或者千萬(wàn)級(jí)別、甚至億級(jí)別的訪問(wèn)信息,咋辦呢?

Redis:“這些就是典型的基數(shù)統(tǒng)計(jì)應(yīng)用場(chǎng)景,基數(shù)統(tǒng)計(jì):統(tǒng)計(jì)一個(gè)集合中不重復(fù)元素,這被稱為基數(shù)。”

1. 是什么

HyperLogLog 是一種概率數(shù)據(jù)結(jié)構(gòu),用于估計(jì)集合的基數(shù)。每個(gè) HyperLogLog 最多只需要花費(fèi) 12KB 內(nèi)存,在標(biāo)準(zhǔn)誤差 0.81%的前提下,就可以計(jì)算 2 的 64 次方個(gè)元素的基數(shù)。

HyperLogLog 的優(yōu)點(diǎn)在于它所需的內(nèi)存并不會(huì)因?yàn)榧系拇笮《淖儯瑹o(wú)論集合包含的元素有多少個(gè),HyperLogLog 進(jìn)行計(jì)算所需的內(nèi)存總是固定的,并且是非常少的。

主要特點(diǎn)如下:

  • 高效的內(nèi)存使用:HyperLogLog 的內(nèi)存消耗是固定的,與集合中的元素?cái)?shù)量無(wú)關(guān)。這使得它特別適用于處理大規(guī)模數(shù)據(jù)集,因?yàn)樗恍枰鎯?chǔ)每個(gè)不同的元素,只需要存儲(chǔ)估計(jì)基數(shù)所需的信息。
  • 概率估計(jì):HyperLogLog 提供的結(jié)果是概率性的,而不是精確的基數(shù)計(jì)數(shù)。它通過(guò)哈希函數(shù)將輸入元素映射到位圖中的某些位置,并基于位圖的統(tǒng)計(jì)信息來(lái)估計(jì)基數(shù)。由于這是一種概率性方法,因此可能存在一定的誤差,但通常在實(shí)際應(yīng)用中,這個(gè)誤差是可接受的。
  • 高速計(jì)算:HyperLogLog 可以在常量時(shí)間內(nèi)計(jì)算估計(jì)的基數(shù),無(wú)論集合的大小如何。這意味著它的性能非常好,不會(huì)受到集合大小的影響。

2. 修煉心法

基本原理

HyperLogLog 是一種概率數(shù)據(jù)結(jié)構(gòu),它使用概率算法來(lái)統(tǒng)計(jì)集合的近似基數(shù)。而它算法的最本源則是伯努利過(guò)程。

伯努利過(guò)程就是一個(gè)拋硬幣實(shí)驗(yàn)的過(guò)程。拋一枚正常硬幣,落地可能是正面,也可能是反面,二者的概率都是 1/2 。

伯努利過(guò)程就是一直拋硬幣,直到落地時(shí)出現(xiàn)正面位置,并記錄下拋擲次數(shù)k。

比如說(shuō),拋一次硬幣就出現(xiàn)正面了,此時(shí) k 為 1; 第一次拋硬幣是反面,則繼續(xù)拋,直到第三次才出現(xiàn)正面,此時(shí) k 為 3。

對(duì)于 n 次伯努利過(guò)程,我們會(huì)得到 n 個(gè)出現(xiàn)正面的投擲次數(shù)值 k1, k2 ... kn, 其中這里的最大值是 k_max。

根據(jù)一頓數(shù)學(xué)推導(dǎo),我們可以得出一個(gè)結(jié)論:2^{k_ max} 來(lái)作為 n 的估計(jì)值。

也就是說(shuō)你可以根據(jù)最大投擲次數(shù)近似的推算出進(jìn)行了幾次伯努利過(guò)程。

所以 HyperLogLog 的基本思想是利用集合中數(shù)字的比特串第一個(gè) 1 出現(xiàn)位置的最大值來(lái)預(yù)估整體基數(shù),但是這種預(yù)估方法存在較大誤差,為了改善誤差情況,HyperLogLog 中引入分桶平均的概念,計(jì)算 m 個(gè)桶的調(diào)和平均值。

Redis 內(nèi)部使用字符串位圖來(lái)存儲(chǔ) HyperLogLog 所有桶的計(jì)數(shù)值,一共分了 2^14 個(gè)桶,也就是 16384 個(gè)桶。每個(gè)桶中是一個(gè) 6 bit 的數(shù)組。

這段代碼描述了 Redis HyperLogLog 數(shù)據(jù)結(jié)構(gòu)的頭部定義(hyperLogLog.c 中的 hllhdr 結(jié)構(gòu)體)。以下是關(guān)于這個(gè)數(shù)據(jù)結(jié)構(gòu)的各個(gè)字段的解釋。

struct hllhdr {
    char magic[4];
    uint8_t encoding;
    uint8_t notused[3];
    uint8_t card[8];
    uint8_t registers[];
};

(1)magic[4]:這個(gè)字段是一個(gè) 4 字節(jié)的字符數(shù)組,用來(lái)表示數(shù)據(jù)結(jié)構(gòu)的標(biāo)識(shí)符。在 HyperLogLog 中,它的值始終為"HYLL",用來(lái)標(biāo)識(shí)這是一個(gè) HyperLogLog 數(shù)據(jù)結(jié)構(gòu)。

(2)encoding:這是一個(gè) 1 字節(jié)的字段,用來(lái)表示 HyperLogLog 的編碼方式。它可以取兩個(gè)值之一:

  • HLL_DENSE:表示使用稠密表示方式。
  • HLL_SPARSE:表示使用稀疏表示方式。

(3)notused[3]:這是一個(gè) 3 字節(jié)的字段,目前保留用于未來(lái)的擴(kuò)展,要求這些字節(jié)的值必須為零。

(4)card[8]:這是一個(gè) 8 字節(jié)的字段,用來(lái)存儲(chǔ)緩存的基數(shù)(基數(shù)估計(jì)的值)。

(5)egisters[]:這個(gè)字段是一個(gè)可變長(zhǎng)度的字節(jié)數(shù)組,用來(lái)存儲(chǔ) HyperLogLog 的數(shù)據(jù)。

4-45

圖 2-45

Redis 對(duì) HyperLogLog 的存儲(chǔ)進(jìn)行了優(yōu)化,在計(jì)數(shù)比較小的時(shí)候,存儲(chǔ)空間采用系數(shù)矩陣,占用空間很小。

只有在計(jì)數(shù)很大,稀疏矩陣占用的空間超過(guò)了閾值才會(huì)轉(zhuǎn)變成稠密矩陣,占用 12KB 空間。

出招實(shí)戰(zhàn):網(wǎng)頁(yè)訪問(wèn)量統(tǒng)計(jì)

在移動(dòng)互聯(lián)網(wǎng)的業(yè)務(wù)場(chǎng)景中,數(shù)據(jù)量很大,系統(tǒng)需要保存這樣的信息:一個(gè) key 關(guān)聯(lián)了一個(gè)數(shù)據(jù)集合,同時(shí)對(duì)這個(gè)數(shù)據(jù)集合做統(tǒng)計(jì)做一個(gè)報(bào)表給運(yùn)營(yíng)人員看。

比如。

  • 統(tǒng)計(jì)一個(gè) APP 的日活、月活數(shù)。
  • 統(tǒng)計(jì)一個(gè)頁(yè)面的每天被多少個(gè)不同賬戶訪問(wèn)量(Unique Visitor,UV)。
  • 統(tǒng)計(jì)用戶每天搜索不同詞條的個(gè)數(shù)。
  • 統(tǒng)計(jì)注冊(cè) IP 數(shù)。

通常情況下,系統(tǒng)面臨的用戶數(shù)量以及訪問(wèn)量都是巨大的,比如百萬(wàn)、千萬(wàn)級(jí)別的用戶數(shù)量,或者千萬(wàn)級(jí)別、甚至億級(jí)別的訪問(wèn)信息,咋辦呢?

使用 Set 實(shí)現(xiàn)

一個(gè)用戶一天內(nèi)多次訪問(wèn)一個(gè)網(wǎng)站只能算作一次,所以很容易就想到通過(guò) Redis 的 Set 集合來(lái)實(shí)現(xiàn)。

比如微信昵稱叫 “Chaya” 的小姐姐訪問(wèn)【愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn)】這篇文章時(shí),我把這個(gè)微信昵稱 “Chaya” 存到 Set 集合中。

SADD 愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv 碼哥 Chaya 趙小因 Chaya
(integer) 3

“Chaya” 多次訪問(wèn)這篇文章, Set 的去重特性保證集合中只有一個(gè)記錄。接著,通過(guò) SCARD 命令,統(tǒng)計(jì)頁(yè)面 UV。指令返回這個(gè)集合的元素個(gè)數(shù)(也就是微信昵稱個(gè)數(shù))。

SCARD 愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv
(integer) 3

使用 HyperLogLog 實(shí)現(xiàn)

Chaya:“Set 集合雖好,如果文章非常火爆達(dá)到千萬(wàn)級(jí)別,一個(gè) Set 集合就保存了千萬(wàn)個(gè)用戶的 ID,頁(yè)面多了消耗的內(nèi)存也太大了。”

不要怕,只要思想不滑坡,辦法總比困難多。這些就是典型的基數(shù)統(tǒng)計(jì)應(yīng)用場(chǎng)景,基數(shù)統(tǒng)計(jì):統(tǒng)計(jì)一個(gè)集合中不重復(fù)元素的個(gè)數(shù)。

HyperLogLog 的優(yōu)點(diǎn)在于它所需的內(nèi)存并不會(huì)因?yàn)榧系拇笮《淖儯瑹o(wú)論集合包含的元素有多少個(gè),HyperLogLog 進(jìn)行計(jì)算所需的內(nèi)存總是固定的,并且是非常少的。

每個(gè) HyperLogLog 最多只需要花費(fèi) 12KB 內(nèi)存,在標(biāo)準(zhǔn)誤差 0.81%的前提下,就可以計(jì)算 2 的 64 次方個(gè)元素的基數(shù)。

HyperLogLog 使用太簡(jiǎn)單了。PFADD、PFCOUNT、PFMERGE三個(gè)指令打天下。

PFADD

每訪問(wèn)一次頁(yè)面,調(diào)用 PFADD 指令 將這個(gè)用戶 ID 添加到 HyperLogLog 中。如下 一共有三個(gè)用戶訪問(wèn)了這頁(yè)面,其中 Chaya 訪問(wèn)了兩次,但只算一次。

PFADD 愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv 碼哥 Chaya 趙小因 Chaya

如果執(zhí)行命令后 HyperLogLog 估計(jì)的近似基數(shù)發(fā)生變化,PFADD則返回 1,否則返回 0。如果指定的鍵不存在,該命令會(huì)自動(dòng)創(chuàng)建一個(gè)空的 HyperLogLog 結(jié)構(gòu)。

pfadd 命令并不會(huì)一次性分配 12k 內(nèi)存,而是隨著基數(shù)的增加而逐漸增加內(nèi)存分配;

PFCOUNT

接下來(lái),通過(guò) PFCOUNT 指令獲取文章【愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn)】的 UV 值,可以看到返回值是 3 ,符合預(yù)期。

> PFCOUNT 愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv
3

PFMERGE 合并統(tǒng)計(jì)

Chaya:“還有一個(gè)變態(tài)需求,對(duì)文章進(jìn)行標(biāo)簽分類(lèi),運(yùn)營(yíng)說(shuō)要把都是情感文章標(biāo)簽的幾個(gè)頁(yè)面數(shù)據(jù)合并統(tǒng)計(jì)。”

其中頁(yè)面的 UV 訪問(wèn)量也需要合并,那這個(gè)時(shí)候 PFMERGE 就可以派上用場(chǎng)了,也就是同樣的用戶訪問(wèn)這兩個(gè)頁(yè)面則只算做一次。

如下指令,把愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv和愛(ài)情是幸福和不委屈:uv 兩個(gè) HyperLogLog 集合數(shù)據(jù)合并到情感分類(lèi)文章:uv這個(gè)集合中。

PFADD 愛(ài)情是幸福和不委屈:uv Chaya 趙小因 幸運(yùn)草
# 合并兩個(gè)頁(yè)面 UV
PFMERGE 情感分類(lèi)文章:uv 愛(ài)一個(gè)人總是要掉眼淚的風(fēng)險(xiǎn):uv 愛(ài)情是幸福和不委屈:uv

接著,執(zhí)行 PFCOUNT 情感分類(lèi)文章:uv 統(tǒng)計(jì)合并后的數(shù)據(jù)。

> PFCOUNT 情感分類(lèi)文章:uv
4

將多個(gè) HyperLogLog 合并(merge)為一個(gè) HyperLogLog , 合并后的 HyperLogLog 的基數(shù)接近于所有輸入 HyperLogLog 的可見(jiàn)集合(observed set)的并集。

4. Redisson 實(shí)戰(zhàn)

開(kāi)門(mén)見(jiàn)山,Spring Boot 與 Redisson 集成詳見(jiàn)前面篇章,主要有四個(gè)方法。

  • add、addAll,閱讀文章調(diào)用該方法將數(shù)據(jù)存入 HyperLogLog 中。
  • count,統(tǒng)計(jì)基數(shù)。
  • merge,合并多個(gè) HyperLogLog 為一個(gè)。
@Service
public class HyperLogLogService {

    @Autowired
    private RedissonClient redissonClient;

    /**
     * 將數(shù)據(jù)添加到 HyperLogLog
     *
     * @param logName
     * @param item
     * @param <T>
     */
    public <T> void add(String logName, T item) {
        RHyperLogLog<T> hyperLogLog = redissonClient.getHyperLogLog(logName);
        hyperLogLog.add(item);
    }

    /**
     * 將集合數(shù)據(jù)添加到 HyperLogLog
     * @param logName
     * @param items
     * @param <T>
     */
    public <T> void addAll(String logName, List<T> items) {
        RHyperLogLog<T> hyperLogLog = redissonClient.getHyperLogLog(logName);
        hyperLogLog.addAll(items);
    }

    /**
     * 將 otherLogNames 的 log 合并到 logName
     *
     * @param logName       當(dāng)前 log
     * @param otherLogNames 需要合并到當(dāng)前 log 的其他 logs
     * @param <T>
     */
    public <T> void merge(String logName, String... otherLogNames) {
        RHyperLogLog<T> hyperLogLog = redissonClient.getHyperLogLog(logName);
        hyperLogLog.mergeWith(otherLogNames);
    }

    /**
     * 統(tǒng)計(jì)基數(shù)
     *
     * @param logName 需要統(tǒng)計(jì)的 logName
     * @param <T>
     * @return
     */
    public <T> long count(String logName) {
        RHyperLogLog<T> hyperLogLog = redissonClient.getHyperLogLog(logName);
        return hyperLogLog.count();
    }
}
責(zé)任編輯:趙寧寧 來(lái)源: 碼哥字節(jié)
相關(guān)推薦

2023-09-25 08:32:03

Redis數(shù)據(jù)結(jié)構(gòu)

2019-08-16 09:41:56

UDP協(xié)議TCP

2021-09-30 07:59:06

zookeeper一致性算法CAP

2022-03-29 08:23:56

項(xiàng)目數(shù)據(jù)SIEM

2021-05-07 07:52:51

Java并發(fā)編程

2019-05-08 15:59:58

Python函數(shù)數(shù)據(jù)類(lèi)型

2019-10-16 11:12:14

前端Docker虛擬機(jī)

2021-09-10 13:06:45

HDFS底層Hadoop

2021-07-28 13:29:57

大數(shù)據(jù)PandasCSV

2023-11-07 07:46:02

GatewayKubernetes

2017-03-30 22:41:55

虛擬化操作系統(tǒng)軟件

2024-08-27 11:00:56

單例池緩存bean

2024-09-27 11:51:33

Redis多線程單線程

2024-03-26 00:00:06

RedisZSet排行榜

2021-12-13 10:43:45

HashMapJava集合容器

2023-11-22 07:54:33

Xargs命令Linux

2023-12-07 09:07:58

2022-08-18 20:45:30

HTTP協(xié)議數(shù)據(jù)

2021-04-11 08:30:40

VRAR虛擬現(xiàn)實(shí)技術(shù)

2021-10-21 06:52:17

ZooKeeper分布式配置
點(diǎn)贊
收藏

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

成人黄色在线看| 午夜精品久久久久99热蜜桃导演| 日韩欧美成人免费视频| 日韩欧美一级片| 日韩一区二区高清视频| 国产黄网在线观看| 国产日本亚洲| 亚洲不卡av一区二区三区| 久久er99热精品一区二区三区 | 一区二区三区免费观看| 久久国产主播精品| 一级黄色片免费| 亚洲黄色影片| 中文字幕一区二区精品| 99久久久无码国产精品性波多 | 国产精品高潮粉嫩av| 亚洲 欧美 变态 另类 综合| 日本天堂一区| 5566中文字幕一区二区电影| 自拍日韩亚洲一区在线| 久久bbxx| 久久久国际精品| 波多野结衣久草一区| 国产一区免费看| 极品日韩av| 日韩在线观看精品| 最近中文字幕免费视频| 日韩中文字幕一区二区高清99| 色综合久久综合网| 国产免费xxx| 国产小视频在线播放| 任你躁在线精品免费| 欧美日韩免费观看一区二区三区 | 国产日韩一区二区三区在线播放| 日韩视频免费大全中文字幕| 欧美 日本 国产| 免费观看亚洲天堂| 欧美日韩国产a| 国产无套粉嫩白浆内谢的出处| h片视频在线观看| 亚洲人亚洲人成电影网站色| 成人性生活视频| 国产精品久久久久久人| 巨大黑人极品videos精品| 亚洲成a人在线观看| 国产av不卡一区二区| 成人三级黄色免费网站| 久久伊99综合婷婷久久伊| 国产精品一区二区在线观看| 国产黄色免费大片| 激情综合色播激情啊| 国产成人久久精品| 九九九在线观看| 亚洲爽爆av| 日韩欧美精品一区二区三区经典| 国产又黄又猛的视频| av免费不卡| 亚洲一区二区视频| 999久久欧美人妻一区二区| 黄色网址在线免费播放| 国产精品国产自产拍高清av王其| 日日噜噜噜噜夜夜爽亚洲精品| 日韩美女一级视频| 国产免费成人| 91精品国产91久久久久久不卡| 国产一级一片免费播放放a| 欧美久久九九| 久久久久久国产精品三级玉女聊斋| 午夜剧场免费在线观看| 久久久人成影片免费观看| 日韩欧美在线观看一区二区三区| 国产精品自在自线| 神马午夜伦理不卡| 亚洲另类在线制服丝袜| 精品无人乱码一区二区三区的优势| 亚洲精品国产片| 成人毛片老司机大片| 国产在线一区二区三区播放| 日本成人一区二区三区| 国产丝袜欧美中文另类| 亚洲自拍高清视频网站| 国产a级免费视频| 懂色一区二区三区免费观看| 国产一区二区精品免费| 五月婷婷狠狠干| 久久久www免费人成精品| 色婷婷精品国产一区二区三区| 午夜在线免费观看视频| 亚洲免费在线看| 水蜜桃色314在线观看| a日韩av网址| 欧美日韩黄色一区二区| 91精品国产高清91久久久久久| 久久超级碰碰| 日韩一区二区电影网| 中文字幕乱视频| 国产亚洲欧美日韩在线观看一区二区 | 久久精品国产亚洲av无码娇色| 亚洲美女黄网| 国产精品免费久久久久影院| 国产在线视频二区| 亚洲一级在线| 成人黄色在线播放| 少妇人妻精品一区二区三区| 国产日产欧美一区二区视频| 五月天激情图片| 91社区在线| 一区二区三区鲁丝不卡| 116极品美女午夜一级| 日韩三区四区| 亚洲国产一区二区三区在线观看| 日本成人免费视频| 精久久久久久| 国产一区二区香蕉| 天堂a√中文在线| 高清成人在线观看| 日本一区二区精品视频| 羞羞的视频在线看| 在线观看视频一区| 国产污在线观看| 久久精品播放| 91av视频在线观看| 国产视频一区二区三| 国产三级精品视频| 国自产拍偷拍精品啪啪一区二区| 国产高清亚洲| 中文字幕日韩欧美在线视频| 日韩在线视频免费播放| 国产精品资源站在线| 亚洲bbw性色大片| 92国产精品| 欧美精品一区二区三区一线天视频 | 久久亚洲精品无码va白人极品| 成人黄色免费观看| 亚洲乱码一区av黑人高潮| 久久亚洲国产成人精品性色| 精品亚洲免费视频| 亚洲国产欧美日韩| jizz内谢中国亚洲jizz| 亚洲国产成人精品女人久久久| 成人在线观看小视频| 久久99精品久久久久久国产越南| 欧美 日韩 国产在线| 精品av中文字幕在线毛片 | 中文字幕第50页| 欧美成人高清视频在线观看| 亚洲人成电影在线播放| 天天爽夜夜爽夜夜爽精品| 成人av网址在线观看| 91网站在线观看免费| 精品视频一区二区三区在线观看| 中文字幕一精品亚洲无线一区| 性色av一区二区三区四区| 久久免费电影网| 97在线播放视频| 亚洲综合福利| 国产成人中文字幕| 成人午夜电影在线观看| 欧美性做爰猛烈叫床潮| 国产成人一区二区在线观看| 日本不卡123| 亚洲xxxxx| 91精品久久| 精品国产伦一区二区三区观看方式 | 国产av一区二区三区精品| 亚洲九九爱视频| 久久久久亚洲av无码专区首jn| 欧美三级乱码| 国模精品娜娜一二三区| 日韩激情电影免费看| 亚洲欧美日韩图片| 国产成人自拍偷拍| 亚洲欧美在线另类| 日韩黄色一区二区| 亚洲三级免费| 欧美一进一出视频| 欧美jizz18| 色综合老司机第九色激情| 人妻妺妺窝人体色www聚色窝| 日韩欧美中文在线| 国产一二三av| 成人在线一区二区三区| 成人在线免费在线观看| 成人情趣视频| 2019国产精品视频| 黄色污网站在线观看| 亚洲色图狂野欧美| 一本色道久久综合亚洲| av在线播放一区二区三区| 97xxxxx| 国产高清一区| 精品蜜桃一区二区三区| 成人国产网站| 午夜精品国产精品大乳美女| 国产九色在线| 日韩精品在线一区| 999视频在线| 亚洲精品乱码久久久久久黑人| 欧美xxxxx精品| 蜜桃av一区二区在线观看| 欧美在线观看视频免费| 国产精品视频一区二区三区四蜜臂| 成人欧美一区二区三区在线 | 亚洲国产精品久久艾草纯爱| 一级片手机在线观看| 国产成人精品免费在线| 高清一区二区视频| 亚洲青涩在线| 在线视频一二三区| 久久99国产成人小视频| 99中文字幕| 欧美成人三级| 欧美一级大片在线免费观看| 中文字幕在线播放网址| 国产一区二区欧美日韩| 黄色aaa大片| 欧美另类videos死尸| caoporn国产| 亚洲成人av在线电影| 天天色天天综合| 麻豆精品国产91久久久久久| 少妇高潮毛片色欲ava片| 亚洲综合小说| yy111111少妇影院日韩夜片 | 日本福利一区二区| 久久精品免费av| 日韩久久一区二区| 欧美人妻一区二区三区| 99国产精品一区| 国产免费黄色av| 欧美激情视频一区二区三区免费| 亚洲成人av动漫| 欧美女王vk| 久久久久久国产精品mv| 成人av综合网| 懂色av一区二区三区在线播放| 国产一区二区| 91精品免费视频| 欧洲成人综合网| 久久综合久久美利坚合众国| 3d成人动漫在线| 一区二区三区视频免费| 欧美黄色小说| 精品五月天久久| 头脑特工队2免费完整版在线观看| 精品国产免费一区二区三区四区 | 亚洲欧美丝袜| 日本一区二区三区视频| 日本高清一区| 欧美亚洲在线日韩| 午夜精品亚洲一区二区三区嫩草 | 黄频视频在线观看| 99tv成人| 超碰97在线看| 激情久久久久久久| 青青草成人免费在线视频| 亚洲精品日本| 亚洲午夜精品久久久久久人妖| 宅男噜噜噜66国产日韩在线观看| 久久久999视频| 亚欧成人精品| 亚洲 欧美 日韩系列| 欧美a一区二区| 在线观看免费av网址| 国产一区高清在线| 肉丝美足丝袜一区二区三区四| 懂色av一区二区三区免费观看| 怡红院一区二区| 久久亚洲免费视频| 一本在线免费视频| 1000精品久久久久久久久| 乱h高h女3p含苞待放| 久久久一区二区三区捆绑**| 中文字幕一区二区人妻在线不卡| 久久久不卡网国产精品一区| 亚洲精品电影院| 一区二区三区精品| 日韩 欧美 亚洲| 色屁屁一区二区| 国产又黄又大又爽| 亚洲高清不卡av| 岛国视频免费在线观看| 久久视频在线看| 日本黄色免费在线| 国产精品夜间视频香蕉| 操欧美女人视频| 日韩国产在线一区| 亚洲经典一区| 99精品在线免费视频| 欧美精品观看| 欧美一区二区三区爽大粗免费| 日本麻豆一区二区三区视频| 无码人妻少妇色欲av一区二区| 91在线国产福利| 91传媒免费观看| 狠狠干狠狠久久| 国产在线视频二区| 欧美色电影在线| 69视频免费看| 日韩视频一区二区| 巨骚激情综合| 欧美高跟鞋交xxxxxhd| 日韩高清成人| 国产精品日韩高清| 国产精品久久久久久麻豆一区软件 | 国产69久久| 午夜精品一区二区三区视频免费看 | 欧美3p在线观看| 国产在线青青草| 国产精品一区二区在线播放| 91久久免费视频| 亚洲一区二区精品久久av| 中国女人一级一次看片| 亚洲第一av在线| 大地资源网3页在线观看| 色系列之999| 国产私拍精品| 久久免费少妇高潮久久精品99| 久久天天久久| 欧美一区二视频在线免费观看| 国产一区清纯| 九一精品久久久| 国产蜜臀97一区二区三区| 午夜精品三级久久久有码| 欧美一卡2卡3卡4卡| 日本啊v在线| 97碰碰碰免费色视频| 日本精品视频| 99精品一级欧美片免费播放| 日韩精品亚洲专区| www.久久国产| 丁香五六月婷婷久久激情| 亚洲第一页综合| 久久国产精品久久久久| 日本成人一区二区| 亚洲国产午夜伦理片大全在线观看网站 | 天堂8在线天堂资源bt| 狠狠色丁香久久婷婷综| 性少妇xx生活| 欧美日韩视频在线一区二区| 高清av电影在线观看| 青青草成人在线| 日韩精品免费一区二区三区竹菊| xxxx18hd亚洲hd捆绑| 高清不卡在线观看av| 69精品久久久| 欧美精品一区在线观看| heyzo在线欧美播放| 国产精品福利视频| 在线观看不卡| 一起草在线视频| 五月天久久比比资源色| 天天操天天操天天操| 欧美在线视频a| 免费毛片在线不卡| 不卡av免费在线| 国产精品亲子伦对白| 6—12呦国产精品| 久久亚洲私人国产精品va| 久久影院一区二区三区| 久久香蕉视频网站| 成人性生交大片免费看视频在线 | 久久久久久国产精品免费无遮挡| 国产综合色香蕉精品| 久久久久久久久99精品大| 在线一区二区不卡| 99re视频精品| 一级片视频在线观看| 最近2019年日本中文免费字幕 | 夜久久久久久| 丰满圆润老女人hd| 欧美三日本三级三级在线播放| 快射视频在线观看| 成人综合色站| 久久激情中文| 三级全黄做爰视频| 亚洲电影在线看| 日本精品网站| 国产日韩第一页| aaa欧美日韩| 中国一区二区视频| 欧美日韩国产第一页| 综合干狼人综合首页| 亚洲免费黄色网| 亚洲狠狠爱一区二区三区| 飘雪影视在线观看免费观看 | 136福利精品导航| av网站在线观看不卡| 国产精品成人午夜| 三级小视频在线观看| 国产精品色悠悠| 国产精品激情| 欧美精品日韩在线| 亚洲成人免费网站| 国产精品伊人| 欧美日韩亚洲一| 亚洲日本韩国一区| 欧美少妇另类| y111111国产精品久久婷婷| 日产国产欧美视频一区精品|