一、下载导入jar


二、配置redis

1、创建redis.properties
# Redis settings
#redis.host=192.168.20.101
#redis.port=
#redis.pass=foobared
redis.host=127.0.0.1
redis.port=
redis.pass=xx
redis.maxIdle=
redis.maxActive=
redis.maxWait=
redis.testOnBorrow=true

三、集成

1、创建 RedisUtils

ConfigInfo 获取redis.properties中属性
package cn.bnsr.edu_yun.util;

import java.util.HashSet;
import java.util.Map;
import java.util.Set; import org.apache.log4j.Logger; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig; /**
* Redis缓存工具类
* @author fangxiongwei
*/
@SuppressWarnings("static-access")
public class RedisUtils {
private static Logger logger = Logger.getLogger(RedisUtils.class); /** 连接池 **/
private static JedisPool jedisPool; public void setjedisPool(JedisPool jedisPool) {
RedisUtils.jedisPool = jedisPool;
} public static JedisPool getjedisPool() {
return jedisPool;
} private static Jedis jedis = null; /**
* 从jedis连接池中获取获取jedis对象
* @return
*/
public static Jedis getJedis() {
return jedisPool.getResource();
} static {
if (jedisPool == null) {
ConfigInfo ci = new ConfigInfo();
JedisPoolConfig config = new JedisPoolConfig();
//控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
config.setMaxActive(ci.getInteger("redis.maxActive"));
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。
config.setMaxIdle(ci.getInteger("redis.maxIdle"));
//表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;
config.setMaxWait(ci.getLong("redis.maxWait"));
//在borrow一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;
config.setTestOnBorrow(ci.getBoolean("redis.testOnBorrow"));
//redis未设置了密码:
jedisPool = new JedisPool(config, ci.getString("redis.host"), ci.getInteger("redis.port")); //redis如果设置了密码:
/* jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
JRedisPoolConfig.REDIS_PORT,
10000,JRedisPoolConfig.REDIS_PASSWORD); */
} } /**
* 检测redis是否在运行
* 如果连接正常就返回一个 PONG ,否则返回一个连接错误。
*/
public static String ping(){
Jedis jedis = getJedis();
return jedis.ping();
} /**
* 查询key的过期时间
* -1, 如果key没有到期超时。
* -2, 如果键不存在。
* @return 以秒为单位的时间表示
* */
public static long ttl(String key) {
long len = ;
try {
jedis = getJedis();
len = jedis.ttl(SerializeUtils.serialize(key));
} catch (Exception e) {
logger.error("Cache时间查询失败:" + e);
} finally {
releaseResource(jedis);
}
return len;
} /**
* 释放redis资源
*/
private static void releaseResource(Jedis jedis) {
if (jedis != null) {
jedisPool.returnResource(jedis);
}
} /**
* 删除Redis中的所有key
*/
public static void flushAll() { try {
jedis = getJedis();
jedis.flushAll();
} catch (Exception e) {
logger.error("Cache清空失败:" + e);
} finally {
releaseResource(jedis);
}
} /**
* 保存一个对象到Redis中(缓存过期时间:使用此工具类中的默认时间) . <br/>
*/
public static Boolean set(Object key, Object object) {
return set(key, object, ConfigInfo.getInteger("redis.cacheSeconds"));
} /**
* 保存一个对象到redis中并指定过期时间
*/
public static Boolean set(Object key, Object object, int seconds) { try {
jedis = getJedis();
jedis.set(SerializeUtils.serialize(key), SerializeUtils.serialize(object));
if(seconds!=){//等于0没有缓存时间
jedis.expire(SerializeUtils.serialize(key), seconds);
}
return true;
} catch (Exception e) {
logger.error("Cache保存失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} /**
* 根据缓存键获取Redis缓存中的值.<br/>
*/
public static Object get(Object key) { try {
jedis = getJedis();
byte[] obj = jedis.get(SerializeUtils.serialize(key));
return obj == null ? null : SerializeUtils.unSerialize(obj);
} catch (Exception e) {
logger.error("Cache获取失败:" + e);
return null;
} finally {
releaseResource(jedis);
}
} /**
* 根据缓存键清除Redis缓存中的值.<br/>
*/
public static Boolean del(Object key) { try {
jedis = getJedis();
jedis.del(SerializeUtils.serialize(key));
return true;
} catch (Exception e) {
logger.error("Cache删除失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} /**
* 根据缓存键清除Redis缓存中的值.<br/>
*/
public static Boolean del(Object... keys) { try {
jedis = getJedis();
jedis.del(SerializeUtils.serialize(keys));
return true;
} catch (Exception e) {
logger.error("Cache删除失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} /**
*
* @param key
* @param seconds
* 超时时间(单位为秒)
* @return
*/
public static Boolean expire(Object key, int seconds) { try {
jedis = getJedis();
jedis.expire(SerializeUtils.serialize(key), seconds);
return true;
} catch (Exception e) {
logger.error("Cache设置超时时间失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} /**
* 添加一个内容到指定key的hash中
*/
public static Boolean addHash(String key, Object field, Object value) { try {
jedis = getJedis();
jedis.hset(SerializeUtils.serialize(key), SerializeUtils.serialize(field), SerializeUtils.serialize(value));
return true;
} catch (Exception e) {
logger.error("Cache保存失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} /**
* 从指定hash中拿一个对象
*/
public static Object getHash(Object key, Object field) { try {
jedis = getJedis();
byte[] obj = jedis.hget(SerializeUtils.serialize(key), SerializeUtils.serialize(field));
return SerializeUtils.unSerialize(obj);
} catch (Exception e) {
logger.error("Cache读取失败:" + e);
return null;
} finally {
releaseResource(jedis);
}
} /**
* 从hash中删除指定filed的值
*/
public static Boolean delHash(Object key, Object field) { try {
jedis = getJedis();
long result = jedis.hdel(SerializeUtils.serialize(key), SerializeUtils.serialize(field));
return result == ? true : false;
} catch (Exception e) {
logger.error("Cache删除失败:" + e);
return null;
} finally {
releaseResource(jedis);
}
} /**
* 拿到缓存中所有符合pattern的key
*/
public static Set<byte[]> keys(String pattern) { try {
jedis = getJedis();
Set<byte[]> allKey = jedis.keys(("*" + pattern + "*").getBytes());
return allKey;
} catch (Exception e) {
logger.error("Cache获取失败:" + e);
return new HashSet<byte[]>();
} finally {
releaseResource(jedis);
}
} /**
* 获得hash中的所有key value
*/
public static Map<byte[], byte[]> getAllHash(Object key) { try {
jedis = getJedis();
Map<byte[], byte[]> map = jedis.hgetAll(SerializeUtils.serialize(key));
return map;
} catch (Exception e) {
logger.error("Cache获取失败:" + e);
return null;
} finally {
releaseResource(jedis);
}
} /**
* 判断一个key是否存在
*/
public static Boolean exists(Object key) { Boolean result = false;
try {
jedis = getJedis();
result = jedis.exists(SerializeUtils.serialize(key));
return result;
} catch (Exception e) {
logger.error("Cache获取失败:" + e);
return false;
} finally {
releaseResource(jedis);
}
} }

2、创建SerializeUtils

package cn.bnsr.edu_yun.util;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.apache.log4j.Logger;
/**
* 序列化工具类
* @author fangxiongwei
*/
public class SerializeUtils {
private static Logger logger = Logger.getLogger(SerializeUtils.class); /**
*
* @Description 序列化
* @param object
* @return
* @throws Exception
*/
public static byte[] serialize(Object object) throws Exception {
if(object == null) return null;
ObjectOutputStream oos = null;
ByteArrayOutputStream baos = null;
try {
// 序列化
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
oos.writeObject(object);
byte[] bytes = baos.toByteArray();
return bytes;
} catch (Exception e) {
logger.error(e);
throw e;
}
} /**
*
* @Description 反序列化
* @param bytes
* @return
* @throws Exception
*/
public static Object unSerialize(byte[] bytes) throws Exception {
if(bytes == null) return null;
ByteArrayInputStream bais = null;
try {
// 反序列化
bais = new ByteArrayInputStream(bytes);
ObjectInputStream ois = new ObjectInputStream(bais);
return ois.readObject();
} catch (Exception e) {
logger.error(e);
throw e;
}
}
}

四、测试

public static void main(String[] args) {
System.out.println(">><"+RedisUtils.set("name", "ff"));
System.out.println(">><"+RedisUtils.get("name"));
} 输出ff

五、相关redis方法:(根据需要自己选择)

转载自

http://blog.csdn.net/huahuagongzi99999/article/details/13659849?utm_source=tuicool&utm_medium=referral


import java.util.List;
import java.util.Map;
import java.util.Set; import org.apache.log4j.Logger; import com.test.constants.JRedisPoolConfig; import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.SortingParams;
import redis.clients.jedis.BinaryClient.LIST_POSITION;
import redis.clients.util.SafeEncoder; public class JedisUtil { private Logger log = Logger.getLogger(this.getClass());
/**缓存生存时间 */
private final int expire = ;
/** 操作Key的方法 */
public Keys KEYS;
/** 对存储结构为String类型的操作 */
public Strings STRINGS;
/** 对存储结构为List类型的操作 */
public Lists LISTS;
/** 对存储结构为Set类型的操作 */
public Sets SETS;
/** 对存储结构为HashMap类型的操作 */
public Hash HASH;
/** 对存储结构为Set(排序的)类型的操作 */
public SortSet SORTSET;
private static JedisPool jedisPool = null; private JedisUtil() { }
static {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(JRedisPoolConfig.MAX_ACTIVE);
config.setMaxIdle(JRedisPoolConfig.MAX_IDLE);
config.setMaxWait(JRedisPoolConfig.MAX_WAIT);
config.setTestOnBorrow(JRedisPoolConfig.TEST_ON_BORROW);
config.setTestOnReturn(JRedisPoolConfig.TEST_ON_RETURN);
//redis如果设置了密码:
jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
JRedisPoolConfig.REDIS_PORT,
,JRedisPoolConfig.REDIS_PASSWORD);
//redis未设置了密码:
// jedisPool = new JedisPool(config, JRedisPoolConfig.REDIS_IP,
// JRedisPoolConfig.REDIS_PORT);
} public JedisPool getPool() {
return jedisPool;
} /**
* 从jedis连接池中获取获取jedis对象
* @return
*/
public Jedis getJedis() {
return jedisPool.getResource();
} private static final JedisUtil jedisUtil = new JedisUtil(); /**
* 获取JedisUtil实例
* @return
*/
public static JedisUtil getInstance() {
return jedisUtil;
} /**
* 回收jedis
* @param jedis
*/
public void returnJedis(Jedis jedis) {
jedisPool.returnResource(jedis);
} /**
* 设置过期时间
* @author ruan 2013-4-11
* @param key
* @param seconds
*/
public void expire(String key, int seconds) {
if (seconds <= ) {
return;
}
Jedis jedis = getJedis();
jedis.expire(key, seconds);
returnJedis(jedis);
} /**
* 设置默认过期时间
* @author ruan 2013-4-11
* @param key
*/
public void expire(String key) {
expire(key, expire);
} //*******************************************Keys*******************************************//
public class Keys { /**
* 清空所有key
*/
public String flushAll() {
Jedis jedis = getJedis();
String stata = jedis.flushAll();
returnJedis(jedis);
return stata;
} /**
* 更改key
* @param String oldkey
* @param String newkey
* @return 状态码
* */
public String rename(String oldkey, String newkey) {
return rename(SafeEncoder.encode(oldkey),
SafeEncoder.encode(newkey));
} /**
* 更改key,仅当新key不存在时才执行
* @param String oldkey
* @param String newkey
* @return 状态码
* */
public long renamenx(String oldkey, String newkey) {
Jedis jedis = getJedis();
long status = jedis.renamenx(oldkey, newkey);
returnJedis(jedis);
return status;
} /**
* 更改key
* @param String oldkey
* @param String newkey
* @return 状态码
* */
public String rename(byte[] oldkey, byte[] newkey) {
Jedis jedis = getJedis();
String status = jedis.rename(oldkey, newkey);
returnJedis(jedis);
return status;
} /**
* 设置key的过期时间,以秒为单位
* @param String key
* @param 时间,已秒为单位
* @return 影响的记录数
* */
public long expired(String key, int seconds) {
Jedis jedis = getJedis();
long count = jedis.expire(key, seconds);
returnJedis(jedis);
return count;
} /**
* 设置key的过期时间,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00,格里高利历)的偏移量。
* @param String key
* @param 时间,已秒为单位
* @return 影响的记录数
* */
public long expireAt(String key, long timestamp) {
Jedis jedis = getJedis();
long count = jedis.expireAt(key, timestamp);
returnJedis(jedis);
return count;
} /**
* 查询key的过期时间
* @param String key
* @return 以秒为单位的时间表示
* */
public long ttl(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis=getJedis();
long len = sjedis.ttl(key);
returnJedis(sjedis);
return len;
} /**
* 取消对key过期时间的设置
* @param key
* @return 影响的记录数
* */
public long persist(String key) {
Jedis jedis = getJedis();
long count = jedis.persist(key);
returnJedis(jedis);
return count;
} /**
* 删除keys对应的记录,可以是多个key
* @param String ... keys
* @return 删除的记录数
* */
public long del(String... keys) {
Jedis jedis = getJedis();
long count = jedis.del(keys);
returnJedis(jedis);
return count;
} /**
* 删除keys对应的记录,可以是多个key
* @param String .. keys
* @return 删除的记录数
* */
public long del(byte[]... keys) {
Jedis jedis = getJedis();
long count = jedis.del(keys);
returnJedis(jedis);
return count;
} /**
* 判断key是否存在
* @param String key
* @return boolean
* */
public boolean exists(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis=getJedis();
boolean exis = sjedis.exists(key);
returnJedis(sjedis);
return exis;
} /**
* 对List,Set,SortSet进行排序,如果集合数据较大应避免使用这个方法
* @param String key
* @return List<String> 集合的全部记录
* **/
public List<String> sort(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis=getJedis();
List<String> list = sjedis.sort(key);
returnJedis(sjedis);
return list;
} /**
* 对List,Set,SortSet进行排序或limit
* @param String key
* @param SortingParams parame 定义排序类型或limit的起止位置.
* @return List<String> 全部或部分记录
* **/
public List<String> sort(String key, SortingParams parame) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis=getJedis();
List<String> list = sjedis.sort(key, parame);
returnJedis(sjedis);
return list;
} /**
* 返回指定key存储的类型
* @param String key
* @return String string|list|set|zset|hash
* **/
public String type(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis=getJedis();
String type = sjedis.type(key);
returnJedis(sjedis);
return type;
} /**
* 查找所有匹配给定的模式的键
* @param String key的表达式,*表示多个,?表示一个
* */
public Set<String> keys(String pattern) {
Jedis jedis = getJedis();
Set<String> set = jedis.keys(pattern);
returnJedis(jedis);
return set;
}
} //*******************************************Sets*******************************************//
public class Sets { /**
* 向Set添加一条记录,如果member已存在返回0,否则返回1
* @param String key
* @param String member
* @return 操作码,0或1
* */
public long sadd(String key, String member) {
Jedis jedis = getJedis();
long s = jedis.sadd(key, member);
returnJedis(jedis);
return s;
} public long sadd(byte[] key, byte[] member) {
Jedis jedis = getJedis();
long s = jedis.sadd(key, member);
returnJedis(jedis);
return s;
} /**
* 获取给定key中元素个数
* @param String key
* @return 元素个数
* */
public long scard(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long len = sjedis.scard(key);
returnJedis(sjedis);
return len;
} /**
* 返回从第一组和所有的给定集合之间的差异的成员
* @param String ... keys
* @return 差异的成员集合
* */
public Set<String> sdiff(String... keys) {
Jedis jedis = getJedis();
Set<String> set = jedis.sdiff(keys);
returnJedis(jedis);
return set;
} /**
* 这个命令等于sdiff,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
* @param String newkey 新结果集的key
* @param String ... keys 比较的集合
* @return 新集合中的记录数
* **/
public long sdiffstore(String newkey, String... keys) {
Jedis jedis = getJedis();
long s = jedis.sdiffstore(newkey, keys);
returnJedis(jedis);
return s;
} /**
* 返回给定集合交集的成员,如果其中一个集合为不存在或为空,则返回空Set
* @param String ... keys
* @return 交集成员的集合
* **/
public Set<String> sinter(String... keys) {
Jedis jedis = getJedis();
Set<String> set = jedis.sinter(keys);
returnJedis(jedis);
return set;
} /**
* 这个命令等于sinter,但返回的不是结果集,而是将结果集存储在新的集合中,如果目标已存在,则覆盖。
* @param String newkey 新结果集的key
* @param String ... keys 比较的集合
* @return 新集合中的记录数
* **/
public long sinterstore(String newkey, String... keys) {
Jedis jedis = getJedis();
long s = jedis.sinterstore(newkey, keys);
returnJedis(jedis);
return s;
} /**
* 确定一个给定的值是否存在
* @param String key
* @param String member 要判断的值
* @return 存在返回1,不存在返回0
* **/
public boolean sismember(String key, String member) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
boolean s = sjedis.sismember(key, member);
returnJedis(sjedis);
return s;
} /**
* 返回集合中的所有成员
* @param String key
* @return 成员集合
* */
public Set<String> smembers(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<String> set = sjedis.smembers(key);
returnJedis(sjedis);
return set;
} public Set<byte[]> smembers(byte[] key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<byte[]> set = sjedis.smembers(key);
returnJedis(sjedis);
return set;
} /**
* 将成员从源集合移出放入目标集合 <br/>
* 如果源集合不存在或不包哈指定成员,不进行任何操作,返回0<br/>
* 否则该成员从源集合上删除,并添加到目标集合,如果目标集合中成员已存在,则只在源集合进行删除
* @param String srckey 源集合
* @param String dstkey 目标集合
* @param String member 源集合中的成员
* @return 状态码,1成功,0失败
* */
public long smove(String srckey, String dstkey, String member) {
Jedis jedis = getJedis();
long s = jedis.smove(srckey, dstkey, member);
returnJedis(jedis);
return s;
} /**
* 从集合中删除成员
* @param String key
* @return 被删除的成员
* */
public String spop(String key) {
Jedis jedis = getJedis();
String s = jedis.spop(key);
returnJedis(jedis);
return s;
} /**
* 从集合中删除指定成员
* @param String key
* @param String member 要删除的成员
* @return 状态码,成功返回1,成员不存在返回0
* */
public long srem(String key, String member) {
Jedis jedis = getJedis();
long s = jedis.srem(key, member);
returnJedis(jedis);
return s;
} /**
* 合并多个集合并返回合并后的结果,合并后的结果集合并不保存<br/>
* @param String ... keys
* @return 合并后的结果集合
* @see sunionstore
* */
public Set<String> sunion(String... keys) {
Jedis jedis = getJedis();
Set<String> set = jedis.sunion(keys);
returnJedis(jedis);
return set;
} /**
* 合并多个集合并将合并后的结果集保存在指定的新集合中,如果新集合已经存在则覆盖
* @param String newkey 新集合的key
* @param String ... keys 要合并的集合
* **/
public long sunionstore(String newkey, String... keys) {
Jedis jedis = getJedis();
long s = jedis.sunionstore(newkey, keys);
returnJedis(jedis);
return s;
}
} //*******************************************SortSet*******************************************//
public class SortSet { /**
* 向集合中增加一条记录,如果这个值已存在,这个值对应的权重将被置为新的权重
* @param String key
* @param double score 权重
* @param String member 要加入的值,
* @return 状态码 1成功,0已存在member的值
* */
public long zadd(String key, double score, String member) {
Jedis jedis = getJedis();
long s = jedis.zadd(key, score, member);
returnJedis(jedis);
return s;
} public long zadd(String key, Map<Double, String> scoreMembers) {
Jedis jedis = getJedis();
long s = jedis.zadd(key, scoreMembers);
returnJedis(jedis);
return s;
} /**
* 获取集合中元素的数量
* @param String key
* @return 如果返回0则集合不存在
* */
public long zcard(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long len = sjedis.zcard(key);
returnJedis(sjedis);
return len;
} /**
* 获取指定权重区间内集合的数量
* @param String key
* @param double min 最小排序位置
* @param double max 最大排序位置
* */
public long zcount(String key, double min, double max) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long len = sjedis.zcount(key, min, max);
returnJedis(sjedis);
return len;
} /**
* 获得set的长度
*
* @param key
* @return
*/
public long zlength(String key) {
long len = ;
Set<String> set = zrange(key, , -);
len = set.size();
return len;
} /**
* 权重增加给定值,如果给定的member已存在
* @param String key
* @param double score 要增的权重
* @param String member 要插入的值
* @return 增后的权重
* */
public double zincrby(String key, double score, String member) {
Jedis jedis = getJedis();
double s = jedis.zincrby(key, score, member);
returnJedis(jedis);
return s;
} /**
* 返回指定位置的集合元素,0为第一个元素,-1为最后一个元素
* @param String key
* @param int start 开始位置(包含)
* @param int end 结束位置(包含)
* @return Set<String>
* */
public Set<String> zrange(String key, int start, int end) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<String> set = sjedis.zrange(key, start, end);
returnJedis(sjedis);
return set;
} /**
* 返回指定权重区间的元素集合
* @param String key
* @param double min 上限权重
* @param double max 下限权重
* @return Set<String>
* */
public Set<String> zrangeByScore(String key, double min, double max) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<String> set = sjedis.zrangeByScore(key, min, max);
returnJedis(sjedis);
return set;
} /**
* 获取指定值在集合中的位置,集合排序从低到高
* @see zrevrank
* @param String key
* @param String member
* @return long 位置
* */
public long zrank(String key, String member) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long index = sjedis.zrank(key, member);
returnJedis(sjedis);
return index;
} /**
* 获取指定值在集合中的位置,集合排序从高到低
* @see zrank
* @param String key
* @param String member
* @return long 位置
* */
public long zrevrank(String key, String member) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long index = sjedis.zrevrank(key, member);
returnJedis(sjedis);
return index;
} /**
* 从集合中删除成员
* @param String key
* @param String member
* @return 返回1成功
* */
public long zrem(String key, String member) {
Jedis jedis = getJedis();
long s = jedis.zrem(key, member);
returnJedis(jedis);
return s;
} /**
* 删除
* @param key
* @return
*/
public long zrem(String key) {
Jedis jedis = getJedis();
long s = jedis.del(key);
returnJedis(jedis);
return s;
} /**
* 删除给定位置区间的元素
* @param String key
* @param int start 开始区间,从0开始(包含)
* @param int end 结束区间,-1为最后一个元素(包含)
* @return 删除的数量
* */
public long zremrangeByRank(String key, int start, int end) {
Jedis jedis = getJedis();
long s = jedis.zremrangeByRank(key, start, end);
returnJedis(jedis);
return s;
} /**
* 删除给定权重区间的元素
* @param String key
* @param double min 下限权重(包含)
* @param double max 上限权重(包含)
* @return 删除的数量
* */
public long zremrangeByScore(String key, double min, double max) {
Jedis jedis = getJedis();
long s = jedis.zremrangeByScore(key, min, max);
returnJedis(jedis);
return s;
} /**
* 获取给定区间的元素,原始按照权重由高到低排序
* @param String key
* @param int start
* @param int end
* @return Set<String>
* */
public Set<String> zrevrange(String key, int start, int end) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<String> set = sjedis.zrevrange(key, start, end);
returnJedis(sjedis);
return set;
} /**
* 获取给定值在集合中的权重
* @param String key
* @param memeber
* @return double 权重
* */
public double zscore(String key, String memebr) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Double score = sjedis.zscore(key, memebr);
returnJedis(sjedis);
if (score != null)
return score;
return ;
}
} //*******************************************Hash*******************************************//
public class Hash { /**
* 从hash中删除指定的存储
* @param String key
* @param String fieid 存储的名字
* @return 状态码,1成功,0失败
* */
public long hdel(String key, String fieid) {
Jedis jedis = getJedis();
long s = jedis.hdel(key, fieid);
returnJedis(jedis);
return s;
} public long hdel(String key) {
Jedis jedis = getJedis();
long s = jedis.del(key);
returnJedis(jedis);
return s;
} /**
* 测试hash中指定的存储是否存在
* @param String key
* @param String fieid 存储的名字
* @return 1存在,0不存在
* */
public boolean hexists(String key, String fieid) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
boolean s = sjedis.hexists(key, fieid);
returnJedis(sjedis);
return s;
} /**
* 返回hash中指定存储位置的值
*
* @param String key
* @param String fieid 存储的名字
* @return 存储对应的值
* */
public String hget(String key, String fieid) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
String s = sjedis.hget(key, fieid);
returnJedis(sjedis);
return s;
} public byte[] hget(byte[] key, byte[] fieid) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
byte[] s = sjedis.hget(key, fieid);
returnJedis(sjedis);
return s;
} /**
* 以Map的形式返回hash中的存储和值
* @param String key
* @return Map<Strinig,String>
* */
public Map<String, String> hgetAll(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Map<String, String> map = sjedis.hgetAll(key);
returnJedis(sjedis);
return map;
} /**
* 添加一个对应关系
* @param String key
* @param String fieid
* @param String value
* @return 状态码 1成功,0失败,fieid已存在将更新,也返回0
* **/
public long hset(String key, String fieid, String value) {
Jedis jedis = getJedis();
long s = jedis.hset(key, fieid, value);
returnJedis(jedis);
return s;
} public long hset(String key, String fieid, byte[] value) {
Jedis jedis = getJedis();
long s = jedis.hset(key.getBytes(), fieid.getBytes(), value);
returnJedis(jedis);
return s;
} /**
* 添加对应关系,只有在fieid不存在时才执行
* @param String key
* @param String fieid
* @param String value
* @return 状态码 1成功,0失败fieid已存
* **/
public long hsetnx(String key, String fieid, String value) {
Jedis jedis = getJedis();
long s = jedis.hsetnx(key, fieid, value);
returnJedis(jedis);
return s;
} /**
* 获取hash中value的集合
*
* @param String
* key
* @return List<String>
* */
public List<String> hvals(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<String> list = sjedis.hvals(key);
returnJedis(sjedis);
return list;
} /**
* 在指定的存储位置加上指定的数字,存储位置的值必须可转为数字类型
* @param String key
* @param String fieid 存储位置
* @param String long value 要增加的值,可以是负数
* @return 增加指定数字后,存储位置的值
* */
public long hincrby(String key, String fieid, long value) {
Jedis jedis = getJedis();
long s = jedis.hincrBy(key, fieid, value);
returnJedis(jedis);
return s;
} /**
* 返回指定hash中的所有存储名字,类似Map中的keySet方法
* @param String key
* @return Set<String> 存储名称的集合
* */
public Set<String> hkeys(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
Set<String> set = sjedis.hkeys(key);
returnJedis(sjedis);
return set;
} /**
* 获取hash中存储的个数,类似Map中size方法
* @param String key
* @return long 存储的个数
* */
public long hlen(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long len = sjedis.hlen(key);
returnJedis(sjedis);
return len;
} /**
* 根据多个key,获取对应的value,返回List,如果指定的key不存在,List对应位置为null
* @param String key
* @param String ... fieids 存储位置
* @return List<String>
* */
public List<String> hmget(String key, String... fieids) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<String> list = sjedis.hmget(key, fieids);
returnJedis(sjedis);
return list;
} public List<byte[]> hmget(byte[] key, byte[]... fieids) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<byte[]> list = sjedis.hmget(key, fieids);
returnJedis(sjedis);
return list;
} /**
* 添加对应关系,如果对应关系已存在,则覆盖
* @param Strin key
* @param Map <String,String> 对应关系
* @return 状态,成功返回OK
* */
public String hmset(String key, Map<String, String> map) {
Jedis jedis = getJedis();
String s = jedis.hmset(key, map);
returnJedis(jedis);
return s;
} /**
* 添加对应关系,如果对应关系已存在,则覆盖
* @param Strin key
* @param Map <String,String> 对应关系
* @return 状态,成功返回OK
* */
public String hmset(byte[] key, Map<byte[], byte[]> map) {
Jedis jedis = getJedis();
String s = jedis.hmset(key, map);
returnJedis(jedis);
return s;
} } //*******************************************Strings*******************************************//
public class Strings {
/**
* 根据key获取记录
* @param String key
* @return 值
* */
public String get(String key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
String value = sjedis.get(key);
returnJedis(sjedis);
return value;
} /**
* 根据key获取记录
* @param byte[] key
* @return 值
* */
public byte[] get(byte[] key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
byte[] value = sjedis.get(key);
returnJedis(sjedis);
return value;
} /**
* 添加有过期时间的记录
*
* @param String key
* @param int seconds 过期时间,以秒为单位
* @param String value
* @return String 操作状态
* */
public String setEx(String key, int seconds, String value) {
Jedis jedis = getJedis();
String str = jedis.setex(key, seconds, value);
returnJedis(jedis);
return str;
} /**
* 添加有过期时间的记录
*
* @param String key
* @param int seconds 过期时间,以秒为单位
* @param String value
* @return String 操作状态
* */
public String setEx(byte[] key, int seconds, byte[] value) {
Jedis jedis = getJedis();
String str = jedis.setex(key, seconds, value);
returnJedis(jedis);
return str;
} /**
* 添加一条记录,仅当给定的key不存在时才插入
* @param String key
* @param String value
* @return long 状态码,1插入成功且key不存在,0未插入,key存在
* */
public long setnx(String key, String value) {
Jedis jedis = getJedis();
long str = jedis.setnx(key, value);
returnJedis(jedis);
return str;
} /**
* 添加记录,如果记录已存在将覆盖原有的value
* @param String key
* @param String value
* @return 状态码
* */
public String set(String key, String value) {
return set(SafeEncoder.encode(key), SafeEncoder.encode(value));
} /**
* 添加记录,如果记录已存在将覆盖原有的value
* @param String key
* @param String value
* @return 状态码
* */
public String set(String key, byte[] value) {
return set(SafeEncoder.encode(key), value);
} /**
* 添加记录,如果记录已存在将覆盖原有的value
* @param byte[] key
* @param byte[] value
* @return 状态码
* */
public String set(byte[] key, byte[] value) {
Jedis jedis = getJedis();
String status = jedis.set(key, value);
returnJedis(jedis);
return status;
} /**
* 从指定位置开始插入数据,插入的数据会覆盖指定位置以后的数据<br/>
* 例:String str1="123456789";<br/>
* 对str1操作后setRange(key,4,0000),str1="123400009";
* @param String key
* @param long offset
* @param String value
* @return long value的长度
* */
public long setRange(String key, long offset, String value) {
Jedis jedis = getJedis();
long len = jedis.setrange(key, offset, value);
returnJedis(jedis);
return len;
} /**
* 在指定的key中追加value
* @param String key
* @param String value
* @return long 追加后value的长度
* **/
public long append(String key, String value) {
Jedis jedis = getJedis();
long len = jedis.append(key, value);
returnJedis(jedis);
return len;
} /**
* 将key对应的value减去指定的值,只有value可以转为数字时该方法才可用
* @param String key
* @param long number 要减去的值
* @return long 减指定值后的值
* */
public long decrBy(String key, long number) {
Jedis jedis = getJedis();
long len = jedis.decrBy(key, number);
returnJedis(jedis);
return len;
} /**
* <b>可以作为获取唯一id的方法</b><br/>
* 将key对应的value加上指定的值,只有value可以转为数字时该方法才可用
* @param String key
* @param long number 要减去的值
* @return long 相加后的值
* */
public long incrBy(String key, long number) {
Jedis jedis = getJedis();
long len = jedis.incrBy(key, number);
returnJedis(jedis);
return len;
} /**
* 对指定key对应的value进行截取
* @param String key
* @param long startOffset 开始位置(包含)
* @param long endOffset 结束位置(包含)
* @return String 截取的值
* */
public String getrange(String key, long startOffset, long endOffset) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
String value = sjedis.getrange(key, startOffset, endOffset);
returnJedis(sjedis);
return value;
} /**
* 获取并设置指定key对应的value<br/>
* 如果key存在返回之前的value,否则返回null
* @param String key
* @param String value
* @return String 原始value或null
* */
public String getSet(String key, String value) {
Jedis jedis = getJedis();
String str = jedis.getSet(key, value);
returnJedis(jedis);
return str;
} /**
* 批量获取记录,如果指定的key不存在返回List的对应位置将是null
* @param String keys
* @return List<String> 值得集合
* */
public List<String> mget(String... keys) {
Jedis jedis = getJedis();
List<String> str = jedis.mget(keys);
returnJedis(jedis);
return str;
} /**
* 批量存储记录
* @param String keysvalues 例:keysvalues="key1","value1","key2","value2";
* @return String 状态码
* */
public String mset(String... keysvalues) {
Jedis jedis = getJedis();
String str = jedis.mset(keysvalues);
returnJedis(jedis);
return str;
} /**
* 获取key对应的值的长度
* @param String key
* @return value值得长度
* */
public long strlen(String key) {
Jedis jedis = getJedis();
long len = jedis.strlen(key);
returnJedis(jedis);
return len;
}
} //*******************************************Lists*******************************************//
public class Lists {
/**
* List长度
* @param String key
* @return 长度
* */
public long llen(String key) {
return llen(SafeEncoder.encode(key));
} /**
* List长度
* @param byte[] key
* @return 长度
* */
public long llen(byte[] key) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
long count = sjedis.llen(key);
returnJedis(sjedis);
return count;
} /**
* 覆盖操作,将覆盖List中指定位置的值
* @param byte[] key
* @param int index 位置
* @param byte[] value 值
* @return 状态码
* */
public String lset(byte[] key, int index, byte[] value) {
Jedis jedis = getJedis();
String status = jedis.lset(key, index, value);
returnJedis(jedis);
return status;
} /**
* 覆盖操作,将覆盖List中指定位置的值
* @param key
* @param int index 位置
* @param String value 值
* @return 状态码
* */
public String lset(String key, int index, String value) {
return lset(SafeEncoder.encode(key), index,
SafeEncoder.encode(value));
} /**
* 在value的相对位置插入记录
* @param key
* @param LIST_POSITION 前面插入或后面插入
* @param String pivot 相对位置的内容
* @param String value 插入的内容
* @return 记录总数
* */
public long linsert(String key, LIST_POSITION where, String pivot,
String value) {
return linsert(SafeEncoder.encode(key), where,
SafeEncoder.encode(pivot), SafeEncoder.encode(value));
} /**
* 在指定位置插入记录
* @param String key
* @param LIST_POSITION 前面插入或后面插入
* @param byte[] pivot 相对位置的内容
* @param byte[] value 插入的内容
* @return 记录总数
* */
public long linsert(byte[] key, LIST_POSITION where, byte[] pivot,
byte[] value) {
Jedis jedis = getJedis();
long count = jedis.linsert(key, where, pivot, value);
returnJedis(jedis);
return count;
} /**
* 获取List中指定位置的值
* @param String key
* @param int index 位置
* @return 值
* **/
public String lindex(String key, int index) {
return SafeEncoder.encode(lindex(SafeEncoder.encode(key), index));
} /**
* 获取List中指定位置的值
* @param byte[] key
* @param int index 位置
* @return 值
* **/
public byte[] lindex(byte[] key, int index) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
byte[] value = sjedis.lindex(key, index);
returnJedis(sjedis);
return value;
} /**
* 将List中的第一条记录移出List
* @param String key
* @return 移出的记录
* */
public String lpop(String key) {
return SafeEncoder.encode(lpop(SafeEncoder.encode(key)));
} /**
* 将List中的第一条记录移出List
* @param byte[] key
* @return 移出的记录
* */
public byte[] lpop(byte[] key) {
Jedis jedis = getJedis();
byte[] value = jedis.lpop(key);
returnJedis(jedis);
return value;
} /**
* 将List中最后第一条记录移出List
*
* @param byte[] key
* @return 移出的记录
* */
public String rpop(String key) {
Jedis jedis = getJedis();
String value = jedis.rpop(key);
returnJedis(jedis);
return value;
} /**
* 向List尾部追加记录
* @param String key
* @param String value
* @return 记录总数
* */
public long lpush(String key, String value) {
return lpush(SafeEncoder.encode(key), SafeEncoder.encode(value));
} /**
* 向List头部追加记录
* @param String key
* @param String value
* @return 记录总数
* */
public long rpush(String key, String value) {
Jedis jedis = getJedis();
long count = jedis.rpush(key, value);
returnJedis(jedis);
return count;
} /**
* 向List头部追加记录
* @param String key
* @param String value
* @return 记录总数
* */
public long rpush(byte[] key, byte[] value) {
Jedis jedis = getJedis();
long count = jedis.rpush(key, value);
returnJedis(jedis);
return count;
} /**
* 向List中追加记录
* @param byte[] key
* @param byte[] value
* @return 记录总数
* */
public long lpush(byte[] key, byte[] value) {
Jedis jedis = getJedis();
long count = jedis.lpush(key, value);
returnJedis(jedis);
return count;
} /**
* 获取指定范围的记录,可以做为分页使用
* @param String key
* @param long start
* @param long end
* @return List
* */
public List<String> lrange(String key, long start, long end) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<String> list = sjedis.lrange(key, start, end);
returnJedis(sjedis);
return list;
} /**
* 获取指定范围的记录,可以做为分页使用
* @param byte[] key
* @param int start
* @param int end 如果为负数,则尾部开始计算
* @return List
* */
public List<byte[]> lrange(byte[] key, int start, int end) {
//ShardedJedis sjedis = getShardedJedis();
Jedis sjedis = getJedis();
List<byte[]> list = sjedis.lrange(key, start, end);
returnJedis(sjedis);
return list;
} /**
* 删除List中c条记录,被删除的记录值为value
* @param byte[] key
* @param int c 要删除的数量,如果为负数则从List的尾部检查并删除符合的记录
* @param byte[] value 要匹配的值
* @return 删除后的List中的记录数
* */
public long lrem(byte[] key, int c, byte[] value) {
Jedis jedis = getJedis();
long count = jedis.lrem(key, c, value);
returnJedis(jedis);
return count;
} /**
* 删除List中c条记录,被删除的记录值为value
* @param String key
* @param int c 要删除的数量,如果为负数则从List的尾部检查并删除符合的记录
* @param String value 要匹配的值
* @return 删除后的List中的记录数
* */
public long lrem(String key, int c, String value) {
return lrem(SafeEncoder.encode(key), c, SafeEncoder.encode(value));
} /**
* 算是删除吧,只保留start与end之间的记录
* @param byte[] key
* @param int start 记录的开始位置(0表示第一条记录)
* @param int end 记录的结束位置(如果为-1则表示最后一个,-2,-3以此类推)
* @return 执行状态码
* */
public String ltrim(byte[] key, int start, int end) {
Jedis jedis = getJedis();
String str = jedis.ltrim(key, start, end);
returnJedis(jedis);
return str;
} /**
* 算是删除吧,只保留start与end之间的记录
* @param String key
* @param int start 记录的开始位置(0表示第一条记录)
* @param int end 记录的结束位置(如果为-1则表示最后一个,-2,-3以此类推)
* @return 执行状态码
* */
public String ltrim(String key, int start, int end) {
return ltrim(SafeEncoder.encode(key), start, end);
}
} public static void main(String[] args) {
JedisUtil jedisUtil= JedisUtil.getInstance();
JedisUtil.Strings strings=jedisUtil.new Strings();
strings.set("nnn", "nnnn");
System.out.println("-----"+strings.get("nnn")); Jedis jedis=JedisUtil.getInstance().getJedis();
for (int i = ; i < ; i++) {
jedis.set("test", "test");
System.out.println(i+"=="+jedis.get("test")); }
JedisUtil.getInstance().returnJedis(jedis);
} }

