午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識(shí)庫 > 基于Redis位圖實(shí)現(xiàn)用戶簽到功能

基于Redis位圖實(shí)現(xiàn)用戶簽到功能

熱門標(biāo)簽:鄭州人工智能電銷機(jī)器人系統(tǒng) 魔獸2青云地圖標(biāo)注 北京400電話辦理收費(fèi)標(biāo)準(zhǔn) 十堰營(yíng)銷電銷機(jī)器人哪家便宜 宿遷便宜外呼系統(tǒng)平臺(tái) 日本中國地圖標(biāo)注 超呼電話機(jī)器人 山東外呼銷售系統(tǒng)招商 貴州電銷卡外呼系統(tǒng)

場(chǎng)景需求

適用場(chǎng)景如簽到送積分、簽到領(lǐng)取獎(jiǎng)勵(lì)等,大致需求如下:

  1. 簽到1天送1積分,連續(xù)簽到2天送2積分,3天送3積分,3天以上均送3積分等。
  2. 如果連續(xù)簽到中斷,則重置計(jì)數(shù),每月初重置計(jì)數(shù)。
  3. 當(dāng)月簽到滿3天領(lǐng)取獎(jiǎng)勵(lì)1,滿5天領(lǐng)取獎(jiǎng)勵(lì)2,滿7天領(lǐng)取獎(jiǎng)勵(lì)3……等等。
  4. 顯示用戶某個(gè)月的簽到次數(shù)和首次簽到時(shí)間。
  5. 在日歷控件上展示用戶每月簽到情況,可以切換年月顯示……等等。

設(shè)計(jì)思路

對(duì)于用戶簽到數(shù)據(jù),如果每條數(shù)據(jù)都用K/V的方式存儲(chǔ),當(dāng)用戶量大的時(shí)候內(nèi)存開銷是非常大的。而位圖(BitMap)是由一組bit位組成的,每個(gè)bit位對(duì)應(yīng)0和1兩個(gè)狀態(tài),雖然內(nèi)部還是采用String類型存儲(chǔ),但Redis提供了一些指令用于直接操作位圖,可以把它看作是一個(gè)bit數(shù)組,數(shù)組的下標(biāo)就是偏移量。它的優(yōu)點(diǎn)是內(nèi)存開銷小、效率高且操作簡(jiǎn)單,很適合用于簽到這類場(chǎng)景。

Redis提供了以下幾個(gè)指令用于操作位圖:

SETBIT

GETBIT

BITCOUNT

BITPOS

BITOP

BITFIELD

考慮到每月初需要重置連續(xù)簽到次數(shù),最簡(jiǎn)單的方式是按用戶每月存一條簽到數(shù)據(jù)(也可以每年存一條數(shù)據(jù))。Key的格式為u:sign:uid:yyyyMM,Value則采用長(zhǎng)度為4個(gè)字節(jié)(32位)的位圖(最大月份只有31天)。位圖的每一位代表一天的簽到,1表示已簽,0表示未簽。

例如u:sign:1000:201902表示ID=1000的用戶在2019年2月的簽到記錄。

# 用戶2月17號(hào)簽到
SETBIT u:sign:1000:201902 16 1 # 偏移量是從0開始,所以要把17減1

# 檢查2月17號(hào)是否簽到
GETBIT u:sign:1000:201902 16 # 偏移量是從0開始,所以要把17減1

# 統(tǒng)計(jì)2月份的簽到次數(shù)
BITCOUNT u:sign:1000:201902

# 獲取2月份前28天的簽到數(shù)據(jù)
BITFIELD u:sign:1000:201902 get u28 0

# 獲取2月份首次簽到的日期
BITPOS u:sign:1000:201902 1 # 返回的首次簽到的偏移量,加上1即為當(dāng)月的某一天

示例代碼

import redis.clients.jedis.Jedis;

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

/**
 * 基于Redis位圖的用戶簽到功能實(shí)現(xiàn)類
 * p>
 * 實(shí)現(xiàn)功能:
 * 1. 用戶簽到
 * 2. 檢查用戶是否簽到
 * 3. 獲取當(dāng)月簽到次數(shù)
 * 4. 獲取當(dāng)月連續(xù)簽到次數(shù)
 * 5. 獲取當(dāng)月首次簽到日期
 * 6. 獲取當(dāng)月簽到情況
 */
