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

Spring Boot :Redis 多模式 + 多客戶端兼容配置指南(附完整代碼)

數(shù)據(jù)庫(kù) Redis
在實(shí)際項(xiàng)目開(kāi)發(fā)中,Redis的部署模式往往因環(huán)境而異:開(kāi)發(fā)環(huán)境用單機(jī)版(輕量化)、測(cè)試環(huán)境用哨兵模式(高可用驗(yàn)證)、生產(chǎn)環(huán)境用集群模式(高可用 + 高并發(fā));同時(shí),不同團(tuán)隊(duì)對(duì)Redis客戶端的選擇也存在差異(Jedis輕量直觀,Lettuce非阻塞高性能)。

引言

在實(shí)際項(xiàng)目開(kāi)發(fā)中,Redis的部署模式往往因環(huán)境而異:開(kāi)發(fā)環(huán)境用單機(jī)版(輕量化)、測(cè)試環(huán)境用哨兵模式(高可用驗(yàn)證)、生產(chǎn)環(huán)境用集群模式(高可用 + 高并發(fā));同時(shí),不同團(tuán)隊(duì)對(duì)Redis客戶端的選擇也存在差異(Jedis輕量直觀,Lettuce非阻塞高性能)。

Redis 三大部署模式

部署模式

適用場(chǎng)景

核心特點(diǎn)

單機(jī)模式

開(kāi)發(fā) / 本地測(cè)試

單實(shí)例,無(wú)高可用,配置簡(jiǎn)單

