您的位置:首页 > 数据库 > Redis

Redis缓存系统(1)Java-Jedis操作Redis,基本操作以及 实现对象保存

2014-08-10 23:17 891 查看
1、Maven配置

<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.5.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.1.41</version>
</dependency></span>


2、Properties 配置文件

redis.pool.maxActive=100

redis.pool.maxIdle=20

redis.pool.maxWait=3000

redis.ip=localhost

redis.port=6379

3、代码具体实现的Client

/**
*
* <p>
* 	Redis客户端访问
* </p>
*
* @author 卓轩
* @创建时间:2014年7月11日
* @version: V1.0
*/
public class RedisClient {

public  static  JedisPool jedisPool; // 池化管理jedis链接池

static {

//读取相关的配置
ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));

String ip = resourceBundle.getString("redis.ip");
int port = Integer.parseInt(resourceBundle.getString("redis.port"));

JedisPoolConfig config = new JedisPoolConfig();
//设置最大连接数
config.setMaxTotal(maxActive);
//设置最大空闲数
config.setMaxIdle(maxIdle);
//设置超时时间
config.setMaxWaitMillis(maxWait);

//初始化连接池
jedisPool = new JedisPool(config, ip, port);
}

/**
* 向缓存中设置字符串内容
* @param key key
* @param value value
* @return
* @throws Exception
*/
public static boolean  set(String key,String value) throws Exception{
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedisPool.returnResource(jedis);
}
}

/**
* 向缓存中设置对象
* @param key
* @param value
* @return
*/
public static boolean  set(String key,Object value){
Jedis jedis = null;
try {
String objectJson = JSON.toJSONString(value);
jedis = jedisPool.getResource();
jedis.set(key, objectJson);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedisPool.returnResource(jedis);
}
}

/**
* 删除缓存中得对象,根据key
* @param key
* @return
*/
public static boolean del(String key){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.del(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedisPool.returnResource(jedis);
}
}

/**
* 根据key 获取内容
* @param key
* @return
*/
public static Object get(String key){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
Object value = jedis.get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
jedisPool.returnResource(jedis);
}
}

/**
* 根据key 获取对象
* @param key
* @return
*/
public static <T> T get(String key,Class<T> clazz){
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
String value = jedis.get(key);
return JSON.parseObject(value, clazz);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
jedisPool.returnResource(jedis);
}
}

}


4、Sharding 分片管理

/**
*
* <p>
* Sharding Redis Client 工具类
* </p>
*
* @author 卓轩
* @创建时间:2014年7月11日
* @version: V1.0
*/
public class ShardingRedisClient {

private static ShardedJedisPool shardedJedisPool;

static {
// 读取相关的配置
ResourceBundle resourceBundle = ResourceBundle.getBundle("redis");
int maxActive = Integer.parseInt(resourceBundle.getString("redis.pool.maxActive"));
int maxIdle = Integer.parseInt(resourceBundle.getString("redis.pool.maxIdle"));
int maxWait = Integer.parseInt(resourceBundle.getString("redis.pool.maxWait"));

String ip = resourceBundle.getString("redis.ip");
int port = Integer.parseInt(resourceBundle.getString("redis.port"));

//设置配置
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxActive);
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWait);

//设置分片元素信息
JedisShardInfo shardInfo1 = new JedisShardInfo(ip,port);
JedisShardInfo shardInfo2 = new JedisShardInfo(ip,port);
List<JedisShardInfo> list = new ArrayList<JedisShardInfo>();
list.add(shardInfo1);
list.add(shardInfo2);
shardedJedisPool = new ShardedJedisPool(config, list);
}

/**
* 向缓存中设置字符串内容
* @param key key
* @param value value
* @return
* @throws Exception
*/
public static boolean  set(String key,String value) throws Exception{
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
jedis.set(key, value);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
shardedJedisPool.returnResource(jedis);
}
}

/**
* 向缓存中设置对象
* @param key
* @param value
* @return
*/
public static boolean  set(String key,Object value){
ShardedJedis jedis = null;
try {
String objectJson = JSON.toJSONString(value);
jedis = shardedJedisPool.getResource();
jedis.set(key, objectJson);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
shardedJedisPool.returnResource(jedis);
}
}

/**
* 删除缓存中得对象,根据key
* @param key
* @return
*/
public static boolean del(String key){
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
jedis.del(key);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
shardedJedisPool.returnResource(jedis);
}
}

/**
* 根据key 获取内容
* @param key
* @return
*/
public static Object get(String key){
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
Object value = jedis.get(key);
return value;
} catch (Exception e) {
e.printStackTrace();
return false;
}finally{
shardedJedisPool.returnResource(jedis);
}
}

/**
* 根据key 获取对象
* @param key
* @return
*/
public static <T> T get(String key,Class<T> clazz){
ShardedJedis jedis = null;
try {
jedis = shardedJedisPool.getResource();
String value = jedis.get(key);
return JSON.parseObject(value, clazz);
} catch (Exception e) {
e.printStackTrace();
return null;
}finally{
shardedJedisPool.returnResource(jedis);
}
}

}


5、 单元测试、保存对象、写入对象

/**
*
* <p>
*  测试独立redis 客户端
* </p>
*
* @author 卓轩
* @创建时间:2014年7月11日
* @version: V1.0
*/
public class SimpleClient {

@Test
public void userCache(){

//向缓存中保存对象
UserDO zhuoxuan = new UserDO();
zhuoxuan.setUserId(113445);
zhuoxuan.setSex(1);
zhuoxuan.setUname("卓轩");
zhuoxuan.setUnick("zhuoxuan");
zhuoxuan.setEmail("zhuoxuan@mogujie.com");
//调用方法处理
boolean reusltCache = RedisClient.set("zhuoxuan", zhuoxuan);
if (reusltCache) {
System.out.println("向缓存中保存对象成功。");
}else{
System.out.println("向缓存中保存对象失败。");
}
}

@Test
public void getUserInfo(){

UserDO zhuoxuan = RedisClient.get("zhuoxuan",UserDO.class);
if(zhuoxuan != null){
System.out.println("从缓存中获取的对象," + zhuoxuan.getUname() + "@" + zhuoxuan.getEmail());
}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: