Springboot集積redis哨兵


redisはキャッシュミドルウェアとして、データアクセスが頻繁なシーンで開発者に人気があり、従来のredisはいずれも単例モードであるが、単例は問題が発生しやすく、保障されず、現在市販されているのは主に2つのモードがある.
  • 哨兵モードsentinel
  • クラスタモードcluster
  • 本文はredisの歩哨モードを再说してまずredisのxmlファイルを配置して、springbootはxmlを使わないことができますが、个人はxmlの见たところ更に简洁明瞭に本文の前提はdisconfを配置する必要があると思って、redis sentinelの関连する配置は私はすべてdisconfの上で置いて、disconfの文章はspringbootがdisconfを统合することを见ます
    そしてredis構成をインポート
    
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:aop="http://www.springframework.org/schema/aop"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop.xsd">
    
        <aop:aspectj-autoproxy proxy-target-class="true"/>
    
        
        <bean id="disconfMgrBean" class="com.baidu.disconf.client.DisconfMgrBean"
              destroy-method="destroy">
            <property name="scanPackage" value="suamg.service"/>
        bean>
        <bean id="disconfMgrBean2" class="com.baidu.disconf.client.DisconfMgrBeanSecond"
              init-method="init" destroy-method="destroy">
        bean>
    
        <bean id="configproperties_disconf"
              class="com.baidu.disconf.client.addons.properties.ReloadablePropertiesFactoryBean">
            <property name="locations">
                <list>
                    <value>smaug_application.propertiesvalue>
                    <value>smaug_redis.propertiesvalue>
                list>
            property>
        bean>
    
        <bean id="propertyConfigurer"
              class="com.baidu.disconf.client.addons.properties.ReloadingPropertyPlaceholderConfigurer">
            <property name="ignoreResourceNotFound" value="true"/>
            <property name="ignoreUnresolvablePlaceholders" value="true"/>
            <property name="propertiesArray">
                <list>
                    <ref bean="configproperties_disconf"/>
                list>
            property>
        bean>
        
    beans>```
    
    package smaug.util.cache;
    
    /**
     * Created by naonao on 17/8/20.
     */
    public interface CacheUtil {
        /**
         *        
         * */
        long defaultExpiredSeconds = 300;
    
        /**
         * redis    
         * */
        String lockPrefix = "lock:";
    
        /**
         * get
         * @param key
         * @return
         */
        String get(String key);
    }
    

    そしてこのutilを実現するツールクラスを書きます
    package smaug.util.cache;
    
    import lombok.Setter;
    import org.springframework.data.redis.core.StringRedisTemplate;
    import org.springframework.retry.RetryContext;
    import org.springframework.retry.support.RetryTemplate;
    import smaug.util.json.JsonUtil;
    
    /**
     * Created by naonao on 17/8/20.
     */
    @Setter
    public class RedisTemplateUtil implements CacheUtil {
        private static final JsonUtil jsonUtil = new JsonUtil();
    
    
        private StringRedisTemplate stringRedisTemplate;
        private RetryTemplate retryTemplate;
    
        @Override
        public String get(String key) {
            String result = retryTemplate.execute(
                    (RetryContext context) -> {
                        return stringRedisTemplate.opsForValue().get(key);
                    },
                    context -> {
                        return stringRedisTemplate.opsForValue().get(key);
                    }
            );
            return result;
        }
    }

    もちろんロードの重要な依存を忘れないでください、私の依存を見てください
    dependencies {
            compile 'org.springframework.boot:spring-boot-starter:1.5.2.RELEASE'
            compile 'com.alibaba:dubbo:2.8.5-SNAPSHOT'
            compile "org.springframework.boot:spring-boot-starter-jersey:1.5.1.RELEASE"
            compile "com.baidu.disconf:disconf-client:2.6.36"
            compile 'mysql:mysql-connector-java:6.0.6'
            compile 'org.mybatis.generator:mybatis-generator-core:1.3.5'
            compile "com.101tec:zkclient:0.8.1"
            compile 'org.apache.zookeeper:zookeeper:3.4.8'
            compile 'org.projectlombok:lombok:1.16.8'
            compile 'org.springframework:spring-core:4.2.5.RELEASE'
            compile 'org.springframework:spring-context-support:4.2.5.RELEASE'
            compile 'org.springframework:spring-beans:4.2.5.RELEASE'
            compile 'org.springframework:spring-oxm:4.2.5.RELEASE'
            compile "org.springframework:spring-jms:4.2.5.RELEASE"
            compile 'org.springframework.retry:spring-retry:1.1.2.RELEASE'
            compile 'org.springframework:spring-context:4.2.5.RELEASE'
            compile 'org.springframework.data:spring-data-commons-core:1.9.2.RELEASE'
            compile 'org.slf4j:slf4j-api:1.7.15'
            compile 'org.apache.logging.log4j:log4j-slf4j-impl:2.5'
            compile 'org.apache.logging.log4j:log4j-core:2.5'
    
            compile 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.8.9'
    
            compile 'org.springframework.boot:spring-boot-starter-redis:1.4.3.RELEASE'
    
            compile 'org.springframework.boot:spring-boot-starter-data-redis:1.5.4.RELEASE'
    
            testCompile "junit:junit:4.12"
            testCompile 'com.googlecode.thread-weaver:threadweaver:0.2'
    
        }

    次に例を書きます
    public ShopRestItem getShopDetail(int shopId, String shopName) {
            Map<String, Object> map = new HashMap<>();
            map.put("shopId", shopId);
            map.put("shopName", shopName);
            ShopEntity entity= shopEntityMapper.selectShopEntity(map);
            String s = cacheUtilSmaugServer.get("mall:order:detail:1026338");
            ShopRestItem item = new ShopRestItem();
            item.setMShopId(entity.getShopid());
            item.setShopName(entity.getShopname());
            return item;
        }

    注意cacheUtilSmaugServerは事前に注入する必要がありますよ
    
        @Resource(name = "cacheUtilSmaugServer")
        protected CacheUtil cacheUtilSmaugServer;