SpringMVC 集成redis的更多相关文章

  1. JAVA记录-SpringMVC集成redis

    1.redis.properties #主机地址 redis.host=127.0.0.1 #端口号 redis.port=6379 #当池内没有返回对象时,最大等待时间毫秒数 redis.pool. ...

  2. SpringMVC集成Redis

    (1)添加pom依赖 <dependency> <groupId>org.springframework.data</groupId> <artifactId ...

  3. spring集成redis

    redis是一种非关系型数据库,与mongoDB不同的是redis是内存数据库,所以访问速度很快.常用作缓存和发布-订阅式的消息队列.redis官方没有提供windows版本的软件.windows版本 ...

  4. SpringMVC集成rabbitmq:优化秒杀下单环节

    前言 上一篇在springboot中基于自动配置集成了rabbitmq.那么回到最初的话题中就是想在秒杀下单环节增加排队机制,从而达到限流的目的. 优化秒杀下单流程 之前是在控制器里拿到客户端请求后直 ...

  5. ssm集成redis

    身在一个传统的IT公司,接触的新技术比较少,打算年后跳槽,所以抽空学了一下redis. 简单的redis测试,咱们这边就不讲了,现在主要讲讲ssm集成redis的过程,因为现在项目用的就是ssm的框架 ...

  6. spring+springmvc+mybatis+redis 实现两重数据缓存

    <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...

  7. spring+springmvc+mybatis+redis实现缓存

    先搭建好redis环境 需要的jar如下: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:330 ...

  8. 如何玩转最新的项目的搭配springmvc+mybatis+Redis+Nginx+tomcat+mysql

    上一次完成nginx+tomcat组合搭配,今天我们就说说,这几个软件在项目中充当的角色: 要想完成这几个软件的组合,我们必须知道和熟悉应用这个框架, 一: Nginx:在项目中大多数作为反向代理服务 ...

  9. SSM框架集成Redis

    SSM-Spring+SpringMVC+Mybatis框架相信大家都很熟悉了,但是有的时候需要频繁访问数据库中不变或者不经常改变的数据,就会加重数据库的负担,这时我们就会想起Redis Redis是 ...