哨兵模式(Sentinel

測(cè)試環(huán)境 / 中小流量生產(chǎn)

1 主 N 從 + 哨兵節(jié)點(diǎn),自動(dòng)故障轉(zhuǎn)移,保障高可用

集群模式(Cluster

高并發(fā)生產(chǎn)環(huán)境

多主多從,數(shù)據(jù)分片存儲(chǔ),支持水平擴(kuò)展

主流客戶端

  • Jedis:基于阻塞IO實(shí)現(xiàn),API直觀,適合簡(jiǎn)單場(chǎng)景;需通過(guò)連接池管理連接,避免頻繁創(chuàng)建銷毀。
  • Lettuce:基于Netty非阻塞IO實(shí)現(xiàn),線程安全,支持異步操作,性能更優(yōu);Spring Boot 2.x后默認(rèn)使用。

實(shí)現(xiàn)方案

依賴配置

<!-- Spring Data Redis核心依賴 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <!-- 排除默認(rèn)Lettuce(若需保留Lettuce,可刪除此exclusion) -->
    <exclusions>
        <exclusion>
            <groupId>io.lettuce</groupId>
            <artifactId>lettuce-core</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 1. 引入Jedis客戶端(若用Lettuce,無(wú)需此依賴,恢復(fù)上方Lettuce即可) -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
</dependency>

<!-- 2. 連接池依賴(Jedis和Lettuce均需) -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

<!-- 3. JSON序列化依賴(用于RedisTemplate存儲(chǔ)對(duì)象) -->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
</dependency>

配置文件

spring:
  redis:
    # 1. 核心切換參數(shù)
    client-type: jedis          # 客戶端類型:jedis / lettuce
    mode: standalone            # 部署模式:standalone(單機(jī)) / cluster(集群) / sentinel(哨兵)
    password: your-redis-pwd    # Redis密碼(可選,所有模式共用)
    timeout: 5000ms             # 連接超時(shí)時(shí)間(毫秒)

    # 2. Jedis連接池配置(client-type=jedis時(shí)生效)
    jedis:
      pool:
        max-active: 16          # 最大連接數(shù)(根據(jù)業(yè)務(wù)調(diào)整)
        max-idle: 8             # 最大空閑連接
        min-idle: 4             # 最小空閑連接
        max-wait: 3000ms        # 最大阻塞等待時(shí)間(-1表示無(wú)限制)

    # 3. Lettuce連接池配置(client-type=lettuce時(shí)生效,需注釋Jedis配置)
    # lettuce:
    #   pool:
    #     max-active: 16
    #     max-idle: 8
    #     min-idle: 4
    #     max-wait: 3000ms

    # 4. 單機(jī)模式配置(mode=standalone時(shí)生效)
    standalone:
      host: 192.168.1.100       # Redis單機(jī)IP
      port: 6379                # Redis單機(jī)端口(默認(rèn)6379,本文示例用20516)

    # 5. 集群模式配置(mode=cluster時(shí)生效)
    cluster:
      nodes:                    # 集群所有節(jié)點(diǎn)(IP:端口)
        - 134.188.194.30:20516
        - 134.188.194.32:20516
        - 134.188.194.30:20517
        - 134.188.194.32:20517
        - 134.188.194.30:20518
        - 134.188.194.32:20518
      max-redirects: 3          # 集群最大重定向次數(shù)(默認(rèn)3)

    # 6. 哨兵模式配置(mode=sentinel時(shí)生效)
    sentinel:
      master: mymaster          # 哨兵監(jiān)控的主節(jié)點(diǎn)名稱
      nodes:                    # 哨兵節(jié)點(diǎn)列表(IP:端口)
        - 134.188.194.30:26379
        - 134.188.194.32:26379

核心配置類

核心思路:利用 Spring 的@ConditionalOnProperty注解,根據(jù)client-typemode的取值,動(dòng)態(tài)激活對(duì)應(yīng)的配置Bean,最終統(tǒng)一返回RedisConnectionFactorySpring Data Redis 的核心連接接口),確保RedisTemplate無(wú)感知適配。

/**
 * Redis多模式(單機(jī)/集群/哨兵)與多客戶端(Jedis/Lettuce)兼容配置類
 */
@Configuration
public class RedisMultiModeConfig {

    // ======================== 1. 連接池配置(按客戶端區(qū)分) ========================
    /**
     * Jedis連接池配置(client-type=jedis時(shí)生效)
     */
    @Bean
    @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "jedis")
    @ConfigurationProperties(prefix = "spring.redis.jedis.pool")
    public JedisPoolConfig jedisPoolConfig() {
        return new JedisPoolConfig();
    }

    /**
     * Lettuce連接池配置(client-type=lettuce時(shí)生效)
     */
    @Bean
    @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "lettuce")
    @ConfigurationProperties(prefix = "spring.redis.lettuce.pool")
    public GenericObjectPoolConfig<?> lettucePoolConfig() {
        return new GenericObjectPoolConfig<>();
    }


    // ======================== 2. 單機(jī)模式配置 ========================
    @Configuration
    @ConditionalOnProperty(name = "spring.redis.mode", havingValue = "standalone", matchIfMissing = true)
    static class StandaloneSubConfig {
        /**
         * 單機(jī)模式基礎(chǔ)配置(IP、端口)
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.redis.standalone")
        public RedisStandaloneConfiguration standaloneConfig() {
            return new RedisStandaloneConfiguration();
        }

        /**
         * Jedis+單機(jī) 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "jedis")
        public RedisConnectionFactory jedisStandaloneConnFactory(
                RedisStandaloneConfiguration standaloneConfig, JedisPoolConfig poolConfig) {
            JedisConnectionFactory factory = new JedisConnectionFactory(standaloneConfig);
            factory.setPoolConfig(poolConfig); // 注入Jedis連接池
            factory.setPassword(standaloneConfig.getPassword()); // 注入密碼(若有)
            return factory;
        }

        /**
         * Lettuce+單機(jī) 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "lettuce")
        public RedisConnectionFactory lettuceStandaloneConnFactory(
                RedisStandaloneConfiguration standaloneConfig, GenericObjectPoolConfig<?> poolConfig) {
            LettuceConnectionFactory factory = new LettuceConnectionFactory(standaloneConfig);
            factory.setPoolConfig(poolConfig); // 注入Lettuce連接池
            factory.setPassword(standaloneConfig.getPassword());
            return factory;
        }
    }


    // ======================== 3. 集群模式配置 ========================
    @Configuration
    @ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")
    static class ClusterSubConfig {
        /**
         * 集群模式基礎(chǔ)配置(節(jié)點(diǎn)列表、重定向次數(shù))
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.redis.cluster")
        public RedisClusterConfiguration clusterConfig() {
            return new RedisClusterConfiguration();
        }

        /**
         * Jedis+集群 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "jedis")
        public RedisConnectionFactory jedisClusterConnFactory(
                RedisClusterConfiguration clusterConfig, JedisPoolConfig poolConfig) {
            JedisConnectionFactory factory = new JedisConnectionFactory(clusterConfig);
            factory.setPoolConfig(poolConfig);
            factory.setPassword(clusterConfig.getPassword());
            return factory;
        }

        /**
         * Lettuce+集群 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "lettuce")
        public RedisConnectionFactory lettuceClusterConnFactory(
                RedisClusterConfiguration clusterConfig, GenericObjectPoolConfig<?> poolConfig) {
            LettuceConnectionFactory factory = new LettuceConnectionFactory(clusterConfig);
            factory.setPoolConfig(poolConfig);
            factory.setPassword(clusterConfig.getPassword());
            return factory;
        }
    }


    // ======================== 4. 哨兵模式配置 ========================
    @Configuration
    @ConditionalOnProperty(name = "spring.redis.mode", havingValue = "sentinel")
    static class SentinelSubConfig {
        /**
         * 哨兵模式基礎(chǔ)配置(主節(jié)點(diǎn)名稱、哨兵節(jié)點(diǎn)列表)
         */
        @Bean
        @ConfigurationProperties(prefix = "spring.redis.sentinel")
        public RedisSentinelConfiguration sentinelConfig() {
            return new RedisSentinelConfiguration();
        }

        /**
         * Jedis+哨兵 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "jedis")
        public RedisConnectionFactory jedisSentinelConnFactory(
                RedisSentinelConfiguration sentinelConfig, JedisPoolConfig poolConfig) {
            JedisConnectionFactory factory = new JedisConnectionFactory(sentinelConfig);
            factory.setPoolConfig(poolConfig);
            factory.setPassword(sentinelConfig.getPassword());
            return factory;
        }

        /**
         * Lettuce+哨兵 連接工廠
         */
        @Bean
        @ConditionalOnProperty(name = "spring.redis.client-type", havingValue = "lettuce")
        public RedisConnectionFactory lettuceSentinelConnFactory(
                RedisSentinelConfiguration sentinelConfig, GenericObjectPoolConfig<?> poolConfig) {
            LettuceConnectionFactory factory = new LettuceConnectionFactory(sentinelConfig);
            factory.setPoolConfig(poolConfig);
            factory.setPassword(sentinelConfig.getPassword());
            return factory;
        }
    }


    // ======================== 5. 通用RedisTemplate配置(所有模式共用) ========================
    /**
     * 自定義RedisTemplate,統(tǒng)一序列化方式(避免默認(rèn)JDK序列化的亂碼問(wèn)題)
     */
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(connectionFactory);

        // 1. Key序列化:String類型(直觀,便于Redis客戶端查看)
        StringRedisSerializer keySerializer = new StringRedisSerializer();
        template.setKeySerializer(keySerializer);
        template.setHashKeySerializer(keySerializer);

        // 2. Value序列化:JSON格式(支持對(duì)象存儲(chǔ),保留類型信息)
        GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();
        template.setValueSerializer(valueSerializer);
        template.setHashValueSerializer(valueSerializer);

        // 3. 初始化模板
        template.afterPropertiesSet();
        return template;
    }
}
  • 條件注解@ConditionalOnProperty:通過(guò)namehavingValue指定生效條件,例如@ConditionalOnProperty(name = "spring.redis.mode", havingValue = "cluster")表示僅當(dāng)mode=cluster時(shí),該配置類才會(huì)被加載。
  • 配置綁定@ConfigurationProperties:自動(dòng)將application.yml中指定前綴的參數(shù)綁定到Bean的屬性中(如prefix = "spring.redis.jedis.pool"綁定到JedisPoolConfig),避免硬編碼。
  • 統(tǒng)一接口RedisConnectionFactory:無(wú)論哪種模式 / 客戶端,最終都返回RedisConnectionFactory,確保RedisTemplate無(wú)需修改即可適配。

