一 、Redis初始化(RedisStart.class)
package com.ciri.cache;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
/**
* Created by guo on 16-6-3.
*/
public class RedisStart {
/**
* 链接线
*/
private Jedis jedis = null;
/**
* 链接池
*/
private JedisPool jedisPool = null;
/**
* Redis ip
*/
private String ip = "127.0.0.1";
/**
* 构造函数
*/
public RedisStart() {
initialPool();
jedis = jedisPool.getResource();
}
/**
* 链接池初始化
*/
private void initialPool() {
// 池基本配置
JedisPoolConfig config = new JedisPoolConfig();
//config.(20);
config.setMaxIdle(30);
config.setMaxWaitMillis(1000l);
config.setTestOnBorrow(false);
jedisPool = new JedisPool(config, ip, 6379);
}
/**
* 获得链接线程
* @return
*/
public Jedis getJedis()
{
return jedis;
}
/**
* 获得链接池
* @return
*/
public JedisPool getJedisPool()
{
return jedisPool;
}
}
二、Hash类的再封装(HashCach.class)
package com.ciri.cache;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class HashCache {
/**
* 客户端链接
*/
private Jedis jedis;
/**
* 链接池
*/
private JedisPool jedisPool;
/**
* 构造函数
*
* @param jedis 链接线
* @param jedisPool 链接池
*/
public HashCache(Jedis jedis,JedisPool jedisPool) {
this.jedis = jedis;
this.jedisPool = jedisPool;
}
/**
*向名称为key的hash中添加元素fied————value
*
* @param key 标示创建的hash
* @param field hash中的key
* @param value 与field对应的value值
* @return 插入成功返回true.插入失败返回fasle
*/
public boolean put(String key,String field,String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.hset(key,field,value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
*返回名称为key的hash中field对应的value
*
* @param key 标示一个hash表
* @param field hash表中的key
* @return 找到返回value,找不到返回false
*/
public String get(String key,String field) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
return jedis.hget(key,field);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
}else{
jedisPool.close();
}
}
return null;
}
/**
*删除名称为key的hash中键为value的值
*
* @param key 标示hash的名称
* @param field hash的键值
* @return 删除成功返回true,删除失败返回false
*/
public boolean remove(String key,String field) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.hdel(key,field);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
*为名称为key的Hash表设置有效时间
*
* @param key 标示hash表
* @param second 有效时间,秒为单位
* @return 设置成功返回true,设置失败返回false
*/
public boolean put(String key,int second) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
if(jedis.exists(key))
{
jedis.expire(key, second);
}
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
}
三、List的再封装(ListCache.class)
package com.ciri.cache;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import java.util.List;
/**
* Created by guo on 16-6-3.
*/
public class ListCache {
/**
* 客户端链接
*/
private Jedis jedis;
/**
* 链接池
*/
private JedisPool jedisPool;
/**
* 构造函数
*
* @param jedis 链接线
* @param jedisPool 链接池
*/
public ListCache(Jedis jedis,JedisPool jedisPool) {
this.jedis = jedis;
this.jedisPool = jedisPool;
}
/**
* 在名称为key的list头添加一个值为value的元素
*
* @param key list的名称
* @param value 插入的值
* @return 插入成功返回true,插入失败返回false
*/
public boolean lput(String key, String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.lpush(key,value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 在名称为key的list尾添加一个值为value的元素
*
* @param key list的名称
* @param value 插入的值
* @return 插入成功返回true,插入失败返回false
*/
public boolean rput(String key, String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.rpush(key,value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 在名称为key的list中index位置的元素重新赋值为wvalue
*
* @param key list的名称
* @param index 插入的下标
* @param value 插入的值
* @return 插入成功返回true,插入失败返回false
*/
public boolean put(String key, long index,String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if (jedis != null) {
long length = jedis.llen(key);
if(jedis.exists(key)&&index<=length&&index>=1)
{
jedis.lset(key, index, value);
}
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 为List设置有效时间
*
* @param key list的名称
* @param time list的有效时间
* @return 设置成功返回true,设置失败返回false
*/
public boolean put(String key,int time) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
if(jedis.exists(key)) {
jedis.expire(key, time);
}else {
flag = false;
}
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
} else{
jedisPool.close();
}
}
return false;
}
/**
* 返回名称为key的list中index位置的元素的值
*
* @param key list的名称
* @param index List的下标值
* @return 设置成功返回true,设置失败返回false
*/
public String get(String key,long index) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
return jedis.lindex(key,index);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
}else{
jedisPool.close();
}
}
return null;
}
/**
* 获得start——end之间的元素值,start默认从1开始,当start=1,end=0时获取全部的元素
*
* @param key list的名称
* @param start 开始下标
* @param end 结束下标
* @return 取得成功返回true,取得失败返回false
*/
public List<String> get(String key, long start, long end){
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
return jedis.lrange(key,start,end);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
}else{
jedisPool.close();
}
}
return null;
}
/**
* 删除名称为key的list中的首元素
*
* @param key list的名称
* @return 删除成功返回true,删除失败返回false
*/
public boolean lremove(String key)
{
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.lpop(key);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 删除名称为key的list中的尾元素
*
* @param key list的名称
* @return 删除成功返回true,删除失败返回false
*/
public boolean rremove(String key)
{
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.rpop(key);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 删除count个名称为key的List中值为value的元素
* count为0,删除所有值为value的元素
* count>0从头到尾count个值为value的元素
* count<0从尾到头count个值为value的元素
*
* @param key list的名称
* @param count 删除情景标志
* @param value 删除的value
* @return
*/
public boolean remove(String key,long count,String value)
{
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.lrem(key,count,value);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
}
四、Set的再封装(SetCache.class)
package com.ciri.cache;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import java.util.Set;
/**
* Created by guo on 16-6-3.
*/
public class SetCache {
/**
* 客户端链接
*/
private Jedis jedis;
/**
* 链接池
*/
private JedisPool jedisPool;
/**
* 构造函数
*
* @param jedis 链接线
* @param jedisPool 链接池
*/
public SetCache(Jedis jedis,JedisPool jedisPool)
{
this.jedis = jedis;
this.jedisPool = jedisPool;
}
/**
*向set集合中加入元素
*
* @param key set的名称
* @param value 插入的值
* @return 插入成功返回true,插入失败返回false
*/
public boolean put(String key, String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.sadd(key,value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
*获得set集合的所有元素
*
* @param key set的名称
* @return 获得成功返回true,获得失败返回null
*/
public Set<String> getAllSet(String key) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
return jedis.smembers(key);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
}else{
jedisPool.close();
}
}
return null;
}
/**
*删除set集合中的某个元素
*
* @param key set的名称
* @param value 删除的值
* @return 删除成功返回true,删除失败返回false
*/
public boolean remove(String key,String value)
{
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.srem(key,value);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 设置set集合的有效时间
*
* @param key set的名称
* @param second set的有效时间,单位为秒
* @return 设置成功返回true,设置失败返回false
*/
public boolean put(String key,int second) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
if(jedis.exists(key))
{
jedis.expire(key, second);
}
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
}
五、String的再封装(StringCache.class)
package com.ciri.cache;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class StringCache {
/**
* 客户端链接
*/
private Jedis jedis;
/**
* 链接池
*/
private JedisPool jedisPool;
/**
* 构造函数
*
* @param jedis 链接线
* @param jedispool 链接池
*/
public StringCache(Jedis jedis,JedisPool jedispool) {
this.jedis = jedis;
this.jedisPool = jedispool;
}
/**
* 向名称为key的String中插入元素
*
* @param key String的名称
* @param value 插入的值
* @return 插入成功返回true,插入失败返回false
*/
public boolean put(String key, String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.set(key, value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 获得名称为key的元素的值
*
* @param key String的名称
* @return 执行成功返回value,执行失败返回null
*/
public String get(String key) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null){
return jedis.get(key);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
}else{
jedisPool.close();
}
}
return null;
}
/**
* 删除名称为key的String元素
* @param key String的名称
* @return 删除成功返回true,删除失败,返回false
*/
public boolean remove(String key)
{
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis != null)
{
jedis.del(key);
}
} catch (Exception e)
{
flag = false;
e.printStackTrace();
}finally {
if(flag)
{
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
/**
* 插入元素,并且设置元素的有效时间
*
* @param key String的名称
* @param value 插入的值
* @param second 有效时间,单位为秒;
* @return 执行成功返回true,执行失败返回false
*/
public boolean put(String key, String value,int second) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.set(key, value);
if(jedis.exists(key))
{
jedis.expire(key, second);
}
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedis.close();
return true;
}else{
jedisPool.close();
}
}
return false;
}
}