随机推荐

  1. Markdown 练习

    一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...

  2. 在dropwizard中使用feign,使用hystrix

    前言 用惯了spring全家桶之后,试试dropwizard的Hello World也别有一帆风味.为了增强对外访问API的能力,需要引入open feign.这里简单在dropwizard中使用fe ...

  3. Python 浅谈注释的重要性

    最近参加了一个比赛,然后看到队友编程的代码,我觉得真的是难以下咽,几乎每个字符都要咨询他,用老师的话来说,这就是山炮编程员,所以此时的我意识到写一篇关于注释程序的重要性了,因此特地的写一篇文章帮助大家 ...

  4. 泛型在Web中的作用

    当我们写网页的时候,常常会有多个DAO,我们要写每次都要写好几个DAO,这样会有点麻烦. 那么我们想要的效果是什么呢??只写一个抽象DAO,别的DAO只要继承该抽象DAO,就有对应的方法了. 要实现这 ...

  5. ASP.NET Core 运行原理剖析

    1. ASP.NET Core 运行原理剖析 1.1. 概述 1.2. 文件配置 1.2.1. Starup文件配置 Configure ConfigureServices 1.2.2. appset ...

  6. oracle数据库使用心得之与SQL serve数据库的差异

    网上对于SQL数据库的使用比较详细,但是对于Oracle的使用比较少,本文特别适合学过SQL数据库但是工程需要使用Oracle数据的编程人员查看, 时间匆忙,文章可能写得不够详细,希望有人指出错误或者 ...

  7. oracle pl/sql 简介

    一.pl/sql 是什么pl/sql(procedural language/sql)是oracle在标准的sql语言上的扩展.pl/sql不仅允许嵌入sql语言,还可以定义变量和常量,允许使用条件语 ...

  8. 【HIVE】sql语句转换成mapreduce

    1.hive是什么? 2.MapReduce框架实现SQL基本操作的原理是什么? 3.Hive怎样实现SQL的词法和语法解析? 连接:http://www.aboutyun.com/thread-20 ...

  9. 使用python操作mysql

    版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖.如要转贴,必须注明原文网址 http://www.cnblogs.com/Colin-Cai/p/7643047.html 作者:窗户 Q ...

  10. 使用路由延迟加载 Angular 模块

    使用路由延迟加载 Angular 模块 Angular 非常模块化,模块化的一个非常有用的特性就是模块作为延迟加载点.延迟加载意味着可以在后台加载一个模块和其包含的所有组件等资源.这样 Angular ...