業(yè)務(wù)代碼使用

/**
 * Redis業(yè)務(wù)操作工具類(所有模式共用)
 */
@Service
public class RedisService {

    // 注入配置類中自定義的RedisTemplate
    @Resource
    private RedisTemplate<String, Object> redisTemplate;

    // ======================== 基礎(chǔ)操作示例 ========================
    /**
     * 存儲(chǔ)鍵值對(duì)(無(wú)過(guò)期時(shí)間)
     */
    public void set(String key, Object value) {
        redisTemplate.opsForValue().set(key, value);
    }

    /**
     * 存儲(chǔ)鍵值對(duì)(帶過(guò)期時(shí)間)
     */
    public void setWithExpire(String key, Object value, long timeout, TimeUnit unit) {
        redisTemplate.opsForValue().set(key, value, timeout, unit);
    }

    /**
     * 根據(jù)鍵獲取值
     */
    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    /**
     * 根據(jù)鍵刪除值
     */
    public Boolean delete(String key) {
        return redisTemplate.delete(key);
    }

    // 更多操作(如Hash、List、Set等)可按需擴(kuò)展
}

容器化部署動(dòng)態(tài)切換

若項(xiàng)目采用Docker/K8s部署,可通過(guò)環(huán)境變量動(dòng)態(tài)注入配置,無(wú)需修改配置文件:

