Jedis操作redis工具类 JedisUtil

JedisUtil是一个用于操作Redis的工具类,提供了一系列方法,包括设置和获取key的过期时间、清空所有key、重命名key、删除key、判断key是否存在、对集合进行排序、向集合中添加、删除成员等操作。该类还实现了资源的回收,确保了Jedis对象的正确关闭。
摘要由CSDN通过智能技术生成
package com.wxj.common;

import java.util.List;
import java.util.Map;
import java.util.Set;

import redis.clients.jedis.BinaryClient.LIST_POSITION;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.SortingParams;
import redis.clients.util.SafeEncoder;

public class JedisUtil {
       /*缓存生存时间  */
	private int expire = 60000;
	
	  /*对key的操作方法 */
	private static JedisPool jedisPool = null;
	
	public JedisPool getPool(){
		return jedisPool;
	}
	
	/*从jedispool中获取jedis对象*/
	public Jedis getJedis(){
		if(jedisPool == null){
			throw new NullPointerException();
		}
		return jedisPool.getResource();
	}	
	
	public static JedisPool getJedisPool(){
		return jedisPool;
	}
	
	public static void setJedisPool(JedisPool jedisPool){
		JedisUtil.jedisPool = jedisPool;
	}
	
	
	/*
	 * 在finaally中回收jedis
	 */
	public void returnJedis(Jedis jedis){
		if(null != jedis && null != jedisPool){
			jedisPool.returnResource(jedis);
		}
	}
	
	/*
	 * 销毁链接(放入catch
	 */
	public static void returnBrokenResource(Jedis jedis){
		if (null !=jedis && null !=jedisPool) {
			jedisPool.returnResource(jedis);
		}
	}
	
	/*
	 * 设置过期时间
	 */
	public void expire(String key,int seconds){
		if(seconds<0){
			return;
		}
		Jedis jedis = getJedis();
		jedis.expire(key, seconds);
		returnJedis(jedis);
	}
	
	/*
	 * 设置默认过期时间
	 */
	public void expire(String key){
		expire(key,expire);
	}
	
	/*
	 * 清空所有key
	 */
	public String flushAll(){
		Jedis jedis = getJedis();
		String stata = jedis.flushAll();
		returnJedis(jedis);
		return stata;
	}
	
	/*
	 * 更改key 返回值是状态吗
	 */
	
	public String rename(String oldkey,String newkey){
		return rename(SafeEncoder.encode(oldkey),SafeEncoder.encode(newkey));
	}
	
	/*
	 * 更改key,仅当新key不存在时才执行
	 */
	public long renamenx(String oldkey,String newkey){
		Jedis jedis = getJedis();
		long status = jedis.renamenx(oldkey, newkey);
		returnJedis(jedis);
		return status;
		
	}
	
	/*
	 * 更改key
	 */
	public String rename(byte[] oldkey,byte[] newkey){
		Jedis jedis = getJedis();
		String status = jedis.rename(oldkey,newkey);
		returnJedis(jedis);
		return status;	
	}
	
	/*
	 * 设置key的过期时间,以秒为单位             返回值是影响的记录数
	 */
	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,格里高利历)的偏移量
	 */
	public long expireAt(String key,long timestamp){
		Jedis jedis = getJedis();
		long count = jedis.expireAt(key, timestamp);
		returnJedis(jedis);
		return count;
	}
	/*
	 * 查询key的过期时间       以秒为单位的时间表示返回的是指定key的剩余的生存时间
	 */
	public long ttl(String key){
		Jedis sjedis = getJedis();
		long len = sjedis.ttl(key);
		returnJedis(sjedis);
		return len;
		
	}
	/*
	 * 取消对key过期时间的设置  将带生存时间的转换成一个永不过期的key
	 * 
	 * 当移除成功时返回1,key不存在或者移除不成功时返回0
	 */
	public long persist(String key){
		Jedis jedis = getJedis();
		long count = jedis.persist(key);
		returnJedis(jedis);
		return count;	
	}
	
	/*
	 * 删除keys对应的记录,可以是多个key
	 * 
	 * 返回值是被删除的数量
	 */
	public long del(String...keys){
		Jedis jedis = getJedis();
		long count = jedis.del(keys);
		returnJedis(jedis) ;
		return count;
	}
	
	/*
	 * 删除keys对应的记录,可以是多个key
	 */
	public long del(byte[]...keys){
		Jedis jedis = getJedis();
		long count = jedis.del(keys);
		returnJedis(jedis);
		return count;
	}
	/*
	 * 判断key是否存在
	 */
	public boolean exists(String key){
		Jedis jedis = getJedis();
		boolean exists = jedis.exists(key);
		returnJedis(jedis);
		return exists;
	}
	
	/*
	 * 对List,set,SortSet 进行排序,如果集合数据较大应避免使用这个方法
	 * 
	 * 返回排序后的结果,默认升序 sort key Desc为降序
	 */
	public List<String> sort(String key){
		Jedis jedis = getJedis();
		List<String> list = jedis.sort(key);
		
		returnJedis(jedis);
		return list;
	}
	
	/*
	 * 对List,set,SortSet 进行排序,如果集合数据较大应避免使用这个方法
	 * 
	 * 返回排序后的结果,默认升序 sort key Desc为降序
	 */
	public List<String> sort(String key,SortingParams parame){
		Jedis jedis = getJedis();
		List<String> list = jedis.sort(key,parame);
		returnJedis(jedis);
		return list;
	}
	/*
	 * 返回指定key的存储类型
	 */
	
	public String type(String key){
		Jedis jedis = getJedis();
		String type = jedis.type(key);
		returnJedis(jedis);
		return type;
	}
	
	/*
	 * 查找所有匹配模式的键
	 * 
	 * key的查询表达式 *代表任意多个 ?代表一个
	 */
	public Set<String> Keys(String pattern){
		Jedis jedis = getJedis();
		Set<String> set = jedis.keys(pattern);
		
		returnJedis(jedis);
		return set;
	}
	
	/*************************set部分*******************************/
	/*
	 * 向set添加一条记录,如果member已经存在则返回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中元素个数
	 * 
	 * @return 元素个数
	 */
	public long scard(String key){
		Jedis jedis = getJedis();
		Long count = jedis.scard(key);		
		returnJedis(jedis);
		return count;
	}
	
	/*
	 * 返回从第一组和所有的给定集合之间的有差异的成员
	 * 
	 * @return 有差异成员的集合
	 */
	public Set<String> sdiff(String...keys){
		Jedis jedis = getJedis();
		Set<String> set = jedis.sdiff(keys);
		returnJedis(jedis);
		return set;
	}
	
	/*
	 * 这个命令的作用和 SDIFF 类似,但它将结果保存到 destination 集合,而不是简单地返回结果集,如果目标已存在,则覆盖
	 * 
	 * @return  新集合的记录数
	 */
	public long sdiffstore(String newkey,String...keys){
		Jedis jedis = getJedis();
		Long count = jedis.sdiffstore(newkey, keys);
		returnJedis(jedis);
		return count;
	}
	
	/*
	 * sinter 返回给定集合交集成员,如果其中一个集合为不存在或为空,则返回空set
	 * @return 交集成员的集合
	 */
	public Set<String> sinter(String...keys){
		Jedis jedis = getJedis();
		Set<String> set = jedis.sinter(keys);
		returnJedis(jedis);
		return set;
	}
	/*
	
  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
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还提供了删除、设置过期时间和判断键是否存在等方法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值