一、准备
-
关于redis的一些安装,可以查看我的几篇文章自行安装:Redis目录。
-
一个web项目,我这边一直用的一个github项目是:https://github.com/gubaijin/buildmavenweb
-
导入java的Redis客户端依赖包Jedis:
<dependency> <groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
二、单机Redis
-
简单单机用代码测试:
Jedis jedis = new Jedis("localhost");
jedis.set("foo", "bar");
String value = jedis.get("foo");
- 跟spring集成,大家可以直接点击查看:J2ee项目从0搭建(十一):在项目中集成Redis,用于数据的存储或者缓存
三、代码中连接redis集群
//使用jedis在代码中连接redis集群,因为是集群,可以自动发现,也同样只要一个地址就行了运行后发现可以正常取到:
Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
//Jedis Cluster will attempt to discover cluster nodes automatically
jedisClusterNodes.add(new HostAndPort("192.168.240.142", 6379));
JedisCluster jc = new JedisCluster(jedisClusterNodes);
jc.set("foo", "bar");
String value = jc.get("foo");
System.out.println(value);
用redis客户端到redis集群中查看验证,存入时我们连接的是142,此时我们在144上进行验证:
四、spring-data-redis连接redis集群
因为实际中我们不可能每次使用的时候都去new一下,然后连接,所以这边推荐使用spring集成redis,并且使用较新的包(版本较低的可能不支持redis集群)。
-
导入jedis包后,还要导入spring-data-redis:
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.7.2.RELEASE</version>
</dependency>
-
创建一个redisCluster.properties:
#redis settingredis.host1=192.168.240.142redis.port1=6379#jedis settingjedis.maxIdle=6jedis.minEvictableIdleTimeMillis=300000jedis.numTestsPerEvictionRun=3jedis.timeBetweenEvictionRunsMillis=60000
-
创建一个spring-redisCluster.xml:
<?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:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" default-lazy-init="true"> <context:component-scan base-package="com.spring.demo.redis" /> <!-- 引入redis配置文件 --> <context:property-placeholder location="classpath:redisCluster.properties" /> <!-- 连接池配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <!-- 连接池中最大空闲的连接数 --> <property name="maxIdle" value="${jedis.maxIdle}"></property> <!-- 连接空闲的最小时间,达到此值后空闲连接将可能会被移除。负值(-1)表示不移除. --> <property name="minEvictableIdleTimeMillis" value="${jedis.minEvictableIdleTimeMillis}"></property> <!-- 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3 --> <property name="numTestsPerEvictionRun" value="${jedis.numTestsPerEvictionRun}"></property> <!-- “空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1. --> <property name="timeBetweenEvictionRunsMillis" value="${jedis.timeBetweenEvictionRunsMillis}"></property> </bean> <!-- 集群配置 --> <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster"> <constructor-arg> <set> <bean class="redis.clients.jedis.HostAndPort"> <constructor-arg name="host" value="${redis.host1}"/> <constructor-arg name="port" value="${redis.port1}"/> </bean> </set> </constructor-arg> <constructor-arg name="poolConfig" ref="jedisPoolConfig"/> </bean></beans>
-
新建一个 RedisClusterUtils.class用来存放一些统一的redis集群操作:
package com.spring.demo.redis;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import redis.clients.jedis.JedisCluster;import java.util.List;@Componentpublic class RedisClusterUtils { @Autowired private JedisCluster jedisCluster; /** * 得到指定key值的value * @param key */ public Object get(String key){ return jedisCluster.get(key); } /** * 保存指定key值的value * @param key * @param value */ public void set(String key, String value){ jedisCluster.set(key, value); } /** * 保存指定key值的value * @param key * @param list */ public void set(String key, List<String> list){ jedisCluster.rpush(key, (String[]) list.toArray()); } /** * 删除指定key的value * @param key */ public void del(String key){ jedisCluster.del(key); }}
-
代码运行验证:
//spring集成redis集群 ApplicationContext ctx = new ClassPathXmlApplicationContext("/spring-redisCluster.xml"); RedisClusterUtils redisClusterUtils = (RedisClusterUtils) ctx.getBean("redisClusterUtils"); redisClusterUtils.set("redisCluster", "RedisClusterUtils"); System.out.println(redisClusterUtils.get("redisCluster"));
-
客户端命令行连接集群验证,这次我们选择143进行验证