上一章完成了redis集群环境的搭建后,接下来的任务就是如何在java应用中使用redis缓存了,这里主要使用Spring集成jedis完成对缓存的操作,分三步走:
第一步:在pom.xml引入需要的jar包
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.2</version> <type>jar</type> <scope>compile</scope> </dependency>
第二步:Spring文件相关配置
1、添加redis.properties
#redis1的服务器地址 服务端口
redis.host1=192.168.0.106
redis.port1=6379
#redis2的服务器地址 服务端口
redis.host2=192.168.0.106
redis.port2=6380
#redis3的服务器地址 服务端口
redis.host3=192.168.0.106
redis.port3=6381
#redis4的服务器地址 服务端口
redis.host4=192.168.0.106
redis.port4=6382
#redis5的服务器地址 服务端口
redis.host5=192.168.0.106
redis.port5=6383
#redis6的服务器地址 服务端口
redis.host6=192.168.0.106
redis.port6=6384
#密码
redis.pass=123456
#客户端超时时间单位是毫秒
redis.timeout=100000
#最大连接数
redis.maxTotal=1000
#最大空闲数
redis.maxIdle=10
#最大建立连接等待时间
redis.maxWaitMillis=1000
#指明是否在从池中取出连接前进行检验,如果检验失败,则从池中去除连接并尝试取出另一个
redis.testOnBorrow=true
以上配置中redis服务器地址可以不用把6台redis服务器全部配置出来,因为现在是集群,你懂的。
2、添加application-redis.xml
<!-- jedis pool对象池配置 -->
<bean name="genericObjectPoolConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" >
<property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
<property name="maxTotal" value="${redis.maxTotal}" />
<property name="minIdle" value="${redis.maxWaitMillis}" />
<property name="testOnBorrow" value="${redis.testOnBorrow}" />
</bean>
<!-- 使用构造方法注入:public JedisCluster(Set<HostAndPort> nodes, int timeout, final GenericObjectPoolConfig poolConfig) -->
<bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
<constructor-arg index="0">
<set>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg type="java.lang.String" value="${redis.host1}" />
<constructor-arg type="int" value="${redis.port1}" />
</bean>
<bean class="redis.clients.jedis.HostAndPort">
<constructor-arg type="java.lang.String" value="${redis.host2}" />
<constructor-arg type="int" value="${redis.port2}" />
</bean>
</set>
</constructor-arg>
<constructor-arg index="1" value="15000" type="int"></constructor-arg>
<constructor-arg index="2" ref="genericObjectPoolConfig"></constructor-arg>
</bean>
3、在Spring文件中引入redis.xml
<!-- 引入redis属性配置文件 -->
<import resource="applicationContext-redis.xml"/>
第三步:java应用中使用,下面给出一个小代码片段,大家看看就应该知道怎么用了:
@Service("redisCommandService")
public class RedisCommandServiceImpl implements RedisCommandService {
@Autowired
public JedisCluster jedisCluster;
@Override
public String set(String key, Object value, int expire) throws Exception {
try {
String result = jedisCluster.set(key, JSON.toJSONString(value));
if (expire > 0)
jedisCluster.expire(key, expire);
return result;
} catch (Exception e) {
throw e;
}
}
好了,基本上完成上面三步后,你已经可以在java中使用JedisCluster操作redis集群了。
下一章将讨论redis常用的数据结构,以及如何根据你的系统设计Key-Value.