本例环境:
jdk 1.7
Redis-x64-3.2.100
环境搭建可参考如下:
redis集群环境搭建-(redis-cluster)(windows版本) :
https://blog.csdn.net/zhangbeizhen18/article/details/102668554
1.本例代码下载地址
https://github.com/zhangbeizhen/spring-redis
2.pom.xml文件需引入redis相关jar包
本例:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.8.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-keyvalue</artifactId>
<version>1.2.10.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-commons</artifactId>
<version>1.13.10.RELEASE</version>
</dependen
3.redis相关配置
<!-- 2019-10-21 -->
<!-- jedis pool 配置 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<!-- 最大连接数 -->
<property name="maxTotal" value="256" />
<!-- 最大空闲连接数 -->
<property name="maxIdle" value="50" />
<!-- 每次释放连接的最大数目 -->
<property name="numTestsPerEvictionRun" value="512" />
<!-- 释放连接的扫描间隔(毫秒)-->
<property name="timeBetweenEvictionRunsMillis" value="30000" />
<!-- 释放连接最小空闲时间 -->
<property name="minEvictableIdleTimeMillis" value="-1" />
<!-- 连接空闲多久后释放,当空闲时间>该值且空闲连接>最大空闲连接数时直接释放 -->
<property name="softMinEvictableIdleTimeMillis" value="10000" />
<!-- 获取连接时的最大等待毫秒数,小于零:阻塞不确定的时间,默认-1 -->
<property name="maxWaitMillis" value="1500" />
<!-- 在获取连接的时候检查有效性,默认false -->
<property name="testOnBorrow" value="true" />
<!-- 在空闲时检查有效性,默认false -->
<property name="testWhileIdle" value="true" />
<!-- 当调用返回时检查有效性,默认false -->
<property name="testOnReturn" value="false" />
<!-- 是否开启jmx监控,默认为true,可以通过jconsole等工具监控连接池 -->
<property name="jmxEnabled" value="true" />
<!-- 使用默认pool -->
<property name="jmxNamePrefix" value="pool" />
<!-- 连接耗尽时是否阻塞,false报异常,ture阻塞直到超时,默认true-->
<property name="blockWhenExhausted" value="false" />
</bean>
<!-- 序列化 -->
<bean id="serializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
3.redis-cluster相关配置
<!-- 2019-10-21 -->
<!--配置RedisCluster -->
<bean id="redisClusterConfiguration"
class="org.springframework.data.redis.connection.RedisClusterConfiguration">
<property name="maxRedirects" value="4"></property>
<property name="clusterNodes">
<set>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6379" />
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6380" />
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6381" />
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6382" />
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6383" />
</bean>
<bean class="org.springframework.data.redis.connection.RedisNode">
<constructor-arg name="host" value="127.0.0.1" />
<constructor-arg name="port" value="6384" />
</bean>
</set>
</property>
</bean>
<!--配置JedisConnectionFactory -->
<bean id="jedisClusterConnectionFactory"
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<constructor-arg name="clusterConfig" ref="redisClusterConfiguration" />
<constructor-arg name="poolConfig" ref="jedisPoolConfig" />
<property name="password" value="" />
</bean>
<!--操作集群redisTemplate -->
<bean id="redisClusterTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisClusterConnectionFactory" />
<property name="defaultSerializer" ref="serializer" />
<property name="keySerializer" ref="serializer" />
<property name="valueSerializer" ref="serializer" />
</bean>
4.OptRedisClusterService代码调用
@Service
public class OptRedisClusterService {
private static final Logger logger = LoggerFactory.getLogger(OptRedisClusterService.class);
@Autowired
private RedisTemplate redisClusterTemplate;
public String optCluster(){
String result ="";
logger.info("从集群读出数据:" +"Hello");
ValueOperations value = redisClusterTemplate.opsForValue();
result = value.get("Hello").toString();
logger.info("集群读出结果是: " + result);
logger.info("向集群写入数据:" +"HelloCluster:20191021");
value.set("HelloCluster", "20191021");
return result;
}
}
5.测试url
http://127.0.0.1:8080/spring-redis/service/redis?str=test
6.测试截图
6.1集群中数据-使用命令行写入的数据
截图:
6.2从客户端查看代码写入数据
登入命令
redis-cli –c –h 127.0.0.1 -p 6379
截图:
6.3代码控制台输出从集群读出的数据
截图:
以上,感谢.