五、java操作redis
系列导航
--demo 主方法
package com.redis;
import com.JedisCluster;
import java.util.HashSet;
/**
* 描述:redis 集群样例。
* <p> 项目名称: redis 集群 </p>
* <p> 文件名称: DemonMain.java</p>
*/
public class DemonMain {
static HashSet set = new HashSet();
private static JedisClusterFactory jedisClusterFactory = new JedisClusterFactory();
private static JedisCluster jedisCluster = jedisClusterFactory.getJedisCluster();
/**
* 描述:redis 测试是的主函数。
*
* @param args 主函数的参数
*/
public static void main(String[] args) {
RedisService rs = new RedisService();
// 普通的操作
jedisCluster.set("key", "0");
String value = jedisCluster.get("key");
}
}
//redis 操作不同的数据集可以参考 https://www.cnblogs.com/edisonfeng/p/3571870.html 写的比较全面
// 本例主要提供一个连接 redis 集群的公共配置类
---- 连接配置类
package com.redis;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;
/**
* 描述:redis 集群样例。
* <p> 项目名称: redis 集群 </p>
*/
public class JedisClusterFactory {
private static final String MODULE = JedisClusterFactory.class.getName();
JedisPoolConfig poolConfig;
private JedisCluster jedisCluster;
private int connectionTimeout = 1000;
private int soTimeout = 2000;
private int maxRedirections = 30;
private Set<String> jedisClusterNodes;
private static JedisClusterFactory instance = null;
/**
* 描述:redis 的构造函数(配置信息)。
*/
public JedisClusterFactory() {
try {
Set<HostAndPort> haps = new HashSet<HostAndPort>();
String hostIp = "127.0.0.1";
haps.add(new HostAndPort(hostIp, 7001));
haps.add(new HostAndPort(hostIp, 7002));
haps.add(new HostAndPort(hostIp, 7003));
haps.add(new HostAndPort(hostIp, 7004));
haps.add(new HostAndPort(hostIp, 7005));
haps.add(new HostAndPort(hostIp, 7006));
JedisPoolConfig poolConfig = new JedisPoolConfig();
// 控制一个 pool 可分配多少个 jedis 实例,通过 pool.getResource() 来获取;
// 如果赋值为 -1,则表示不限制;如果 pool 已经分配了 maxActive 个 jedis 实例,则此时 pool 的状态为 exhausted(耗尽)。
poolConfig.setMaxTotal(20);
// 控制一个 pool 最多有多少个状态为 idle(空闲的) 的 jedis 实例。
poolConfig.setMaxIdle(50);
poolConfig.setMinIdle(20);
// 表示当 borrow(引入) 一个 jedis 实例时,最大的等待时间,如果超过等待时间,则直接抛出 JedisConnectionException;
poolConfig.setMaxWaitMillis(1000 * 100);
// 在 borrow 一个 jedis 实例时,是否提前进行 validate 操作;如果为 true,则得到的 jedis 实例均是可用的;
poolConfig.setTestOnBorrow(true);
// 密码
String password = "redispass";
jedisCluster = new JedisCluster(haps, connectionTimeout, soTimeout, maxRedirections, password, poolConfig);
// 如下是不加密码的写法
//jedisCluster = new JedisCluster(haps, connectionTimeout, soTimeout, maxRedirections, poolConfig);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 描述:redis 的构造函数(配置信息)。
*
* @return JedisClusterFactory redis 集群的连接信息
*/
public static synchronized JedisClusterFactory getInstance() {
if (instance == null) {
instance = new JedisClusterFactory();
}
return instance;
}
public JedisPoolConfig getPoolConfig() {
return poolConfig;
}
public void setPoolConfig(JedisPoolConfig poolConfig) {
this.poolConfig = poolConfig;
}
public JedisCluster getJedisCluster() {
return jedisCluster;
}
public void setJedisCluster(JedisCluster jedisCluster) {
this.jedisCluster = jedisCluster;
}
public int getConnectionTimeout() {
return connectionTimeout;
}
public void setConnectionTimeout(int connectionTimeout) {
this.connectionTimeout = connectionTimeout;
}
public int getSoTimeout() {
return soTimeout;
}
public void setSoTimeout(int soTimeout) {
this.soTimeout = soTimeout;
}
public int getMaxRedirections() {
return maxRedirections;
}
public void setMaxRedirections(int maxRedirections) {
this.maxRedirections = maxRedirections;
}
public Set<String> getJedisClusterNodes() {
return jedisClusterNodes;
}
public void setJedisClusterNodes(Set<String> jedisClusterNodes) {
this.jedisClusterNodes = jedisClusterNodes;
}
}