public class UserSignDemo {
    private Jedis jedis = new Jedis();

    /**
     * 用戶簽到
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return 之前的簽到狀態(tài)
     */
    public boolean doSign(int uid, LocalDate date) {
        int offset = date.getDayOfMonth() - 1;
        return jedis.setbit(buildSignKey(uid, date), offset, true);
    }

    /**
     * 檢查用戶是否簽到
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return 當(dāng)前的簽到狀態(tài)
     */
    public boolean checkSign(int uid, LocalDate date) {
        int offset = date.getDayOfMonth() - 1;
        return jedis.getbit(buildSignKey(uid, date), offset);
    }

    /**
     * 獲取用戶簽到次數(shù)
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return 當(dāng)前的簽到次數(shù)
     */
    public long getSignCount(int uid, LocalDate date) {
        return jedis.bitcount(buildSignKey(uid, date));
    }

    /**
     * 獲取當(dāng)月連續(xù)簽到次數(shù)
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return 當(dāng)月連續(xù)簽到次數(shù)
     */
    public long getContinuousSignCount(int uid, LocalDate date) {
        int signCount = 0;
        String type = String.format("u%d", date.getDayOfMonth());
        ListLong> list = jedis.bitfield(buildSignKey(uid, date), "GET", type, "0");
        if (list != null  list.size() > 0) {
            // 取低位連續(xù)不為0的個(gè)數(shù)即為連續(xù)簽到次數(shù),需考慮當(dāng)天尚未簽到的情況
            long v = list.get(0) == null ? 0 : list.get(0);
            for (int i = 0; i  date.getDayOfMonth(); i++) {
                if (v >> 1  1 == v) {
                    // 低位為0且非當(dāng)天說明連續(xù)簽到中斷了
                    if (i > 0) break;
                } else {
                    signCount += 1;
                }
                v >>= 1;
            }
        }
        return signCount;
    }

    /**
     * 獲取當(dāng)月首次簽到日期
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return 首次簽到日期
     */
    public LocalDate getFirstSignDate(int uid, LocalDate date) {
        long pos = jedis.bitpos(buildSignKey(uid, date), true);
        return pos  0 ? null : date.withDayOfMonth((int) (pos + 1));
    }

    /**
     * 獲取當(dāng)月簽到情況
     *
     * @param uid  用戶ID
     * @param date 日期
     * @return Key為簽到日期,Value為簽到狀態(tài)的Map
     */
    public MapString, Boolean> getSignInfo(int uid, LocalDate date) {
        MapString, Boolean> signMap = new HashMap>(date.getDayOfMonth());
        String type = String.format("u%d", date.lengthOfMonth());
        ListLong> list = jedis.bitfield(buildSignKey(uid, date), "GET", type, "0");
        if (list != null  list.size() > 0) {
            // 由低位到高位,為0表示未簽,為1表示已簽
            long v = list.get(0) == null ? 0 : list.get(0);
            for (int i = date.lengthOfMonth(); i > 0; i--) {
                LocalDate d = date.withDayOfMonth(i);
                signMap.put(formatDate(d, "yyyy-MM-dd"), v >> 1  1 != v);
                v >>= 1;
            }
        }
        return signMap;
    }

    private static String formatDate(LocalDate date) {
        return formatDate(date, "yyyyMM");
    }

    private static String formatDate(LocalDate date, String pattern) {
        return date.format(DateTimeFormatter.ofPattern(pattern));
    }

    private static String buildSignKey(int uid, LocalDate date) {
        return String.format("u:sign:%d:%s", uid, formatDate(date));
    }

