Merge branch 'master' of github.com:redisson/redisson

pull/903/head
Nikita 8 years ago
commit 083065c332

@ -37,6 +37,7 @@ import org.redisson.connection.RedisClientEntry;
import io.netty.util.concurrent.Future; import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.FutureListener; import io.netty.util.concurrent.FutureListener;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -55,7 +56,7 @@ public class RedisNodes<N extends Node> implements NodesGroup<N> {
@Override @Override
public N getNode(String address) { public N getNode(String address) {
Collection<N> clients = (Collection<N>) connectionManager.getClients(); Collection<N> clients = (Collection<N>) connectionManager.getClients();
URI uri = URI.create(address); URI uri = URIBuilder.create(address);
InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort()); InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort());
for (N node : clients) { for (N node : clients) {
if (node.getAddr().equals(addr)) { if (node.getAddr().equals(addr)) {

@ -44,6 +44,7 @@ import io.netty.util.Timer;
import io.netty.util.concurrent.Future; import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.FutureListener; import io.netty.util.concurrent.FutureListener;
import io.netty.util.concurrent.GlobalEventExecutor; import io.netty.util.concurrent.GlobalEventExecutor;
import org.redisson.misc.URIBuilder;
/** /**
* Low-level Redis client * Low-level Redis client
@ -101,7 +102,7 @@ public class RedisClient {
*/ */
@Deprecated @Deprecated
public RedisClient(String address) { public RedisClient(String address) {
this(URI.create(address)); this(URIBuilder.create(address));
} }
/* /*

@ -26,6 +26,7 @@ import io.netty.channel.nio.NioEventLoopGroup;
import io.netty.channel.socket.SocketChannel; import io.netty.channel.socket.SocketChannel;
import io.netty.channel.socket.nio.NioSocketChannel; import io.netty.channel.socket.nio.NioSocketChannel;
import io.netty.util.Timer; import io.netty.util.Timer;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -56,11 +57,11 @@ public class RedisClientConfig {
private String sslKeystorePassword; private String sslKeystorePassword;
public RedisClientConfig setAddress(String host, int port) { public RedisClientConfig setAddress(String host, int port) {
this.address = URI.create("redis://" + host + ":" + port); this.address = URIBuilder.create("redis://" + host + ":" + port);
return this; return this;
} }
public RedisClientConfig setAddress(String address) { public RedisClientConfig setAddress(String address) {
this.address = URI.create(address); this.address = URIBuilder.create(address);
return this; return this;
} }
public RedisClientConfig setAddress(URI address) { public RedisClientConfig setAddress(URI address) {

@ -17,6 +17,7 @@ package org.redisson.client;
import java.net.InetSocketAddress; import java.net.InetSocketAddress;
import java.net.URI; import java.net.URI;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -27,12 +28,12 @@ public class RedisRedirectException extends RedisException {
private static final long serialVersionUID = 181505625075250011L; private static final long serialVersionUID = 181505625075250011L;
private int slot; private final int slot;
private URI url; private final URI url;
public RedisRedirectException(int slot, String url) { public RedisRedirectException(int slot, String url) {
this.slot = slot; this.slot = slot;
this.url = URI.create("//" + url); this.url = URIBuilder.create("//" + url);
} }
public int getSlot() { public int getSlot() {

@ -18,6 +18,7 @@ package org.redisson.cluster;
import java.net.URI; import java.net.URI;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -52,7 +53,7 @@ public class ClusterNodeInfo {
return address; return address;
} }
public void setAddress(String address) { public void setAddress(String address) {
this.address = URI.create(address); this.address = URIBuilder.create(address);
} }
public void addSlotRange(ClusterSlotRange range) { public void addSlotRange(ClusterSlotRange range) {

@ -18,6 +18,7 @@ package org.redisson.config;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -53,7 +54,7 @@ public class ClusterServersConfig extends BaseMasterSlaveServersConfig<ClusterSe
*/ */
public ClusterServersConfig addNodeAddress(String ... addresses) { public ClusterServersConfig addNodeAddress(String ... addresses) {
for (String address : addresses) { for (String address : addresses) {
nodeAddresses.add(URI.create(address)); nodeAddresses.add(URIBuilder.create(address));
} }
return this; return this;
} }

@ -18,6 +18,7 @@ package org.redisson.config;
import java.net.URI; import java.net.URI;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -60,7 +61,7 @@ public class MasterSlaveServersConfig extends BaseMasterSlaveServersConfig<Maste
*/ */
public MasterSlaveServersConfig setMasterAddress(String masterAddress) { public MasterSlaveServersConfig setMasterAddress(String masterAddress) {
if (masterAddress != null) { if (masterAddress != null) {
this.masterAddress = URI.create(masterAddress); this.masterAddress = URIBuilder.create(masterAddress);
} }
return this; return this;
} }
@ -85,7 +86,7 @@ public class MasterSlaveServersConfig extends BaseMasterSlaveServersConfig<Maste
*/ */
public MasterSlaveServersConfig addSlaveAddress(String ... addresses) { public MasterSlaveServersConfig addSlaveAddress(String ... addresses) {
for (String address : addresses) { for (String address : addresses) {
slaveAddresses.add(URI.create(address)); slaveAddresses.add(URIBuilder.create(address));
} }
return this; return this;
} }

@ -18,6 +18,7 @@ package org.redisson.config;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.redisson.misc.URIBuilder;
/** /**
* Configuration for an Azure Redis Cache or AWS ElastiCache servers. * Configuration for an Azure Redis Cache or AWS ElastiCache servers.
@ -61,7 +62,7 @@ public class ReplicatedServersConfig extends BaseMasterSlaveServersConfig<Replic
*/ */
public ReplicatedServersConfig addNodeAddress(String ... addresses) { public ReplicatedServersConfig addNodeAddress(String ... addresses) {
for (String address : addresses) { for (String address : addresses) {
nodeAddresses.add(URI.create(address)); nodeAddresses.add(URIBuilder.create(address));
} }
return this; return this;
} }

@ -18,6 +18,7 @@ package org.redisson.config;
import java.net.URI; import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -67,7 +68,7 @@ public class SentinelServersConfig extends BaseMasterSlaveServersConfig<Sentinel
*/ */
public SentinelServersConfig addSentinelAddress(String ... addresses) { public SentinelServersConfig addSentinelAddress(String ... addresses) {
for (String address : addresses) { for (String address : addresses) {
sentinelAddresses.add(URI.create(address)); sentinelAddresses.add(URIBuilder.create(address));
} }
return this; return this;
} }

@ -16,6 +16,7 @@
package org.redisson.config; package org.redisson.config;
import java.net.URI; import java.net.URI;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -125,7 +126,7 @@ public class SingleServerConfig extends BaseConfig<SingleServerConfig> {
*/ */
public SingleServerConfig setAddress(String address) { public SingleServerConfig setAddress(String address) {
if (address != null) { if (address != null) {
this.address = URI.create(address); this.address = URIBuilder.create(address);
} }
return this; return this;
} }

@ -48,6 +48,7 @@ import org.slf4j.LoggerFactory;
import io.netty.util.concurrent.Future; import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.FutureListener; import io.netty.util.concurrent.FutureListener;
import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.PlatformDependent;
import org.redisson.misc.URIBuilder;
/** /**
* *
@ -104,7 +105,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
log.info("slave: {} added", host); log.info("slave: {} added", host);
if (flags.contains("s_down") || flags.contains("disconnected")) { if (flags.contains("s_down") || flags.contains("disconnected")) {
URI uri = URI.create(host); URI uri = URIBuilder.create(host);
disconnectedSlaves.add(uri); disconnectedSlaves.add(uri);
log.warn("slave: {} is down", host); log.warn("slave: {} is down", host);
} }
@ -215,7 +216,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
String port = parts[3]; String port = parts[3];
String addr = createAddress(ip, port); String addr = createAddress(ip, port);
URI uri = URI.create(addr); URI uri = URIBuilder.create(addr);
registerSentinel(cfg, uri, c); registerSentinel(cfg, uri, c);
} }
} }
@ -237,7 +238,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
// to avoid addition twice // to avoid addition twice
if (slaves.putIfAbsent(slaveAddr, true) == null) { if (slaves.putIfAbsent(slaveAddr, true) == null) {
final MasterSlaveEntry entry = getEntry(singleSlotRange.getStartSlot()); final MasterSlaveEntry entry = getEntry(singleSlotRange.getStartSlot());
RFuture<Void> future = entry.addSlave(URI.create(slaveAddr)); RFuture<Void> future = entry.addSlave(URIBuilder.create(slaveAddr));
future.addListener(new FutureListener<Void>() { future.addListener(new FutureListener<Void>() {
@Override @Override
public void operationComplete(Future<Void> future) throws Exception { public void operationComplete(Future<Void> future) throws Exception {
@ -379,7 +380,7 @@ public class SentinelConnectionManager extends MasterSlaveConnectionManager {
String newMaster = createAddress(ip, port); String newMaster = createAddress(ip, port);
if (!newMaster.equals(current) if (!newMaster.equals(current)
&& currentMaster.compareAndSet(current, newMaster)) { && currentMaster.compareAndSet(current, newMaster)) {
changeMaster(singleSlotRange.getStartSlot(), URI.create(newMaster)); changeMaster(singleSlotRange.getStartSlot(), URIBuilder.create(newMaster));
log.info("master {} changed to {}", current, newMaster); log.info("master {} changed to {}", current, newMaster);
} }
} }

@ -30,6 +30,7 @@ import java.util.concurrent.atomic.AtomicInteger;
import org.redisson.connection.ClientConnectionsEntry; import org.redisson.connection.ClientConnectionsEntry;
import io.netty.util.internal.PlatformDependent; import io.netty.util.internal.PlatformDependent;
import org.redisson.misc.URIBuilder;
/** /**
* Weighted Round Robin balancer. * Weighted Round Robin balancer.
@ -77,7 +78,7 @@ public class WeightedRoundRobinBalancer implements LoadBalancer {
*/ */
public WeightedRoundRobinBalancer(Map<String, Integer> weights, int defaultWeight) { public WeightedRoundRobinBalancer(Map<String, Integer> weights, int defaultWeight) {
for (Entry<String, Integer> entry : weights.entrySet()) { for (Entry<String, Integer> entry : weights.entrySet()) {
URI uri = URI.create(entry.getKey()); URI uri = URIBuilder.create(entry.getKey());
InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort()); InetSocketAddress addr = new InetSocketAddress(uri.getHost(), uri.getPort());
if (entry.getValue() <= 0) { if (entry.getValue() <= 0) {
throw new IllegalArgumentException("Weight can't be less than or equal zero"); throw new IllegalArgumentException("Weight can't be less than or equal zero");

@ -0,0 +1,40 @@
/**
* Copyright 2016 Nikita Koksharov
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.redisson.misc;
import java.net.URI;
/**
*
* @author Rui Gu (https://github.com/jackygurui)
*/
public class URIBuilder {
public static URI create(String uri) {
URI u = URI.create(uri);
//Let's assuming most of the time it is OK.
if (u.getHost() != null) {
return u;
}
String s = uri.substring(0, uri.lastIndexOf(":"))
.replaceFirst("redis://", "")
.replaceFirst("rediss://", "");
//Assuming this is an IPv6 format, other situations will be handled by
//Netty at a later stage.
return URI.create(uri.replace(s, "[" + s + "]"));
}
}

@ -16,6 +16,8 @@
package org.redisson.spring.support; package org.redisson.spring.support;
import org.redisson.client.RedisClient; import org.redisson.client.RedisClient;
import org.redisson.client.RedisClientConfig;
import org.springframework.beans.factory.parsing.BeanComponentDefinition;
import org.springframework.beans.factory.support.BeanDefinitionBuilder; import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser; import org.springframework.beans.factory.xml.AbstractSimpleBeanDefinitionParser;
import org.springframework.beans.factory.xml.ParserContext; import org.springframework.beans.factory.xml.ParserContext;
@ -29,6 +31,7 @@ import org.w3c.dom.Element;
public final class RedisDefinitionParser public final class RedisDefinitionParser
extends AbstractSimpleBeanDefinitionParser { extends AbstractSimpleBeanDefinitionParser {
private static final String ADDRESS_ATTRIBUTE = "address";
private static final String HOST_ATTRIBUTE = "host"; private static final String HOST_ATTRIBUTE = "host";
private static final String PORT_ATTRIBUTE = "port"; private static final String PORT_ATTRIBUTE = "port";
private static final String CONNECTION_TIMEOUT_ATTRIBUTE = "connectionTimeout"; private static final String CONNECTION_TIMEOUT_ATTRIBUTE = "connectionTimeout";
@ -48,6 +51,7 @@ public final class RedisDefinitionParser
@Override @Override
protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) { protected void doParse(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
builder.getRawBeanDefinition().setBeanClass(RedisClient.class); builder.getRawBeanDefinition().setBeanClass(RedisClient.class);
if (helper.hasAttribute(element, HOST_ATTRIBUTE)) {
helper.addConstructorArgs(element, helper.addConstructorArgs(element,
HOST_ATTRIBUTE, String.class, builder); HOST_ATTRIBUTE, String.class, builder);
helper.addConstructorArgs(element, helper.addConstructorArgs(element,
@ -56,6 +60,18 @@ public final class RedisDefinitionParser
CONNECTION_TIMEOUT_ATTRIBUTE, int.class, builder); CONNECTION_TIMEOUT_ATTRIBUTE, int.class, builder);
helper.addConstructorArgs(element, helper.addConstructorArgs(element,
COMMAND_TIMEOUT_ATTRIBUTE, int.class, builder); COMMAND_TIMEOUT_ATTRIBUTE, int.class, builder);
} else {
BeanDefinitionBuilder b
= helper.createBeanDefinitionBuilder(element,
parserContext,
RedisClientConfig.class);
String configId = helper.getId(null, b, parserContext);
helper.parseAttributes(element, parserContext, b);
BeanComponentDefinition def
= helper.registerBeanDefinition(b, configId,
null, parserContext);
helper.addConstructorArgs(def, RedisClientConfig.class, builder);
}
builder.setDestroyMethodName("shutdown"); builder.setDestroyMethodName("shutdown");
parserContext.getDelegate().parseQualifierElements(element, parserContext.getDelegate().parseQualifierElements(element,
builder.getRawBeanDefinition()); builder.getRawBeanDefinition());

@ -15,7 +15,6 @@
*/ */
package org.redisson.spring.support; package org.redisson.spring.support;
import java.net.URI;
import java.util.List; import java.util.List;
import org.redisson.Redisson; import org.redisson.Redisson;
@ -124,7 +123,7 @@ public final class RedissonDefinitionParser
String id = parserContext.getReaderContext().generateBeanName(bd); String id = parserContext.getReaderContext().generateBeanName(bd);
helper.registerBeanDefinition(builder, id, helper.registerBeanDefinition(builder, id,
helper.parseAliase(element), parserContext); helper.parseAliase(element), parserContext);
parseAttributes(element, parserContext, builder); helper.parseAttributes(element, parserContext, builder);
redissonDef.addDependsOn(id); redissonDef.addDependsOn(id);
parseChildElements(element, id, null, redissonDef, parserContext); parseChildElements(element, id, null, redissonDef, parserContext);
parserContext.getDelegate().parseQualifierElements(element, bd); parserContext.getDelegate().parseQualifierElements(element, bd);
@ -140,45 +139,6 @@ public final class RedissonDefinitionParser
redissonDef.addDependsOn(id); redissonDef.addDependsOn(id);
} }
private void parseAttributes(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
NamedNodeMap attributes = element.getAttributes();
for (int x = 0; x < attributes.getLength(); x++) {
Attr attribute = (Attr) attributes.item(x);
if (helper.isEligibleAttribute(attribute)) {
String propertyName
= attribute.getLocalName().endsWith(REF_SUFFIX)
? attribute.getLocalName()
.substring(0, attribute.getLocalName()
.length() - REF_SUFFIX.length())
: attribute.getLocalName();
propertyName = Conventions
.attributeNameToPropertyName(propertyName);
Assert.state(StringUtils.hasText(propertyName),
"Illegal property name returned from"
+ " 'extractPropertyName(String)': cannot be"
+ " null or empty.");
if (attribute.getLocalName().endsWith(REF_SUFFIX)) {
builder.addPropertyReference(propertyName,
attribute.getValue());
} else {
Object value = attribute.getValue();
String localName = helper.getName(element);
if ("masterAddress".equals(propertyName)
&& ConfigType.masterSlaveServers.name()
.equals(localName)) {
try {
value = URI.create((String) value);
} catch (Exception e) {
//value may be a placeholder
value = "redis://" + value;
}
}
builder.addPropertyValue(propertyName, value);
}
}
}
}
@Override @Override
public BeanDefinition parse(Element element, ParserContext parserContext) { public BeanDefinition parse(Element element, ParserContext parserContext) {
//Sort out the Config Class //Sort out the Config Class
@ -186,7 +146,7 @@ public final class RedissonDefinitionParser
= helper.createBeanDefinitionBuilder(element, parserContext, = helper.createBeanDefinitionBuilder(element, parserContext,
Config.class); Config.class);
String configId = helper.getId(null, configBuilder, parserContext); String configId = helper.getId(null, configBuilder, parserContext);
parseAttributes(element, parserContext, configBuilder); helper.parseAttributes(element, parserContext, configBuilder);
helper.registerBeanDefinition(configBuilder, configId, helper.registerBeanDefinition(configBuilder, configId,
null, parserContext); null, parserContext);
@ -200,7 +160,7 @@ public final class RedissonDefinitionParser
parserContext.getDelegate().parseQualifierElements(element, parserContext.getDelegate().parseQualifierElements(element,
builder.getRawBeanDefinition()); builder.getRawBeanDefinition());
String id = helper.getId(element, builder, parserContext); String id = helper.getId(element, builder, parserContext);
parseAttributes(element, parserContext, configBuilder); helper.parseAttributes(element, parserContext, configBuilder);
//Sort out all the nested elements //Sort out all the nested elements
parseChildElements(element, configId, id, builder, parserContext); parseChildElements(element, configId, id, builder, parserContext);

@ -25,9 +25,11 @@ import org.springframework.beans.factory.support.BeanDefinitionBuilder;
import org.springframework.beans.factory.support.BeanDefinitionReaderUtils; import org.springframework.beans.factory.support.BeanDefinitionReaderUtils;
import org.springframework.beans.factory.xml.ParserContext; import org.springframework.beans.factory.xml.ParserContext;
import org.springframework.core.Conventions; import org.springframework.core.Conventions;
import org.springframework.util.Assert;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.w3c.dom.Attr; import org.w3c.dom.Attr;
import org.w3c.dom.Element; import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node; import org.w3c.dom.Node;
/** /**
@ -39,6 +41,7 @@ public class RedissonNamespaceParserSupport {
public final static String REDISSON_NAMESPACE public final static String REDISSON_NAMESPACE
= "http://redisson.org/schema/redisson"; = "http://redisson.org/schema/redisson";
static final String REF_SUFFIX = "-ref";
static final String API_CLASS_PATH_PREFIX = "org.redisson.api.R"; static final String API_CLASS_PATH_PREFIX = "org.redisson.api.R";
static final String IMPL_CLASS_PATH_PREFIX = "org.redisson.Redisson"; static final String IMPL_CLASS_PATH_PREFIX = "org.redisson.Redisson";
@ -93,6 +96,33 @@ public class RedissonNamespaceParserSupport {
return aliases; return aliases;
} }
public void parseAttributes(Element element, ParserContext parserContext, BeanDefinitionBuilder builder) {
NamedNodeMap attributes = element.getAttributes();
for (int x = 0; x < attributes.getLength(); x++) {
Attr attribute = (Attr) attributes.item(x);
if (isEligibleAttribute(attribute)) {
String propertyName
= attribute.getLocalName().endsWith(REF_SUFFIX)
? attribute.getLocalName()
.substring(0, attribute.getLocalName()
.length() - REF_SUFFIX.length())
: attribute.getLocalName();
propertyName = Conventions
.attributeNameToPropertyName(propertyName);
Assert.state(StringUtils.hasText(propertyName),
"Illegal property name returned from"
+ " 'extractPropertyName(String)': cannot be"
+ " null or empty.");
if (attribute.getLocalName().endsWith(REF_SUFFIX)) {
builder.addPropertyReference(propertyName,
attribute.getValue());
} else {
builder.addPropertyValue(propertyName, attribute.getValue());
}
}
}
}
public BeanDefinitionBuilder createBeanDefinitionBuilder(Element element, ParserContext parserContext, Class<?> cls) { public BeanDefinitionBuilder createBeanDefinitionBuilder(Element element, ParserContext parserContext, Class<?> cls) {
BeanDefinitionBuilder builder BeanDefinitionBuilder builder
= BeanDefinitionBuilder.genericBeanDefinition(); = BeanDefinitionBuilder.genericBeanDefinition();

@ -1,2 +1,3 @@
http\://redisson.org/schema/redisson/redisson.xsd=org/redisson/spring/support/redisson-1.0.xsd http\://redisson.org/schema/redisson/redisson.xsd=org/redisson/spring/support/redisson-1.1.xsd
http\://redisson.org/schema/redisson/redisson-1.0.xsd=org/redisson/spring/support/redisson-1.0.xsd http\://redisson.org/schema/redisson/redisson-1.0.xsd=org/redisson/spring/support/redisson-1.0.xsd
http\://redisson.org/schema/redisson/redisson-1.1.xsd=org/redisson/spring/support/redisson-1.1.xsd

@ -61,7 +61,7 @@ public class SpringNamespaceTest extends BaseTest {
} }
public static void startContext() throws Exception { public static void startContext() throws Exception {
System.setProperty("redisAddress", RedisRunner.getDefaultRedisServerBindAddressAndPort()); System.setProperty("redisAddress", "redis://" + RedisRunner.getDefaultRedisServerBindAddressAndPort());
//Needs a instance running on the default port, launch it if there isn't one already //Needs a instance running on the default port, launch it if there isn't one already
if (RedisRunner.isFreePort(6379)) { if (RedisRunner.isFreePort(6379)) {
@ -79,7 +79,7 @@ public class SpringNamespaceTest extends BaseTest {
RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(), RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(),
RedisRunner.getDefaultRedisServerInstance().getRedisServerPort()) RedisRunner.getDefaultRedisServerInstance().getRedisServerPort())
.run(); .run();
System.setProperty("slave1Address", slave1.getRedisServerAddressAndPort()); System.setProperty("slave1Address", "redis://" + slave1.getRedisServerAddressAndPort());
RedisRunner.RedisProcess slave2 = new RedisRunner() RedisRunner.RedisProcess slave2 = new RedisRunner()
.nosave() .nosave()
@ -89,7 +89,7 @@ public class SpringNamespaceTest extends BaseTest {
RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(), RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(),
RedisRunner.getDefaultRedisServerInstance().getRedisServerPort()) RedisRunner.getDefaultRedisServerInstance().getRedisServerPort())
.run(); .run();
System.setProperty("slave2Address", slave2.getRedisServerAddressAndPort()); System.setProperty("slave2Address", "redis://" + slave2.getRedisServerAddressAndPort());
RedisRunner.RedisProcess sentinel1 = new RedisRunner() RedisRunner.RedisProcess sentinel1 = new RedisRunner()
.nosave() .nosave()
@ -101,7 +101,7 @@ public class SpringNamespaceTest extends BaseTest {
RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(), RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(),
RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(), RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(),
2).run(); 2).run();
System.setProperty("sentinel1Address", sentinel1.getRedisServerAddressAndPort()); System.setProperty("sentinel1Address", "redis://" + sentinel1.getRedisServerAddressAndPort());
RedisRunner.RedisProcess sentinel2 = new RedisRunner() RedisRunner.RedisProcess sentinel2 = new RedisRunner()
.nosave() .nosave()
@ -113,7 +113,7 @@ public class SpringNamespaceTest extends BaseTest {
RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(), RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(),
RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(), RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(),
2).run(); 2).run();
System.setProperty("sentinel2Address", sentinel2.getRedisServerAddressAndPort()); System.setProperty("sentinel2Address", "redis://" + sentinel2.getRedisServerAddressAndPort());
RedisRunner.RedisProcess sentinel3 = new RedisRunner() RedisRunner.RedisProcess sentinel3 = new RedisRunner()
.nosave() .nosave()
@ -125,7 +125,7 @@ public class SpringNamespaceTest extends BaseTest {
RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(), RedisRunner.getDefaultRedisServerInstance().getRedisServerBindAddress(),
RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(), RedisRunner.getDefaultRedisServerInstance().getRedisServerPort(),
2).run(); 2).run();
System.setProperty("sentinel3Address", sentinel3.getRedisServerAddressAndPort()); System.setProperty("sentinel3Address", "redis://" + sentinel3.getRedisServerAddressAndPort());
RedisRunner slave = new RedisRunner().randomPort().randomDir().nosave(); RedisRunner slave = new RedisRunner().randomPort().randomDir().nosave();
ClusterRunner clusterRunner = new ClusterRunner() ClusterRunner clusterRunner = new ClusterRunner()
.addNode(new RedisRunner().randomPort().randomDir().nosave(),//master1 .addNode(new RedisRunner().randomPort().randomDir().nosave(),//master1
@ -143,7 +143,7 @@ public class SpringNamespaceTest extends BaseTest {
new RedisRunner().randomPort().randomDir().nosave());//slave1-3-2 new RedisRunner().randomPort().randomDir().nosave());//slave1-3-2
final AtomicLong index = new AtomicLong(0); final AtomicLong index = new AtomicLong(0);
clusterRunner.run().getNodes().stream().forEach((node) -> { clusterRunner.run().getNodes().stream().forEach((node) -> {
System.setProperty("node" + (index.incrementAndGet()) + "Address", node.getRedisServerAddressAndPort()); System.setProperty("node" + (index.incrementAndGet()) + "Address", "redis://" + node.getRedisServerAddressAndPort());
}); });
context = new ClassPathXmlApplicationContext("classpath:org/redisson/spring/support/namespace.xml"); context = new ClassPathXmlApplicationContext("classpath:org/redisson/spring/support/namespace.xml");

@ -2,7 +2,9 @@ package org.redisson.spring.support;
import io.netty.channel.EventLoopGroup; import io.netty.channel.EventLoopGroup;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Map;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
import static org.hamcrest.Matchers.*;
import org.junit.Test; import org.junit.Test;
import org.redisson.ClusterRunner; import org.redisson.ClusterRunner;
import org.redisson.RedisRunner; import org.redisson.RedisRunner;
@ -11,7 +13,10 @@ import org.redisson.config.Config;
import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext;
import static org.junit.Assert.*; import static org.junit.Assert.*;
import org.redisson.client.RedisClient;
import org.redisson.client.RedisConnection;
import org.redisson.client.codec.Codec; import org.redisson.client.codec.Codec;
import org.redisson.client.protocol.RedisCommands;
import org.redisson.codec.CodecProvider; import org.redisson.codec.CodecProvider;
import org.redisson.config.SingleServerConfig; import org.redisson.config.SingleServerConfig;
import org.redisson.liveobject.provider.ResolverProvider; import org.redisson.liveobject.provider.ResolverProvider;
@ -38,6 +43,27 @@ public class SpringNamespaceWikiTest {
} }
} }
@Test
public void testRedisClient() throws Exception {
RedisRunner.RedisProcess run = new RedisRunner()
.requirepass("do_not_use_if_it_is_not_set")
.nosave()
.randomDir()
.run();
try {
ClassPathXmlApplicationContext context
= new ClassPathXmlApplicationContext("classpath:org/redisson/spring/support/namespace_wiki_redis_client.xml");
RedisClient redisClient = context.getBean(RedisClient.class);
RedisConnection connection = redisClient.connect();
Map<String, String> info = connection.sync(RedisCommands.INFO_ALL);
assertThat(info, notNullValue());
assertThat(info, not(info.isEmpty()));
((ConfigurableApplicationContext) context).close();
} finally {
run.stop();
}
}
@Test @Test
public void testSingleWithPlaceholder() throws Exception { public void testSingleWithPlaceholder() throws Exception {
RedisRunner.RedisProcess run = new RedisRunner() RedisRunner.RedisProcess run = new RedisRunner()
@ -66,6 +92,12 @@ public class SpringNamespaceWikiTest {
System.setProperty("redisson.password", "do_not_use_if_it_is_not_set"); System.setProperty("redisson.password", "do_not_use_if_it_is_not_set");
System.setProperty("redisson.subscriptionsPerConnection", "10"); System.setProperty("redisson.subscriptionsPerConnection", "10");
System.setProperty("redisson.clientName", "client_name"); System.setProperty("redisson.clientName", "client_name");
System.setProperty("redisson.sslEnableEndpointIdentification", "true");
System.setProperty("redisson.sslProvider", "JDK");
System.setProperty("redisson.sslTruststore", "/tmp/truststore.p12");
System.setProperty("redisson.sslTruststorePassword", "not_set");
System.setProperty("redisson.sslKeystore", "/tmp/keystore.p12");
System.setProperty("redisson.sslKeystorePassword", "not_set");
System.setProperty("redisson.subscriptionConnectionMinimumIdleSize", "11"); System.setProperty("redisson.subscriptionConnectionMinimumIdleSize", "11");
System.setProperty("redisson.subscriptionConnectionPoolSize", "12"); System.setProperty("redisson.subscriptionConnectionPoolSize", "12");
System.setProperty("redisson.connectionMinimumIdleSize", "13"); System.setProperty("redisson.connectionMinimumIdleSize", "13");

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<context:annotation-config /> <context:annotation-config />
<context:property-placeholder system-properties-mode="OVERRIDE"/> <context:property-placeholder system-properties-mode="OVERRIDE"/>

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/> <bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/>
<bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/> <bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/>
@ -51,6 +51,12 @@
password="do_not_use_if_it_is_not_set" password="do_not_use_if_it_is_not_set"
subscriptions-per-connection="5" subscriptions-per-connection="5"
client-name="none" client-name="none"
ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
load-balancer-ref="myLoadBalancer" load-balancer-ref="myLoadBalancer"
subscription-connection-minimum-idle-size="1" subscription-connection-minimum-idle-size="1"
subscription-connection-pool-size="50" subscription-connection-pool-size="50"
@ -62,9 +68,9 @@
subscription-mode="SLAVE" subscription-mode="SLAVE"
scan-interval="1000" scan-interval="1000"
> >
<redisson:node-address value="127.0.0.1:6379" /> <redisson:node-address value="redis://127.0.0.1:6379" />
<redisson:node-address value="127.0.0.1:6380" /> <redisson:node-address value="redis://127.0.0.1:6380" />
<redisson:node-address value="127.0.0.1:6381" /> <redisson:node-address value="redis://127.0.0.1:6381" />
</redisson:cluster-servers> </redisson:cluster-servers>
</redisson:client> </redisson:client>
</beans> </beans>

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/> <bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/>
<bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/> <bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/>
@ -51,6 +51,12 @@
password="do_not_use_if_it_is_not_set" password="do_not_use_if_it_is_not_set"
subscriptions-per-connection="5" subscriptions-per-connection="5"
client-name="none" client-name="none"
ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
load-balancer-ref="myLoadBalancer" load-balancer-ref="myLoadBalancer"
subscription-connection-minimum-idle-size="1" subscription-connection-minimum-idle-size="1"
subscription-connection-pool-size="50" subscription-connection-pool-size="50"
@ -60,11 +66,11 @@
master-connection-pool-size="64" master-connection-pool-size="64"
read-mode="SLAVE" read-mode="SLAVE"
subscription-mode="SLAVE" subscription-mode="SLAVE"
master-address="127.0.0.1:6379" master-address="redis://127.0.0.1:6379"
database="0" database="0"
> >
<redisson:slave-address value="127.0.0.1:6380" /> <redisson:slave-address value="redis://127.0.0.1:6380" />
<redisson:slave-address value="127.0.0.1:6381" /> <redisson:slave-address value="redis://127.0.0.1:6381" />
</redisson:master-slave-servers> </redisson:master-slave-servers>
</redisson:client> </redisson:client>
</beans> </beans>

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:redisson="http://redisson.org/schema/redisson"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
">
<bean id="myExecutor" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod" value="java.util.concurrent.Executors.newFixedThreadPool"/>
<property name="arguments" value="8"/>
</bean>
<bean id="myEventLoopGroup" class="io.netty.channel.nio.NioEventLoopGroup"/>
<bean id="myTimer" class="io.netty.util.HashedWheelTimer"/>
<redisson:redis
id="redisClient"
name="redisClient1,redisClient2"
address="redis://127.0.0.1:6379"
timer-ref="myTimer"
executor-ref="myExecutor"
group-ref="myEventLoopGroup"
socket-channel-class="io.netty.channel.socket.nio.NioSocketChannel"
connect-timeout="2000"
command-timeout="10000"
ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
password="do_not_use_if_it_is_not_set"
database="1"
client-name="myClient"
read-only="false"
>
<!--
You can't have both name attribute and qualifier element at
the same time.
Both id attribute and name attribute can be used as qualifier
candidates.
-->
<!--<qualifier value="redisClient3"/>-->
</redisson:redis>
</beans>

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/> <bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/>
<bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/> <bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/>
@ -51,6 +51,12 @@
password="do_not_use_if_it_is_not_set" password="do_not_use_if_it_is_not_set"
subscriptions-per-connection="5" subscriptions-per-connection="5"
client-name="none" client-name="none"
ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
load-balancer-ref="myLoadBalancer" load-balancer-ref="myLoadBalancer"
subscription-connection-minimum-idle-size="1" subscription-connection-minimum-idle-size="1"
subscription-connection-pool-size="50" subscription-connection-pool-size="50"
@ -63,9 +69,9 @@
scan-interval="1000" scan-interval="1000"
database="0" database="0"
> >
<redisson:node-address value="127.0.0.1:6379" /> <redisson:node-address value="redis://127.0.0.1:6379" />
<redisson:node-address value="127.0.0.1:6380" /> <redisson:node-address value="redis://127.0.0.1:6380" />
<redisson:node-address value="127.0.0.1:6381" /> <redisson:node-address value="redis://127.0.0.1:6381" />
</redisson:replicated-servers> </redisson:replicated-servers>
</redisson:client> </redisson:client>
</beans> </beans>

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/> <bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/>
<bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/> <bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/>
@ -51,6 +51,12 @@
password="do_not_use_if_it_is_not_set" password="do_not_use_if_it_is_not_set"
subscriptions-per-connection="5" subscriptions-per-connection="5"
client-name="none" client-name="none"
ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
load-balancer-ref="myLoadBalancer" load-balancer-ref="myLoadBalancer"
subscription-connection-minimum-idle-size="1" subscription-connection-minimum-idle-size="1"
subscription-connection-pool-size="50" subscription-connection-pool-size="50"
@ -63,8 +69,8 @@
master-name="myMaster" master-name="myMaster"
database="0" database="0"
> >
<redisson:sentinel-address value="127.0.0.1:26379" /> <redisson:sentinel-address value="redis://127.0.0.1:26379" />
<redisson:sentinel-address value="127.0.0.1:26380" /> <redisson:sentinel-address value="redis://127.0.0.1:26380" />
</redisson:sentinel-servers> </redisson:sentinel-servers>
</redisson:client> </redisson:client>
</beans> </beans>

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/> <bean id="myCodec" class="org.redisson.codec.MsgPackJacksonCodec"/>
<bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/> <bean id="myCodecProvider" class="org.redisson.codec.DefaultCodecProvider"/>
@ -50,7 +50,13 @@
password="do_not_use_if_it_is_not_set" password="do_not_use_if_it_is_not_set"
subscriptions-per-connection="5" subscriptions-per-connection="5"
client-name="none" client-name="none"
address="127.0.0.1:6379" ssl-enable-endpoint-identification="true"
ssl-provider="JDK"
ssl-truststore="/tmp/truststore.p12"
ssl-truststore-password="no_pass"
ssl-keystore="/tmp/keystore.p12"
ssl-keystore-password="no_pass"
address="redis://127.0.0.1:6379"
subscription-connection-minimum-idle-size="1" subscription-connection-minimum-idle-size="1"
subscription-connection-pool-size="50" subscription-connection-pool-size="50"
connection-minimum-idle-size="10" connection-minimum-idle-size="10"

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<context:property-placeholder system-properties-mode="OVERRIDE"/> <context:property-placeholder system-properties-mode="OVERRIDE"/>
@ -44,6 +44,12 @@
password="${redisson.password}" password="${redisson.password}"
subscriptions-per-connection="${redisson.subscriptionsPerConnection}" subscriptions-per-connection="${redisson.subscriptionsPerConnection}"
client-name="${redisson.clientName}" client-name="${redisson.clientName}"
ssl-enable-endpoint-identification="${redisson.sslEnableEndpointIdentification}"
ssl-provider="${redisson.sslProvider}"
ssl-truststore="${redisson.sslTruststore}"
ssl-truststore-password="${redisson.sslTruststorePassword}"
ssl-keystore="${redisson.sslKeystore}"
ssl-keystore-password="${redisson.sslKeystorePassword}"
address="${redisson.redisAddress}" address="${redisson.redisAddress}"
subscription-connection-minimum-idle-size="${redisson.subscriptionConnectionMinimumIdleSize}" subscription-connection-minimum-idle-size="${redisson.subscriptionConnectionMinimumIdleSize}"
subscription-connection-pool-size="${redisson.subscriptionConnectionPoolSize}" subscription-connection-pool-size="${redisson.subscriptionConnectionPoolSize}"

@ -6,7 +6,7 @@
xsi:schemaLocation=" xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.0.xsd http://redisson.org/schema/redisson classpath:org/redisson/spring/support/redisson-1.1.xsd
"> ">
<context:annotation-config/> <context:annotation-config/>
<context:property-placeholder system-properties-mode="OVERRIDE"/> <context:property-placeholder system-properties-mode="OVERRIDE"/>

Loading…
Cancel
Save