java操作redis多节点处理方式;http://blog.itpub.net/29254281/viewspace-1188644/
首先maven引入依赖包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.2</version>
</dependency>
/*
***************************************************************
* 公司名称 :牛牛
* 系统名称 :问问系统
* 类 名 称 :RedisHelper
* 功能描述 : redis缓存处理类
* 业务描述 :
* 作 者 名 :@Author Royal
* 开发日期 :2015-11-04 10:24
***************************************************************
* 修改日期 :
* 修 改 者 :
* 修改内容 :
***************************************************************
*/
package zhengxin.core;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.*;
public class RedisHelper {
//redis数据库连接池
private static Dictionary<Integer, JedisPool> pools = new Hashtable();
static {
ResourceBundle bundle = ResourceBundle.getBundle("redis");
if (bundle == null) {
throw new IllegalArgumentException(
"[redis.properties] is not found!");
}
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(Integer.valueOf(bundle
.getString("redis.pool.maxActive")));
config.setMaxIdle(Integer.valueOf(bundle
.getString("redis.pool.maxIdle")));
config.setTestOnBorrow(Boolean.valueOf(bundle
.getString("redis.pool.testOnBorrow")));
config.setTestOnReturn(Boolean.valueOf(bundle
.getString("redis.pool.testOnReturn")));
//循环创建16个redis数据库连接池,存放在字典里面
for (int i = 0; i < 16; i++) {
JedisPool item = new JedisPool(config, bundle.getString("redis.ip"),
Integer.valueOf(bundle.getString("redis.port")), 0,
bundle.getString("redis.password"), i);
pools.put(i, item);
}
}
/**
* 直接返回redispool 方便灵活操作
* @param db 数据库序号
*/
public static JedisPool getRedisPool(Integer db) {
return pools.get(db);
}
/**
* 设置数据
* @param key //key
* @param value //值
* @param timeOut //过期时间
* @param db //数据库序号
*/
public static void set(String key, String value, Integer timeOut, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
if (timeOut > 0) {
jredis.expire(key, timeOut);
}
jredis.set(key, value);
poolItem.returnResourceObject(jredis);
}
/**
* 获得hash型key某个字段的值
* @param key //key
* @param field //hash字段
* @param db //数据库序号
* */
public static String getHashField(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.hget(key, field);
poolItem.returnResourceObject(jredis);
return result;
}
/**
* 根据hashid获取Map 获得hash型key某个字段的值
* @param hashId //key键
* @param db //数据库序号
* */
public static Map<String, String> getHashValues(String hashId, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
Map<String, String> result = jredis.hgetAll(hashId);
poolItem.returnResourceObject(jredis);
return result;
}
/**
* 设置数据
* @param key //key
* @param value //值
* @param field //hash字段
* @param db //数据库序号
*/
public static void SetHashField(String key, String field, String value, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.hset(key, field, value);
poolItem.returnResourceObject(jredis);
}
/**
* 获取数据
* @param key //key
* @param db //数据库序号
*/
public static String get(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.get(key);
poolItem.returnResourceObject(jredis);
return result;
}
/**
* 删除数据
* @param key //key
* @param db //数据库序号
*/
public static void del(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
Long result = jredis.del(key);
poolItem.returnResourceObject(jredis);
}
/**
* 队列插入数据
* @param key //键
* @param value //值
* @param db //数据库序号
*/
public static void lpush(String key, String value, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.lpush(key, value);
poolItem.returnResourceObject(jredis);
}
/**
* 队列取出数据
* @param key //键
* @param db //数据库序号
*/
public static String lpop(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.lpop(key);
poolItem.returnResourceObject(jredis);
return result;
}
/**
* hash 获取键字段
* @param key //键
* @param field //hash字段
* @param db //数据库序号
*/
public static String hget(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
String result = jredis.hget(key, field);
poolItem.returnResourceObject(jredis);
return result;
}
/**
* hash 删除键字段
* @param key //键
* @param field //hash字段
* @param db //数据库序号
*
*/
public static void hdel(String key, String field, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
jredis.hdel(key, field);
poolItem.returnResourceObject(jredis);
}
/**
* 获取key下所有的值
* @param key //键
* @param db //数据库序号
* @return list
*/
public static List<String> llist(String key, Integer db) {
JedisPool poolItem = pools.get(db);
Jedis jredis = poolItem.getResource();
List<String> result = jredis.lrange(key, 0, -1);
poolItem.returnResourceObject(jredis);
return result;
}
}