# 示例:Docker啟動(dòng)時(shí)指定“Jedis+集群”模式
docker run -d \
  -e SPRING_REDIS_CLIENT-TYPE=jedis \
  -e SPRING_REDIS_MODE=cluster \
  -e SPRING_REDIS_PASSWORD=your-pwd \
  -e SPRING_REDIS_CLUSTER_NODES=134.188.194.30:20516,134.188.194.32:20516 \
  your-app-image:latest


責(zé)任編輯:武曉燕 來(lái)源: 一安未來(lái)
相關(guān)推薦

2010-03-18 17:47:07

Java 多客戶端通信

2010-04-21 12:57:33

RAC負(fù)載均衡配置

2011-03-24 13:00:31

配置nagios客戶端

2024-10-16 08:51:57

2013-01-05 11:30:55

FacebookFacebook客戶端

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2014-08-11 16:35:35

KafkaJava客戶端

2011-08-17 16:50:54

2010-12-31 14:23:57

Exchange Se

2010-04-08 15:35:13

Oracle 簡(jiǎn)易客戶

2011-10-19 10:23:18

InstantbirdIM客戶端

2010-03-18 16:49:43

Java Socket

2017-01-11 10:38:17

MySQL客戶端代碼

2011-02-21 09:06:19

LinuxEmail配置

2011-03-29 14:44:44

Zabbix安裝

2010-05-31 15:55:42

2011-08-17 10:10:59

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2025-11-11 07:20:00

SpringBoot架構(gòu)監(jiān)控埋點(diǎn)
點(diǎn)贊
收藏

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

