jredis 工具_Redis工具类

packagenet.wwwyibu.filter;importjava.io.IOException;importjava.net.InetAddress;importjava.net.UnknownHostException;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Set;importorg.apache.log4j.Logger;importorg.json.JSONException;importnet.sf.json.JSONObject;importnet.sf.json.JsonConfig;importnet.sf.json.util.PropertySetStrategy;importredis.clients.jedis.Jedis;importredis.clients.jedis.JedisPool;importredis.clients.jedis.JedisPoolConfig;importredis.clients.jedis.JedisShardInfo;importredis.clients.jedis.ShardedJedis;importredis.clients.jedis.ShardedJedisPool;importredis.clients.jedis.Tuple;/***@author马家立

*@version创建时间:2020-7-29 16:54:56

* @Description:TODO Redis工具类

* @Description:TODO 菜鸟教程--https://www.runoob.com/redis/redis-tutorial.html* @Description:TODO w3cschool教程--https://www.w3cschool.cn/redis/redis-commands.html

*/

public classRedisUtil {private static Logger log = Logger.getLogger(RedisUtil.class);/*** --获取redis的ip*/

private static String redisIp =getRedisIp();/*** --非切片客户端链接*/

privateJedis jedis;/*** --非切片链接池*/

privateJedisPool jedisPool;/*** --切片客户端链接*/

privateShardedJedis shardedJedis;/*** --切片客户端链接池*/

privateShardedJedisPool shardedJedisPool;/*** --构造函数*/

publicRedisUtil() {

initialJedisPool();

initialShardedJedisPool();

}publicJedis getJedis() {if (jedis == null) {

initialJedisPool();

}returnjedis;

}public voidsetJedis(Jedis jedis) {this.jedis =jedis;

}publicShardedJedis getShardedJedis() {if (shardedJedis == null) {

initialShardedJedisPool();

}returnshardedJedis;

}public voidsetShardedJedis(ShardedJedis shardedJedis) {this.shardedJedis =shardedJedis;

}/*** @Title:getIp

* @Description:TODO 获取redis的ip

*@author:马家立

* @date:2020-7-29 17:00:51

*@returnString*/

staticString getRedisIp() {try{returnInetAddress.getLocalHost().getHostAddress();

}catch(UnknownHostException e) {

e.printStackTrace();

}return "127.0.0.1";

}/*** @Title:initialJedisPool

* @Description:TODO 初始化非切片客户端链接

*@author:马家立

* @date:2020-7-30 16:39:05 void*/

private voidinitialJedisPool() {//Jedis连接池配置

JedisPoolConfig config = newJedisPoolConfig();/*** --控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;

* --最大连接数:如果赋值为-1,则表示不限制;如果pool已经分配了maxActive(最大连接数)个jedis实例,则此时pool的状态为exhausted(耗尽)。*/config.setMaxActive(300);//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。

config.setMaxIdle(100);//设置最大阻塞时间:表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;

config.setMaxWait(1000 * 5);//在borrow(引入)一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;

config.setTestOnBorrow(false);

jedisPool= new JedisPool(config, redisIp, 6379);

setJedis(jedisPool.getResource());

}/*** @Title:initialShardedJedisPool

* @Description:TODO 初始化切片客户端链接

*@author:马家立

* @date:2020-7-30 16:39:29 void*/

private voidinitialShardedJedisPool() {//Jedis连接池配置

JedisPoolConfig config = newJedisPoolConfig();/*** --控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;

* --最大连接数:如果赋值为-1,则表示不限制;如果pool已经分配了maxActive(最大连接数)个jedis实例,则此时pool的状态为exhausted(耗尽)。*/config.setMaxActive(300);//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例。

config.setMaxIdle(100);//设置最大阻塞时间:表示当borrow(引入)一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛出JedisConnectionException;

config.setMaxWait(1000 * 5);//在borrow(引入)一个jedis实例时,是否提前进行validate操作;如果为true,则得到的jedis实例均是可用的;

config.setTestOnBorrow(false);//slave链接

List shards = new ArrayList();

shards.add(new JedisShardInfo(redisIp, 6379));

shardedJedisPool= newShardedJedisPool(config, shards);

setShardedJedis(shardedJedisPool.getResource());

}/*** @Title:jedisMethod

* @Description:TODO jedis相关方法

*@author:马家立

* @date:2020-7-30 16:53:10 void*/

public voidjedisMethod() {

jedis=getJedis();//清空链接数据

jedis.flushDB();

jedis.echo("foo");//交集

System.out.println(jedis.sinter("" + "", "sets2"));//并集

System.out.println(jedis.sunion("sets1", "sets2"));//差集

System.out.println(jedis.sdiff("sets1", "sets2"));

System.out.println(jedis.mset("mset1", "mvalue1", "mset2", "mvalue2", "mset3", "mvalue3", "mset4", "mvalue4"));

System.out.println(jedis.mget("mset1", "mset2", "mset3", "mset4"));

System.out.println(jedis.del(new String[] {"foo", "foo1", "foo3"}));

}/*** @Description:TODO String类型开始*/

voidString_Type_Start() {}/*** @Title:set

* @Description:TODO 储存某个Key和值

*@author:马家立

* @date:2020-7-28 15:07:56

*@paramKey--存储的key

*@paramvalue--存储的值

*@returnboolean*/

public booleanset(String Key, String value) {try{

getShardedJedis().set(Key, value);//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(getShardedJedis());return true;

}catch(Exception e) {

e.printStackTrace();//否则调用returnResource()返回正常链接

shardedJedisPool.returnResource(getShardedJedis());return false;

}

}/*** @Title:setex

* @Description:TODO 存储某个Key和值并设置超时时间

*@author:马家立

* @date:2020-7-28 15:06:25

*@paramKey--存储的key

*@paramtime--超时时间(秒)

*@paramvalue--存储的值

*@returnboolean*/

public boolean setex(String Key, inttime, String value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.setex(Key, time, value);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:expire

* @Description:TODO 设置 key 的过期时间,key 过期后将不再可用。单位以秒计。

*@author:马家立

* @date:2020-7-29 16:46:39

*@paramKey

*@paramtime

*@returnboolean*/

public boolean expire(String Key, inttime) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//设置成功返回 1 。 当 key 不存在或者不能为 key 设置过期时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的过期时间)返回 0 。

jedis.expire(Key, time);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:setObject

* @Description:TODO 存储某个Key和Object对象值

*@author:马家立

* @date:2020-7-28 15:14:12

*@paramkey--存储的key

*@paramvalue--存储的Object对象值

*@returnboolean*/

public booleansetObject(String key, Object value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

log.info("set = " + key + " 转化前 value=" +value);

String objectJson= "";if ((value instanceof String) || (value instanceof JSONObject)) {//如果传进来的是String或者JSONObject,不进行转换

objectJson = value + "";

}else {//是普通对象,进行beanToJson转化

JSONObject jsonObject =JSONObject.fromObject(value);

objectJson=jsonObject.toString();

}

log.info("Inkeys = " + key + " 转化后InValue=" +objectJson);

jedis=getShardedJedis();

jedis.set(key, objectJson);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.info("setObject缓存方法出错");

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:get

* @Description:TODO 获取某个key的value

*@author:马家立

* @date:2020-7-28 15:03:05

*@paramKey--redis存储的key

*@returnString*/

publicString get(String Key) {

String end= null;

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

end=jedis.get(Key);returnend;

}catch(Exception e) {

error= true;

e.printStackTrace();return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:getObject

* @Description:TODO 获取某个key的对象value

*@author:马家立

* @date:2020-7-28 15:16:32

*@paramkey----存储的key

*@paramclas--该key对应的对象值

*@returnObject*/

publicObject getObject(String key, Class clas) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

String value=jedis.get(key);//根据json字符串解析class对象

returnjsonToBean(value, clas);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.info("getObject缓存方法出错");

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:del

* @Description:TODO 删除某个key

*@author:马家立

* @date:2020-7-28 18:07:36

*@paramKey--被删除的key

*@returnboolean*/

public booleandel(String Key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.del(Key);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:exists

* @Description:TODO 判断某个key是否存在

*@author:马家立

* @date:2020-7-28 18:08:44

*@paramkey--要判断的key

*@returnboolean*/

public booleanexists(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.exists(key);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:existsttl

* @Description:TODO 给定 key 的剩余生存时间(单位:s)

*@author:马家立

* @date:2020-7-29 16:08:14

*@paramkey

*@returnLong*/

publicLong existsttl(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

Long i=jedis.ttl(key);returni;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return -1L;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Description:TODO Hash类型开始*/

voidHash_Type_Start() {}/*** @Title:setHash

* @Description:TODO 储存某个Key和hash对象值

*@author:马家立

* @date:2020-7-28 15:28:36

*@paramkey--存储的key

*@parammap--存储的hash对象值

*@returnboolean*/

public boolean setHash(String key, Mapmap) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.hmset(key, map);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.info("setHash缓存方法出错");

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:setHashKey

* @Description:TODO 储存某个Key中hash对象值中的key值:如果哈希表不存在,创建一个新的哈希表并进行 HSET操作;如果字段已经存在于哈希表中,旧值将被覆盖。

*@author:马家立

* @date:2020-7-28 15:29:56

*@paramkey--存储的hash的key

*@paraminkey--hash对象中的key

*@paramvalue--hash对象中的key对应存储的值

*@returnboolean*/

public booleansetHashKey(String key, String inkey, String value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0

jedis.hset(key, inkey, value);//jedis.disconnect();

return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.info("setHash缓存方法出错");

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:hget

* @Description:TODO 读取某个hash表中的某个key所对应的value值

*@author:马家立

* @date:2020-7-28 17:58:03

*@paramkey--存储的hash的key

*@paraminkey--hash中的key

*@returnString*/

publicString hget(String key, String inkey) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.hget(key, inkey);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:hkeys

* @Description:TODO 获取哈希表中的key

*@author:马家立

* @date:2020-7-28 18:00:44

*@paramkey--存储的hash的key

*@returnSet*/

public Sethkeys(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.hkeys(key);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:hgetAll

* @Description:TODO 获取哈希表中,所有的字段和值。

*@author:马家立

* @date:2020-7-29 16:33:24

*@paramkey

*@returnMap*/

public MaphgetAll(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.hgetAll(key);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:delHash

* @Description:TODO 删除哈希表 key中的一个或多个指定字段,不存在的字段将被忽略

*@author:马家立

* @date:2020-7-28 15:48:32

*@paramkey--存储的hash的key

*@paraminkey--hash中的key

*@returnboolean*/

public booleandelHash(String key, String inkey) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.hdel(key, inkey);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Description:TODO List类型开始*/

voidList_Type_Start() {}/*** @Title:lpush

* @Description:TODO 将一个或多个值插入到列表头部。 如果 key不存在,一个空列表会被创建并执行 LPUSH 操作。 当 key存在但不是列表类型时,返回一个错误。

*@author:马家立

* @date:2020-7-29 16:16:34

*@paramKey

*@paramvalue

*@returnboolean*/

public booleanlpush(String Key, String value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//value可为数组

jedis.lpush(Key, value);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/***

* @Title:rpush

* @Description:TODO 将一个或多个值插入到列表的尾部(最右边)。如果列表不存在,一个空列表会被创建并执行 RPUSH 操作。 当列表存在但不是列表类型时,返回一个错误。

*@author:马家立

* @date:2020-7-29 16:34:58

*@paramkey

*@paramvalue

*@returnboolean*/

public booleanrpush(String key, String value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.rpush(key, value);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:lpop

* @Description:TODO 移除并返回列表的第一个元素

*@author:马家立

* @date:2020-7-29 16:39:22

*@paramkey

*@returnString 列表的第一个元素。 当列表 key 不存在时,返回 nil*/

publicString lpop(String key) {

String value= null;

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

value=jedis.lpop(key);returnvalue;

}catch(Exception e) {

error= true;

e.printStackTrace(); log.error(e.getMessage(), e);returnvalue;

}finally{if(jedis!=null){if(shardedJedisPool!=null){if(error){//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else{//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:rpop

* @Description:TODO 移除并返回列表的最后一个元素

*@author:马家立

* @date:2020-7-29 16:39:22

*@paramkey

*@returnString 列表的最后一个元素。 当列表 key 不存在时,返回 nil*/

publicString rpop(String key) {

String value= null;

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

value=jedis.rpop(key);returnvalue;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);returnvalue;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:lrem

* @Description:TODO 根据参数 COUNT 的值,移除列表中与参数 VALUE 相等的元素。

* @Description:TODO COUNT 的值可以是以下几种:

* @Description:TODO count > 0 : 从表头开始向表尾搜索,移除与 VALUE 相等的元素,数量为 COUNT 。

* @Description:TODO count < 0 : 从表尾开始向表头搜索,移除与 VALUE 相等的元素,数量为 COUNT 的绝对值。

* @Description:TODO count = 0 : 移除表中所有与 VALUE 相等的值。

*@author:马家立

* @date:2020-7-29 16:27:09

*@paramKey

*@paramvalue

*@returnString*/

public String lrem(String Key, intcount, String value) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

jedis.lrem(Key, count, value);return "0";

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return "-1";

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:lrange

* @Description:TODO 读取某个key并以并返回start~end区间中的list数据

*@author:马家立

* @date:2020-7-29 16:19:08

*@paramKey

*@paramstart

*@paramend

*@returnList*/

public List lrange(String Key, int start, intend) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//若jedis.lrange(Key, 0, -1)则返回list所有数据

returnjedis.lrange(Key, start, end);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:ltrim

* @Description:TODO 保留指定区间内的元素,不在指定区间之内的元素都将被删除。

*@author:马家立

* @date:2020-7-29 16:23:39

*@paramKey

*@paramstart

*@paramend

*@returnboolean*/

public boolean ltrim(String Key, int start, intend) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();/*** -- 若jedis.lrange(Key, 0, -1)则返回list所有数据 --若命令执行成功时,返回 ok 。*/

return "ok".equals(jedis.ltrim(Key, start, end)) ? true : false;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:getListSize

* @Description:TODO 获取List的长度

*@author:马家立

* @date:2020-7-29 15:36:44

*@paramkey

*@returnlong*/

public longgetListSize(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

long length = 0L;try{

jedis=getShardedJedis();

length=jedis.llen(key);returnlength;

}catch(Exception e) {

error= true;

log.error("llen error", e);returnlength;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:queueExists

* @Description:TODO 判断队列是否存在

*@author:马家立

* @date:2020-7-29 16:06:49

*@paramname

*@returnboolean*/

public booleanqueueExists(String name) {if(exists(name)) {//key存在,获得长度

return getListSize(name) > 0 ? true : false;

}return false;

}/*** @Description:TODO Set类型开始*/

voidSet_Type_Start() {}/*** @Description:TODO Sorted Set类型开始*/

voidSortedSet_Type_Start() {}/*** @Title:zadd

* @Description:TODO 储存一个对象到Sorted-Sets

*@author:马家立

* @date:2020-7-28 16:02:54

*@paramkey--存储的Set集合的key

*@paramscore--分数

*@parammember--成员

*@returnboolean*/

public boolean zadd(String key, doublescore, String member) {

log.info("zadd--------key:" + key + ",score:" + score + ",member:" +member);

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

Long end=jedis.zadd(key, score, member);

log.info("zadd--------end jedis.zadd:" +end);return true;

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return false;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}//jedis.disconnect();

}

}

}/*** @Title:zrevrangeWithScores

* @Description:TODO 从小到大取出Sorted-Sets

*@author:马家立

* @date:2020-7-28 16:06:31

*@paramkey--存储的Set集合的key

*@paramstart--开始分值

*@paramend--结束分值

*@returnSet*/

public Set zrevrangeWithScores(String key, int start, intend) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//jedis.zrevrangeWithScores(key, 0, -1);0,-1:返回所有

returnjedis.zrevrangeWithScores(key, start, end);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:zrangeWithScores

* @Description:TODO 从大到小取出Sorted-Sets

*@author:马家立

* @date:2020-7-28 16:43:27

*@paramkey--存储的Set集合的key

*@paramstart--开始分值

*@paramend--结束分值

*@returnSet*/

public Set zrangeWithScores(String key, int start, intend) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//jedis.zrangeWithScores(key, 0, -1);0,-1:返回所有

returnjedis.zrangeWithScores(key, start, end);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:zrange

* @Description:TODO 从小到大取出Sorted-Sets

*@author:马家立

* @date:2020-7-28 17:53:21

*@paramkey--存储的Set集合的key

*@paramstart--开始分值

*@paramend--结束分值

*@returnSet*/

public Set zrange(String key, int start, intend) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.zrange(key, start, end);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:zrangeByScore

* @Description:TODO 返回所有符合条件start < score <= end的成员;

*@author:马家立

* @date:2020-7-28 17:54:04

*@paramkey--存储的Set集合的key

*@paramstart--开始分值

*@paramend--结束分值

*@returnSet*/

public SetzrangeByScore(String key, Double start, Double end) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();returnjedis.zrangeByScore(key, start, end);

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return null;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:zrem

* @Description:TODO 从Sorted-Sets中移除的一个或多个成员,不存在的成员将被忽略。

*@author:马家立

* @date:2020-7-28 18:02:12

*@paramkey--存储的Set集合的key

*@paraminkey--Set集合中的key

*@returnString*/

publicString zrem(String key, String inkey) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();//被成功移除的成员的数量,不包括被忽略的成员。

System.out.println(jedis.zrem(key, inkey));return "0";

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return "-1";

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:zremrangebyscore

* @Description:TODO 从Sorted-Sets 中移除指定分数(score)区间内的所有成员

*@author:马家立

* @date:2020-7-28 18:05:39

*@paramkey--存储的Set集合的key

*@paramstart--开始分值

*@paramend--结束分值

*@returnString*/

publicString zremrangebyscore(String Key, Double start, Double end) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

try{

jedis=getShardedJedis();

System.out.println(jedis.zremrangeByScore(Key, start, end));return "0";

}catch(Exception e) {

error= true;

e.printStackTrace();

log.error(e.getMessage(), e);return "-1";

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}//jedis.disconnect();

}

}/*** @Title:getsortedSetSize

* @Description:TODO 获取Sorted Set的长度

*@author:马家立

* @date:2020-7-29 16:01:52

*@paramkey--获取SortedSet集合的key

*@returnlong*/

public longgetSortedSetSize(String key) {

ShardedJedis jedis= null;boolean error = false;//标记缓存操作过程是否出现异常

long length = 0L;try{

jedis=getShardedJedis();

length=jedis.zcard(key);returnlength;

}catch(Exception e) {

error= true;

log.error("llen error", e);returnlength;

}finally{if (jedis != null) {if (shardedJedisPool != null) {if (error) {//如果操作过程出现异常,调用returnBrokenResource()返回有问题的链接

shardedJedisPool.returnBrokenResource(jedis);

}else {//否则调用returnResource()正常返回链接

shardedJedisPool.returnResource(jedis);

}

}

}

}

}/*** @Title:jsonToBean

* @Description:TODO 根据json字符串解析class对象

*@author:马家立

* @date:2020-7-28 15:18:36

*@paramjsonString--json字符串

*@paramclas--class对象

*@returnObject*/

public static Object jsonToBean(String jsonString, Class>clas) {

JSONObject jo=JSONObject.fromObject(jsonString);

JsonConfig cfg= newJsonConfig();

Map classMap = new HashMap();

cfg.setClassMap(classMap);

cfg.setRootClass(clas);

cfg.setPropertySetStrategy(PropertySetStrategy.DEFAULT);returnJSONObject.toBean(jo, cfg);

}public static void main(String[] args) throwsJSONException, IOException {//RedisUtil redis = new RedisUtil();//redis.setHashKey("yayaya", "1", "haha");//redis.setHashKey("yayaya", "2", "hehe");//redis.setHashKey("yayaya", "3", "lala");// //redis.expire("yayaya", 10);//Set hgets = redis.hkeys("yayaya");//for (String string : hgets) {//String value = redis.hget("yayaya", string);//System.out.println("string:" + string + ",value:" + value);//}

List values = new ArrayList();

String[] ss= values.toArray(newString[values.size()]);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JedisUtil是一个Java Redis缓存工具类,它封装了Jedis客户端的基本操作,使得使用Redis缓存更加简单方便。 以下是JedisUtil的示例代码: ``` import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisUtil { private static JedisPool jedisPool; static { JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(1000); jedisPoolConfig.setMaxIdle(100); jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379); } public static void set(String key, String value) { try (Jedis jedis = jedisPool.getResource()) { jedis.set(key, value); } } public static String get(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.get(key); } } public static void del(String key) { try (Jedis jedis = jedisPool.getResource()) { jedis.del(key); } } public static void expire(String key, int seconds) { try (Jedis jedis = jedisPool.getResource()) { jedis.expire(key, seconds); } } public static boolean exists(String key) { try (Jedis jedis = jedisPool.getResource()) { return jedis.exists(key); } } } ``` 在上面的代码中,我们使用了JedisPool来管理Jedis连接,它的作用是维护一定数量的Jedis连接,以便在需要时从池中获取连接,减少了创建和关闭连接的开销。 在使用JedisUtil时,我们只需要调用set、get、del、expire和exists等方法,就可以完成对Redis缓存的操作。 例如,要将一个键值对("name", "Tom")存入Redis中,可以使用以下代码: ``` JedisUtil.set("name", "Tom"); ``` 要获取键为"name"的值,可以使用以下代码: ``` String name = JedisUtil.get("name"); ``` 同时,JedisUtil还提供了删除、设置过期时间和判断键是否存在等方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值