    public static void main(String[] args) {
        UserSignDemo demo = new UserSignDemo();
        LocalDate today = LocalDate.now();

        { // doSign
            boolean signed = demo.doSign(1000, today);
            if (signed) {
                System.out.println("您已簽到:" + formatDate(today, "yyyy-MM-dd"));
            } else {
                System.out.println("簽到完成:" + formatDate(today, "yyyy-MM-dd"));
            }
        }

        { // checkSign
            boolean signed = demo.checkSign(1000, today);
            if (signed) {
                System.out.println("您已簽到:" + formatDate(today, "yyyy-MM-dd"));
            } else {
                System.out.println("尚未簽到:" + formatDate(today, "yyyy-MM-dd"));
            }
        }

        { // getSignCount
            long count = demo.getSignCount(1000, today);
            System.out.println("本月簽到次數(shù):" + count);
        }

        { // getContinuousSignCount
            long count = demo.getContinuousSignCount(1000, today);
            System.out.println("連續(xù)簽到次數(shù):" + count);
        }

        { // getFirstSignDate
            LocalDate date = demo.getFirstSignDate(1000, today);
            System.out.println("本月首次簽到:" + formatDate(date, "yyyy-MM-dd"));
        }

        { // getSignInfo
            System.out.println("當(dāng)月簽到情況:");
            MapString, Boolean> signInfo = new TreeMap>(demo.getSignInfo(1000, today));
            for (Map.EntryString, Boolean> entry : signInfo.entrySet()) {
                System.out.println(entry.getKey() + ": " + (entry.getValue() ? "√" : "-"));
            }
        }
    }

}

運(yùn)行結(jié)果

您已簽到:2019-02-18
您已簽到:2019-02-18
本月簽到次數(shù):11
連續(xù)簽到次數(shù):8
本月首次簽到:2019-02-02
當(dāng)月簽到情況:
2019-02-01: -
2019-02-02: √
2019-02-03: √
2019-02-04: -
2019-02-05: -
2019-02-06: √
2019-02-07: -
2019-02-08: -
2019-02-09: -
2019-02-10: -
2019-02-11: √
2019-02-12: √
2019-02-13: √
2019-02-14: √
2019-02-15: √
2019-02-16: √
2019-02-17: √
2019-02-18: √
2019-02-19: -
2019-02-20: -
2019-02-21: -
2019-02-22: -
2019-02-23: -
2019-02-24: -
2019-02-25: -
2019-02-26: -
2019-02-27: -
2019-02-28: -

參考鏈接

Redis 命令參考

Redis 深度歷險(xiǎn):核心原理與應(yīng)用實(shí)踐

到此這篇關(guān)于基于Redis位圖實(shí)現(xiàn)用戶簽到功能的文章就介紹到這了,更多相關(guān)Redis用戶簽到內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 基于Redis位圖實(shí)現(xiàn)系統(tǒng)用戶登錄統(tǒng)計(jì)
  • PHP使用redis位圖bitMap 實(shí)現(xiàn)簽到功能
  • Redis精確去重計(jì)數(shù)方法(咆哮位圖)
  • redis通過位圖法記錄在線用戶的狀態(tài)詳解
  • java redis 實(shí)現(xiàn)簡(jiǎn)單的用戶簽到功能

