Springboot集積redis哨兵
redisはキャッシュミドルウェアとして、データアクセスが頻繁なシーンで開発者に人気があり、従来のredisはいずれも単例モードであるが、単例は問題が発生しやすく、保障されず、現在市販されているのは主に2つのモードがある.哨兵モードsentinel クラスタモードcluster 本文はredisの歩哨モードを再说してまずredisのxmlファイルを配置して、springbootはxmlを使わないことができますが、个人はxmlの见たところ更に简洁明瞭に本文の前提はdisconfを配置する必要があると思って、redis sentinelの関连する配置は私はすべてdisconfの上で置いて、disconfの文章はspringbootがdisconfを统合することを见ます
そしてredis構成をインポート
そしてこのutilを実現するツールクラスを書きます
もちろんロードの重要な依存を忘れないでください、私の依存を見てください
次に例を書きます
注意cacheUtilSmaugServerは事前に注入する必要がありますよ
そして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;