`
lfc_jack
  • 浏览: 144786 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

java代码简单封装使用redis

 
阅读更多

package com.ray.redis;

import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.util.ArrayList;
import java.util.List;

/**
 * 
 */
public class RedisUtil {
	/**
	 * 日志记录
	 */
	protected final Logger log = Logger.getLogger(RedisUtil.class);
	// redis服务器IP
	private static String ADDR = "127.0.0.1";

	// redis的端口号
	private static int PORT = 6379;

	// 访问密码,因为开机关机,redis会自动清除所有的东西,所以没有必要设置密码
	private static String AUTH = "stockea";

	// 可用连接实例的最大数目,默认为8
	// 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此
	// 时pool的状态为exhausted(耗尽)。
	private static int MAX_ACTIVE = 1024;

	// 控制一个pool最多有多少个状态为idle(空闲)的jedis实例,默认也是8
	private static int MAX_IDLE = 200;

	// 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。
	// 如果超过等待时间,则直接抛出JedisConnectionException
	private static int MAX_WAIT = 10000;

	private static int TIMEOUT = 10000;

	// 在borrow一个redis实例时,是否提前进行validate操作;
	// 如果为true,则得到的jedis实例均是可用的
	private static boolean TEST_ON_BORROW = true;

	private static JedisPool jedisPool = null;

	/**
	 * 初始化Redis连接池 Jedis的连接池配置需要用到
	 * 
	 * 所以要引入commons-pool.jar 版本必须是 2+以前
	 * */
	static {
		try {
			JedisPoolConfig config = new JedisPoolConfig();
			// 老版本是setMaxActive
			config.setMaxTotal(MAX_ACTIVE);
			config.setMaxIdle(MAX_IDLE);
			// 老版本是maxMaxWait
			config.setMaxWaitMillis(MAX_WAIT);
			config.setTestOnBorrow(TEST_ON_BORROW);
			jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);// 有密码的时候传入AUTH
			
			

		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 获取Jedis实例
	 * */
	public synchronized static Jedis getJedis() {
		try {
			if (jedisPool != null) {
				Jedis resource = jedisPool.getResource();
				return resource;
			} else {
				return null;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 释放jedis资源
	 * */

	@SuppressWarnings("deprecation")
	public static void returnResource(final Jedis jedis) {
		if (jedis != null) {
			jedisPool.returnResourceObject(jedis);
		}
	}

	/**
	 * 获取List集合
	 * 
	 * @param key
	 *            存入的key
	 * @param begin
	 * @param end
	 * @param inseList
	 *            插入的集合
	 * @return
	 */
	public static List<String> getList(String key, int begin, int end) {

		Jedis jedis = RedisUtil.getJedis();
		List<String> list = new ArrayList<String>();
		try {
			if (begin < 0) {

				throw new IllegalAccessError("遍历lrange 开始位置不能小于0");

			}
			if (begin == end) {

				throw new IllegalAccessError("遍历lrange 开始位置不能等于结束位置");

			} else {

				list = jedis.lrange(key, begin, end);
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}
		return list;

	}

	/**
	 * 保存List集合
	 * 
	 * @param key
	 *            存入的key
	 * @param begin
	 * @param end
	 * @param saveList
	 *            插入的集合
	 * @return
	 */
	public static void saveList(String key, List<String> saveList) {

		Jedis jedis = RedisUtil.getJedis();
		try {
			if (saveList.size() == 0) {
				
				throw new IllegalAccessError("保存的集合大小不能为0");
				
			} else {
				
				for (int i = 0; i < saveList.size(); i++) {
					jedis.lpush(key, saveList.get(i));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}

	}

	/**
	 * 根据key来获取对应的value
	 * 
	 * @param key
	 * @return
	 */
	public static String getStringValue(String key) {

		Jedis jedis = RedisUtil.getJedis();
		String valueString = null;
		try {
			boolean falg = jedis.exists(key);
			if (falg == true) {
				valueString = jedis.get(key);
			} else {

				throw new IllegalAccessError("根据key查询时,key不存在!");
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}
		return valueString;

	}
	/**
	 * 根据key来保存对应的value
	 * 
	 * @param key
	 * @return
	 */
	public static void saveStringValue(String key,String value) {

		Jedis jedis = RedisUtil.getJedis();
		
		try {
			
			jedis.set(key, value);

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}
		

	}


	/**
	 * 判断key是否存在
	 * 如果存在
	 * 删除
     * 
     */
	
	/**
	 * 根据key来获取对应的value
	 * 
	 * @param key
	 * @return 
	 * @return
	 */
	public static  void delteKey(String key) {

		Jedis jedis = RedisUtil.getJedis();
		try {
			boolean falg = jedis.exists(key);
			if (falg == true) {
				
			jedis.del(key);
			 
			} else {

				throw new IllegalAccessError("根据key查询时,key不存在!");
			}

		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}
		

	}

	
	/**
	 * 清空所有的 keys
	 * 执行时,慎重!
	 */
	public static void deleteAllKeys(){
		Jedis jedis = RedisUtil.getJedis();
		try {
			
			jedis.flushAll();
		} catch (Exception e) {
			e.printStackTrace();
		} finally {
			RedisUtil.returnResource(jedis);
		}
		

}
}






需要的jar包: 

  • 大小: 9.9 KB
分享到:
评论

相关推荐

    java操作redis代码和redis工具类相关包资料

    最后,"代码"目录下应包含实际的Java代码示例,可以参考和学习。 在实际开发中,一个良好的Redis工具类通常会封装这些基础操作,提供更友好的API,例如批量操作、连接池管理、异常处理等。工具类的设计应考虑线程...

    Redis客户端Java服务接口封装

    封装Redis客户端的主要目的是为了提高代码的可读性和可维护性。通过创建一个服务层,我们可以将具体的Redis命令和操作隐藏在内部,对外只暴露简单的业务方法,这样可以避免在业务代码中直接使用低级API,从而降低...

    Java操作Redis实例,操作封装

    本文将深入探讨如何在Java环境中进行Redis操作,并对这些操作进行封装,以实现更高效、可复用的代码。 首先,我们需要一个连接池来管理Redis连接,这有助于减少创建和销毁连接的开销。Jedis是Java中常用的Redis...

    java redis 各类型操作实例

    本文将深入探讨如何使用Java与Redis进行各种类型的操作,并基于Maven项目管理来构建我们的示例代码。 首先,为了在Java项目中使用Redis,我们需要引入Jedis库,这是一个流行的Java Redis客户端。在Maven项目的`pom....

    java中redis锁的封装

    内容:封装好的redis锁 使用场景: 1.并发情况下 2.对某个字段状态的处理 3.支付回调,重复收到回调数据 使用方法: Object result = redisLockTemplate.execute("REDIS:LOCK:" + id, 1, TimeUnit.SECONDS, new ...

    java 对Redis的导入和导出

    如果需要在多台Redis服务器间迁移数据,可以将上述逻辑封装为一个服务,通过消息队列或定时任务触发迁移操作,确保数据一致性。 通过以上步骤,我们可以实现Java对Redis数据的导入和导出。这不仅可以帮助我们在...

    Redis操作字符串工具类封装,Redis工具类封装

    通过以上封装,我们可以在项目中便捷地使用Redis进行字符串操作,而无需关心连接的建立和释放,提高了代码的可读性和可维护性。同时,`RedisPoolUtils`类中的方法可以根据实际需求继续扩展,以满足更多复杂的业务...

    Redis 缓存代码

    Redis 是一个高性能的键值对数据存储系统,常被用作...通过以上知识点,我们可以编写出高效、可靠的Java代码来利用Redis进行数据缓存。在实践中,还需要根据具体业务场景进行优化和调整,以最大化Redis的性能优势。

    Java操作Redis,实现String、List、Map的set和get

    本文将深入探讨如何使用Java来操作Redis,包括设置和获取String、List和Map类型的数据,并且会介绍如何进行封装和单元测试。 首先,要与Redis进行交互,我们需要引入Jedis库,这是Java最常用的Redis客户端。在你的...

    java基于Redis实现排行榜功能源码

    在本文中,我们将深入探讨如何使用Java和Redis的有序集合(Zset)来实现一个排行榜功能。Redis是一个高性能的键值存储系统,它的有序集合数据结构非常适合用来构建排行榜,因为可以方便地进行分数排序和成员操作。 ...

    java连接redis

    在实际项目中,我们通常会创建一个 RedisClient 类,封装连接和操作逻辑,提供更高级别的接口给业务代码使用。例如,为每个数据结构类型创建单独的方法,以便于管理和维护。 总的来说,Java 连接 Redis 需要安装 ...

    redis utils 工具类

    在Java开发中,为了提高代码的可读性和复用性,通常会创建一个或多个工具类来封装Redis的操作。下面我们将详细探讨RedisUtils工具类的关键知识点。 1. **Jedis库的使用** RedisUtils通常依赖于Jedis,这是一个Java...

    java源码:使用Redis存放Session RedisManager.zip

    "java源码:使用Redis存放Session RedisManager.zip"就是一个实例,展示了如何通过Java代码实现这一功能。 首先,Redis是一个开源、高性能的键值存储系统,适合存储字符串、哈希、列表、集合等多种数据结构,特别...

    java redis demo

    本示例“java redis demo”是关于如何在Java应用程序中集成并有效使用Redis的一个实例,主要涉及Jedis连接池以及各种数据类型的操作。 首先,Jedis是一个Java客户端,用于与Redis服务器进行通信。它提供了丰富的API...

    Java调用Redis 简单Demo

    在IT行业中,Redis是一个高性能的键值...在实际项目中,通常会将Redis操作封装到一个单独的服务或工具类中,以提供更友好的API给业务代码使用。了解并熟练掌握这些知识点,将有助于提升Java应用的数据处理能力和性能。

    redis常用方法封装

    这个封装通过详细注释,使得开发者更容易理解和使用这些操作,降低了与Redis交互的复杂性,提高了代码的可读性和维护性。在实际应用中,可以根据需求选择相应的方法,灵活地处理不同场景的数据存储和检索问题。同时...

    JAVA整合JEDIS操作访问Redis的工具类

    总之,`JAVA整合JEDIS操作访问Redis的工具类`通过Jedis库实现了与Redis服务器的交互,并通过`CacheUtils`工具类进一步封装了常用操作,降低了使用Redis的门槛。这使得开发者能够更专注于业务逻辑,而不是底层的连接...

    若依框架整合Redis,包含若依原码和Windows版本地可以启动的redis项目

    RuoYi是一个基于Java技术开发的后台管理系统,基于技术组合(SpringBoot+Vue),内置模块有:部门管理、角色用户、菜单即按钮授权、数据权限、系统参数、日志管理、代码生成、表单构建等。支持多数据源、支持分布式...

    java连接redis的jedis.jar包

    集成完成后,就可以在Java代码中创建Jedis实例,连接到Redis服务器了。基本步骤如下: 1. 创建Jedis实例:需要提供Redis服务器的IP地址和端口号。 ```java Jedis jedis = new Jedis("localhost", 6379); ``` 2. ...

Global site tag (gtag.js) - Google Analytics