標(biāo)簽:北京 臺(tái)州 楊凌 江蘇 朝陽 果洛 大慶 吉安

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《基于Redis位圖實(shí)現(xiàn)用戶簽到功能》,本文關(guān)鍵詞  基于,Redis,位圖,實(shí)現(xiàn),用戶,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《基于Redis位圖實(shí)現(xiàn)用戶簽到功能》相關(guān)的同類信息!
  • 本頁收集關(guān)于基于Redis位圖實(shí)現(xiàn)用戶簽到功能的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    日韩成人免费在线视频| 亚洲国产一区二区精品视频 | 天天干,夜夜爽| 亚洲va韩国va欧美va| 久操成人在线视频| 37pao成人国产永久免费视频| 麻豆精品久久久久久久99蜜桃| 国产精品美女一区二区三区| 日韩在线小视频| 91精品国产吴梦梦| 天堂网av手机版| 国产精品传媒视频| 欧洲日韩成人av| 午夜诱惑痒痒网| 蜜臀久久99精品久久久画质超高清| 欧美巨大另类极品videosbest| 超碰97网站| jizzjizzjizz国产| 国产色一区二区| 国产69精品99久久久久久宅男| 成人免费无码av| 国产 欧美 自拍| 欧美一级精品在线| 在线观看日韩片| 欧美成人一区二区三区四区| 午夜精品在线看| 亚洲最大av网| 久草网站在线观看| 亚洲精品日日夜夜| 亚洲在线一区二区| 久久久久久久久久97| 国产精品天天摸av网| 国产97在线亚洲| 精品无码一区二区三区| 91视频国产资源| 97视频免费看| 人妻无码一区二区三区| 久久久久久久久99精品| 国产成人精品一区二区在线| 自拍偷拍视频亚洲| 国产精品日产欧美久久久久| 国产精品最新在线观看| 99鲁鲁精品一区二区三区| 亚洲欧美日本在线| 翡翠波斯猫1977年美国| 国产午夜视频在线播放| 欧美日韩在线看| 亚洲三区四区| 天堂中文在线资源| 久久精品国产亚洲精品| av不卡中文字幕| av资源网一区| 国产精品欧美一区二区| 亚洲欧美一区二区三区四区五区| 欧美视频在线观看免费网址| 亚洲一卡二卡三卡| 性猛交富婆╳xxx乱大交天津| 亚洲国产女人aaa毛片在线| 麻豆av免费在线| 国产精品88888| 国产精品老牛影院在线观看| 国产真实的和子乱拍在线观看| 一本色道亚洲精品aⅴ| 成人手机视频在线| 丝袜国产日韩另类美女| 欧美美最猛性xxxxxx| 91网站免费视频| 午夜欧美2019年伦理| 亚洲精品乱码视频| 日韩国产欧美在线视频| 97精品一区二区三区| 最新黄色av网址| 欧美在线你懂的| 国产极品粉嫩福利姬萌白酱| 丁香六月综合激情| 亚洲va国产va天堂va久久| 日本一本在线观看| 国产亚洲人成a一在线v站| 日韩在线一区视频| 中文字幕一区二区三区在线不卡 | 久久av一区二区三区亚洲| 在线播放精品视频| 综合久久五月天| 亚洲精品成人无码| 欧美午夜理伦三级在线观看| 成人免费视频久久| 国产精品三级电影| 中文字幕av日韩精品| 久久99精品网久久| 国产欧美日韩中文| 国产日韩免费视频| 久久久久久亚洲| 日本一区二区免费在线观看| 亚洲精品小视频在线观看| aa片在线观看视频在线播放| 一本色道久久综合狠狠躁的推荐 | 不要播放器的av网站| 99精品国产视频| 精品久久久久亚洲| 蜜臂av日日欢夜夜爽一区| 国产欧美在线播放| 五月天丁香社区| 亚洲白拍色综合图区| 亚洲国产日韩一区二区| 日韩精品久久一区| 性少妇xx生活| 国产精品 欧美精品| 欧美日韩精品专区| 日本一区二区三区四区在线视频| 欧美成人一区二区三区电影| 中文字幕5566| 亚洲国产精品天堂| 国产综合第一页| 在线观看免费视频黄| 四虎永久免费在线| 国产午夜精品久久久久久久| 亚洲人成网在线播放| 日韩成人在线视频| 亚洲自拍偷拍第一页| 午夜黄色小视频| 欧美日韩亚洲综合在线| 日本在线高清视频一区| 亚洲国产无线乱码在线观看| 国产美女明星三级做爰| 91麻豆精品91久久久久同性| 97国产在线视频| 少妇特黄一区二区三区| 亚洲久久久久久久久久| 在线国产视频一区| 久久人人爽人人| 免费成人在线视频观看| 日韩精品久久一区| 国产精品一区二区果冻传媒| 凸凹人妻人人澡人人添| 亚洲日本中文字幕| 波多野结衣家庭教师| 性欧美在线看片a免费观看| 成人毛片视频免费看| 日韩小视频在线播放| 精品久久国产字幕高潮| www.涩涩爱| 678五月天丁香亚洲综合网| 熟女视频一区二区三区| 天天综合在线视频| 国产成人精品一区二区在线| 粉色视频免费看| www.黄色一片| 水蜜桃亚洲一二三四在线| 日韩一级片免费看| 国产精品视频午夜| 久久久久国产精品一区三寸| 精品一区二区三区香蕉蜜桃| 国产在线观看一区二区三区| 成人激情四射网| 国产精品h视频| 日韩成人av网址| 久久久蜜桃一区二区人| 久久久久久久久久毛片| 在线观看中文字幕亚洲| 日韩欧美综合视频| 一区二区免费看| 久久精品国产精品亚洲色婷婷| 一区免费观看视频| 特色特色大片在线| 久久精品国产亚洲av香蕉| 欧洲精品中文字幕| 性生活视频软件| 国产成人精品免费视频大全最热| 少妇精品视频一区二区| 欧美一区观看| 中文字幕a级片| 亚洲欧美电影院| 久久久久久久久福利| 91精品国产网站| 日本韩国欧美三级| 久久久亚洲欧洲日产国码αv| 欧美激情一区二区三区免费观看 | 日本精品视频在线播放| 91黑人精品一区二区三区| 日韩av一区在线观看| av在线com| 国产精品99久久免费黑人人妻| 日韩成人av在线| 国产在线观看一区二区| 亚洲一一在线| 欧美日韩成人在线| 天天干天天摸天天操| 欧美日韩午夜剧场| 伊人久久久久久久久久久久久久| 亚洲香蕉伊综合在人在线视看| 国产黄色片网站| 国产一区二区三区播放| 欧美三级一区二区| 波多野结衣免费观看| 香蕉成人啪国产精品视频综合网 | 黄色一级片网址| 91麻豆国产视频| 国产综合在线观看视频| 久久青草国产手机看片福利盒子 | 麻豆成人免费电影| 成人观看免费完整观看| 中文字幕av资源一区| 亚洲成人网上| 日韩亚洲欧美在线观看| 国内精品自线一区二区三区视频| 在线观看国产成人| 免费一级全黄少妇性色生活片| 国产123在线| 亚洲成人精品视频在线观看| 亚洲在线视频免费观看| 北条麻妃在线观看视频| 久久精品视频中文字幕| 久久精品人人做人人爽人人| 三级网站在线免费观看| 久久草视频在线看| 久久精品综合| 中文字幕色一区二区| 欧美三级xxx| 久久久精品成人| 欧美一区二区视频97| 日韩欧美在线网址| 成人久久视频在线观看| 久久成人国产精品入口| 日韩欧美成人网| 国产麻豆成人精品| 中国精品一区二区| 国内免费精品视频| 中文字幕一区二区三区波野结| 久久综合九色综合88i| 91精品视频观看| 久久久亚洲影院你懂的| 久久免费的精品国产v∧| 中文字幕视频网| 国产www免费| 久久久久久久久久久久久久久久久久av| 国产精品成人在线观看| 国偷自拍第113页| 国产在线精品成人一区二区三区| 婷婷在线免费观看| 亚洲第一成年人网站| jjzzjjzz欧美69巨大| 不卡一卡2卡3卡4卡精品在| 在线看日韩欧美| 欧美日本韩国一区二区三区视频 | 欧美黄色性生活| 日本不卡高清视频一区| 国产精品毛片a∨一区二区三区|国| 亚洲日本成人女熟在线观看| 亚洲深夜福利视频| 国产精品91在线| 国产视频一区二区三区四区| 鲁鲁狠狠狠7777一区二区| 欧美黑人性猛交| 夜夜夜精品看看| 午夜老司机福利| 黄色激情在线观看| 蜜桃久久影院| 在线观看免费亚洲| 无码人妻精品一区二区三区9厂| 精品国产区在线| 精品国产三级a在线观看| 热久久一区二区| 99re久久精品国产| 麻豆av一区二区三区久久| 亚洲在线视频观看| 亚洲一区二区免费| 制服丝袜中文字幕一区| 米奇777在线欧美播放| 久久国产精品系列| 九九九久久久久久久| 免费激情视频在线观看| 青草视频在线观看视频| 国产91精品黑色丝袜高跟鞋| 最近2019年手机中文字幕| 91在线视频免费91| 少妇喷水在线观看| 日本少妇高清视频| 法国空姐在线观看免费| 国产日产亚洲精品系列| 婷婷在线精品视频| 男人操女人下面视频| 欧美日韩中文字幕在线播放| 米奇精品一区二区三区在线观看| 久久精品免费观看| 精品国产一区二区三区四| 国产精品视频分类| 成人在线视频福利| 欧美日韩国产另类一区| 欧美日韩国产精品一区二区三区| 久久riav二区三区| 黄色成人在线免费| 免费看欧美女人艹b| 可以免费看的av毛片| 在线视频一二区| 91深夜福利视频| 欧美成人三级在线| 亚洲欧洲日产国码二区| 欧美在线免费视屏| 成人淫片在线看| 欧美日韩大片一区二区三区 | 国产99对白在线播放| 亚洲天堂av中文字幕| 一本久道中文无码字幕av| 久久亚洲私人国产精品va| 欧美亚洲国产怡红院影院| 日韩欧美一区二区三区在线| 精品久久一区二区三区| 久久九九有精品国产23| 欧美xxxx做受欧美.88| 精品日韩美女| 久久成人小视频| 国产一区二区视频在线播放| 日韩精品一区二区三区视频在线观看| 国产免费一区| 肉色超薄丝袜脚交69xx图片| 在线视频欧美亚洲| 久久精选视频| 一区二区三区在线播| 欧美激情一区二区在线| 黄色精品一区二区| 欧美黄网免费在线观看| 欧美日韩日本网| 91亚洲一区二区| 中文字幕人妻一区二区三区| 任你躁av一区二区三区| 国产视频精品免费| www久久久久| 亚洲激情中文字幕| 日韩在线视频观看| 欧美日韩一区在线视频| 国产又黄又嫩又滑又白| 五月婷婷六月色| 99麻豆久久久国产精品免费| 蜜桃视频污在线观看| 亚洲精品免费视频| 中文字幕一区电影| 欧美精品国产精品久久久 | 欧美性视频在线| 亚洲成人天堂网| 久久久久精彩视频| 一区二区免费视频| 日韩精品视频在线播放| 91午夜理伦私人影院| 成年人午夜免费视频| 日韩av无码中文字幕| 久久午夜老司机| 欧美激情亚洲激情| 91wwwcom在线观看| 久久99精品久久久久久秒播放器| 狠狠干视频网站| 天天看片天天操| 亚洲欧美自拍视频| 国产精品一区二区三区网站| 色综合久久久久综合| 国产激情一区二区三区在线观看| 日韩激情小视频| 国产精品久久久久一区| 五月天一区二区| 91久久嫩草影院一区二区| 男男做爰猛烈叫床爽爽小说 | 激情成人开心网| www三级免费| 亚洲女女做受ⅹxx高潮| 欧美高清视频在线| 国产免费一区二区| 国产精品男女视频| 亚洲午夜久久久久久久久久久| 亚洲欧美日韩爽爽影院| 国产99在线免费| 日韩男人的天堂| www久久精品| 亚洲午夜女主播在线直播| 在线国产99| 无码精品人妻一区二区| 久久69精品久久久久久久电影好 | 日日夜夜综合网| 99在线精品一区二区三区| 伊人久久久久久久久久| 五月天在线免费视频| 国产乱叫456在线| 日韩情涩欧美日韩视频| 91久久精品一区二区别| 日韩免费成人av| 久久男人中文字幕资源站| 久久91精品国产| 久久久精品麻豆| 久久精品国产秦先生| 日韩在线一区二区三区免费视频| 久久久久免费精品| 黑人巨大精品欧美黑白配亚洲| 91精品久久久久久久久久久久久| 神马久久久久久久久久久| 国产成人综合视频| 91欧美精品成人综合在线观看| 青青草华人在线视频| 日韩午夜在线观看| 裸体武打性艳史| 色999日韩欧美国产| 国产精品女同一区二区| 国产精品视频色| 四虎在线视频免费观看| 欧美理论片在线观看| 99久久久无码国产精品衣服| 国产精品国产馆在线真实露脸| 热这里只有精品| 国产精品18久久久| 国产主播在线一区| 免费精品视频在线| 91影视免费在线观看| www.五月婷婷.com|