欧美中文字幕在线观看视频| 国产精品久久久久久久电影| 中文字幕一区二区人妻电影丶| 瑟瑟视频在线看| 国产日本欧美一区二区| 成人写真视频福利网| 免费在线观看黄视频| 啪啪亚洲精品| 日韩欧美另类在线| 无码无遮挡又大又爽又黄的视频| 精品麻豆一区二区三区| 成人黄色网址在线观看| 国产精品久久久久久av下载红粉| 青青草激情视频| 国产一区二区三区四区五区| 精品免费日韩av| 日本免费观看网站| 91超碰在线免费| 国产精品久久久久7777按摩| 久久精品女人的天堂av| 国产男男gay体育生白袜| 日韩少妇视频| 久久久电影一区二区三区| 亚洲最大的成人网| 五月天中文字幕| 国产精品亚洲产品| 欧美激情女人20p| 啪啪一区二区三区| 欧美日韩123| 亚洲国语精品自产拍在线观看| 成人综合久久网| 欧美xxxx做受欧美护士| 欧美日韩国产精品一区二区三区四区 | 日本少妇一区| 狠狠躁18三区二区一区| 丁香色欲久久久久久综合网| 求av网址在线观看| 国产三区在线成人av| 麻豆精品蜜桃一区二区三区| 黄色片一区二区三区| 久久精品99国产精品| 国产91精品网站| 精品欧美一区二区三区免费观看| 国产综合视频| 欧美激情中文字幕在线| 欧美卡一卡二卡三| 最新国产精品久久久| 日韩一区二区三区在线播放| 在线观看免费黄色网址| blacked蜜桃精品一区| 亚洲欧美激情四射在线日| 手机在线成人av| 欧美精品国产白浆久久久久| 精品国产三级电影在线观看| 少妇精品无码一区二区| 视频一区日韩| 精品国产一区二区三区忘忧草| 中文字幕乱妇无码av在线| 天堂久久av| 欧美成人免费网站| 午夜不卡久久精品无码免费| 国产精品乱战久久久| 亚洲精品二三区| 三上悠亚影音先锋| 黑丝美女一区二区| 精品国产一区二区三区久久久| a级大片在线观看| 成人激情在线| 久久久精品999| 免费一级肉体全黄毛片| 亚洲精品美女91| 欧美在线视频一区二区| jizz国产在线| 国产又黄又大久久| 国产精品国产亚洲精品看不卡15| 日本精品999| 久久久不卡网国产精品一区| 亚洲精品在线视频观看| 在线三级电影| 欧美午夜丰满在线18影院| 无码少妇一区二区三区芒果| 四虎精品一区二区免费| 日韩欧美亚洲另类制服综合在线| 人妻av一区二区| 国产一区二区亚洲| 欧美成人免费全部| 91九色丨porny丨肉丝| 日韩高清在线一区| 97人人模人人爽视频一区二区| 你懂的网站在线| 国产网红主播福利一区二区| 自拍偷拍99| 美女搞黄视频在线观看| 精品视频一区三区九区| 第一页在线视频| 色棕色天天综合网| 久久99亚洲热视| 欧美熟妇一区二区| 欧美国产一区二区三区激情无套| 欧美大片在线看免费观看| 久久久精品视频网站| 国产福利91精品一区| 日本一区二区三区视频在线观看| 亚洲无线看天堂av| 色94色欧美sute亚洲线路二| 成年人性生活视频| 精品视频免费在线观看| 色综合视频网站| 中文字幕免费观看视频| 99视频精品免费视频| 五月天男人天堂| 亚洲成人不卡| 亚洲а∨天堂久久精品喷水 | 国产精品成人一区二区艾草| 欧美亚洲日本一区二区三区 | 欧美精品一卡二卡| 久久久久亚洲av无码专区桃色| 一区二区三区四区在线观看国产日韩| 亚洲欧美在线一区| 国模无码国产精品视频| 日韩精品免费专区| 国模精品娜娜一二三区| dj大片免费在线观看| 欧美中文字幕不卡| 韩国无码一区二区三区精品| 欧美精品午夜| 国产在线播放91| 波多野结衣在线网站| 精品毛片三在线观看| 潘金莲一级淫片aaaaa| 成人情趣视频| 全球成人中文在线| 四季av日韩精品一区| 亚洲精品成人天堂一二三| 国产乱女淫av麻豆国产| 国产影视精品一区二区三区| 538国产精品一区二区免费视频| 日韩av电影网| 国产不卡视频在线播放| 可以免费看的黄色网址| 亚洲精品伊人| www国产精品视频| 一道本无吗一区| 国产精品国产三级国产aⅴ无密码| 日韩在线xxx| 蜜桃一区二区三区| 欧洲精品久久久| 欧美91精品久久久久国产性生爱| 欧美日韩裸体免费视频| 五月天激情小说| 亚洲一区日本| 欧美资源一区| 国产精品4hu.www| 久久精品视频va| 99久久精品免费看国产交换| 亚洲精品久久久久久国产精华液| 日韩成人av免费| 欧美精品大片| 久久国产精品-国产精品| 麻豆视频在线看| 亚洲免费高清视频| 国产精品第6页| 最新国产精品久久精品| 韩国三级在线播放| 国内一区二区三区| 麻豆亚洲一区| www成人在线视频| xxxx性欧美| 国产夫妻在线观看| 精品福利在线观看| 中日韩精品一区二区三区| 免费成人av在线| 日韩精品一区二区三区电影| 给我免费播放日韩视频| 欧洲成人在线观看| 免费黄色网址在线观看| 欧美va亚洲va国产综合| 久久草视频在线| 国产三级欧美三级日产三级99| 中文字幕在线综合| 国内精品久久久久久久影视麻豆| 久久久婷婷一区二区三区不卡| 最新日韩三级| 欧美日韩不卡合集视频| 日韩av高清在线| 91超碰这里只有精品国产| 国产精品第108页| 国产农村妇女毛片精品久久麻豆| 午夜影院免费观看视频| 国产亚洲在线观看| 丰满女人性猛交| 亚洲资源网你懂的| 亚洲一区二区三区777| 男女羞羞在线观看| 久久久999精品免费| 少妇性bbb搡bbb爽爽爽欧美| 欧美日韩国产高清一区二区三区| 免费无码毛片一区二区app| 国产欧美一区二区三区沐欲| 日本天堂在线播放| 男女视频一区二区| av免费观看大全| 婷婷久久一区| 日本一区二区免费看| 亚洲va欧美va人人爽成人影院| 国产99视频在线观看| 青草青在线视频| 日韩中文字幕视频| 欧美拍拍视频| 精品国产91九色蝌蚪| 一本久道久久综合无码中文| 色天使久久综合网天天| 欧美成人片在线观看| 国产精品伦理一区二区| 一女三黑人理论片在线| 国产精品影音先锋| 天天干天天玩天天操| 视频一区欧美日韩| 免费看国产精品一二区视频| 国产精品中文| 国产精品爽爽ⅴa在线观看| 久草在线资源站手机版| 欧美日本国产在线| 超碰在线免费播放| 日韩在线一区二区三区免费视频| 九色蝌蚪在线| 亚洲美女视频网站| 完全免费av在线播放| 亚洲欧美在线x视频| 熟妇人妻av无码一区二区三区| 91精品国产91热久久久做人人| 黄色一区二区视频| 色婷婷香蕉在线一区二区| 日韩免费视频网站| 亚洲国产精品久久艾草纯爱| 超碰手机在线观看| 亚洲精品你懂的| 91无套直看片红桃在线观看| 国产日韩欧美不卡在线| 亚洲av无码一区二区三区人| 久久欧美中文字幕| 女~淫辱の触手3d动漫| 91美女精品福利| 欧美高清性xxxx| 久久亚洲一级片| 成人国产精品久久久网站| 久久综合国产精品| 免费看污片网站| 久久久激情视频| 97人妻人人揉人人躁人人| 国产色综合一区| 亚洲黄色网址大全| 国产精品黄色在线观看| 欧美日韩色视频| 亚洲猫色日本管| 精品少妇一二三区| 精品国产91久久久久久老师| 偷偷操不一样的久久| 日韩欧美在线视频免费观看| 无码人妻aⅴ一区二区三区有奶水| 色婷婷精品久久二区二区蜜臀av| 亚洲精品毛片一区二区三区| 欧美日韩亚洲综合在线 | 国产一级黄色录像片| 好吊一区二区三区| 欧美国产亚洲一区| 日本特黄久久久高潮| 色18美女社区| 成年人国产精品| 日韩毛片无码永久免费看| 亚洲天堂久久久久久久| 久久久久久免费观看| 欧美日韩一区二区三区在线免费观看| 在线免费观看国产精品| 欧美精品免费视频| 五月婷婷深深爱| 上原亚衣av一区二区三区| 在线观看三级视频| 欧洲精品毛片网站| 99久久999| 久久国产主播精品| 日本久久综合| 精品国产av无码一区二区三区| 久久午夜av| 91欧美一区二区三区| 91在线一区二区三区| 日本黄区免费视频观看| 亚洲成va人在线观看| 中文字幕 国产精品| 日韩欧美一级在线播放| 国产裸舞福利在线视频合集| 欧美xxxx做受欧美| 电影一区二区三| 91九色蝌蚪成人| 国产亚洲一区二区三区啪| 超碰97在线看| 日本亚洲欧美天堂免费| 久久久久无码国产精品一区李宗瑞| 久久久久久一级片| 国产一级视频在线播放| 欧美日韩电影在线播放| 外国精品视频在线观看 | 女生影院久久| 成人性色av| 久久一区二区中文字幕| 97国产精东麻豆人妻电影 | 国产一区香蕉久久| 欧美人妖视频| 国产女教师bbwbbwbbw| 男人的天堂亚洲一区| 醉酒壮男gay强迫野外xx| 亚洲免费av在线| 一区二区视频免费| 亚洲欧美一区二区三区情侣bbw | 中文字幕一二三区| 国产精品美女一区二区| 综合网在线观看| 亚洲第一天堂av| av网址在线看| 国产女精品视频网站免费| 国产不卡一二三区| 久久久999免费视频| 不卡在线视频中文字幕| 欧美成人一二三区| 欧美唯美清纯偷拍| 可以直接在线观看的av| 57pao国产精品一区| 国产精品久av福利在线观看| 黄色一级片黄色| 国产美女精品在线| 秋霞欧美一区二区三区视频免费| 色域天天综合网| 日本一本草久在线中文| 韩日欧美一区二区| 国产美女撒尿一区二区| 2018中文字幕第一页| 国产成人av自拍| 国产十六处破外女视频| 欧美久久久久久久久| 最新电影电视剧在线观看免费观看| 日韩免费观看在线观看| 亚洲丝袜啪啪| 成人性做爰aaa片免费看不忠| 久久久不卡网国产精品二区| 一级做a爰片久久毛片| 亚洲免费成人av电影| 粉嫩一区二区| 日韩电影大全在线观看| 欧美aaaaaa午夜精品| 人人澡人人澡人人看| 91精品国产高清一区二区三区 | 国产伦精品免费视频| 色综合天天爱| 超碰中文字幕在线观看| 亚洲免费看黄网站| jlzzjlzz亚洲女人18| 久久久久久美女| 日韩三级视频| caoporn超碰97| 国产精品麻豆网站| 国产片在线播放| 欧美激情亚洲一区| 日韩欧美天堂| 免费在线观看的毛片| 国产精品素人视频| 国产草草影院ccyycom| 中文字幕欧美亚洲| 日本在线成人| 999在线观看视频| 国产欧美精品日韩区二区麻豆天美| 二区视频在线观看| 一区二区三区黄色| 国产精品亚洲四区在线观看| 91黄色在线看| 国产欧美一区二区三区网站| 国产三区在线播放| 91爱视频在线| 欧美大片aaaa| 最新版天堂资源在线| 91官网在线观看| 中文字幕中文字幕在线十八区| 国产精品视频福利| 午夜一区在线| 国产亚洲精品熟女国产成人| 91精品国产福利| 亚洲黄色免费看| 黄频视频在线观看| 99久久精品国产精品久久| 最近中文字幕av| 久久久久久久久久久亚洲| 欧美日韩国产在线观看网站| 日韩av成人网| 欧美主播一区二区三区| 国产蜜臀在线| 亚洲图片都市激情| 99精品热视频| 99产精品成人啪免费网站| 欧美资源在线观看| 91久久电影| 亚洲永久无码7777kkk|