`
renjie120
  • 浏览: 237739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
博客专栏
D11bba82-ec4a-3d31-a3c0-c51130c62f1c
Java应用集锦
浏览量:22914
社区版块
存档分类
最新评论

自己写的一个jedis操作模板类

阅读更多

jedis是java的redis客户端程序,在spring下面有专门的jar包提供了一个现成的模板类。不过,自己为了练习,需要一个超级简单的对redis操作的工具类。于是,就随便写了一个。

 

功能很简单,通过这个可以对redis进行一些常规操作,用于添加一些测试数据等,并可以熟悉一下java的模板设计模式。

 

代码不是想取代什么框架,不是重复造轮子,就是练习,高手可以直接绕道,初学者可以学习如下东西:

1.读取properties文件

2.使用内部类方式创建的单例类,天生支持多线程

3.jedis的基本使用方法

4.模板模式的使用

 

最终的使用示例:

RedisTemplate util = new RedisTemplate();
/**
 * 在一个事务中提交多个redis操作
 */
util.consoleWithTrancation(new RedisTransactionCallback() {
	@Override
	public void execute(Transaction t) {
		t.set("nname", "1111");
		t.set("nname1", "222");
		t.set("nname2", "333");
	}
});

/**
 * 在一个管道中处理多个redis操作.
 */
util.consoleWithPipe(new RedisPipelineCallback() {
	@Override
	public void execute(Pipeline p) {
		p.set("nn2ame", "1111");
		p.set("nn2ame1", "222");
		p.set("nn2ame2", "333");
	}
});

/**
 * 进行一个redis操作.
 */
util.console(new RedisCallback() {
	@Override
	public void execute(Jedis j) {
		j.set("haha", "还是是多少多少看");
	}
});

 

核心的jedis操作封装类,包括创建一个jedispool对象:

package brightmoon.redis;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import brightmoon.util.Util;

/**
 * redis处理工具类. 包含读取配置文件,初始化jedispool,关闭连接等步骤.
 * 
 * @author lsq
 * 
 */
public class RedisUtil {
	protected Log log = LogFactory.getLog(this.getClass().getName());
	private Properties pros;

	private RedisUtil() {
		init();
		initialPool();
	}

	private static class SingletonHolder {
		private static RedisUtil instance = new RedisUtil();
	}

	public static RedisUtil getInstance() {
		return SingletonHolder.instance;
	}

	private String host;
	private String port;
	private String maxActive;
	private String maxIdle;
	private String testOnBorrow;
	private String maxWait;
	private JedisPool jedisPool;

	private void init() {
		InputStream in = null;
		try {
			pros = new Properties();
			in = this.getClass().getResourceAsStream("/redis.properties");
			pros.load(in);

			host = pros.getProperty("host");
			port = pros.getProperty("port");
			maxActive = Util.notBlank(pros.getProperty("maxActive"), "20");
			maxWait = Util.notBlank(pros.getProperty("maxWait"), "5");
			maxIdle = Util.notBlank(pros.getProperty("maxIdle"), "1000");
			testOnBorrow = Util.notBlank(pros.getProperty("testOnBorrow"),
					"false");
		} catch (Exception ex) {
			log.error("没有找到redis配置文件", ex);
		} finally {
			if (in != null)
				try {
					in.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}

	private void initialPool() {
		JedisPoolConfig config = new JedisPoolConfig();
		config.setMaxActive(Integer.parseInt(maxActive));
		config.setMaxIdle(Integer.parseInt(maxIdle));
		config.setMaxWait(Integer.parseInt(maxWait));
		config.setTestOnBorrow("true".equals(testOnBorrow));
		jedisPool = new JedisPool(config, host, Integer.parseInt(port));
	}

	public Jedis getJedis() {
		return jedisPool.getResource();
	}

	/**
	 * 释放被损坏的jedis.
	 * 
	 * @param jd
	 */
	public void releaseBrokenJedis(Jedis jd) {
		jedisPool.returnBrokenResource(jd);
		jd = null;
	}

	/**
	 * 从连接池中释放jedis
	 * 
	 * @param jd
	 */
	public void releaseJedis(Jedis jd) {
		jedisPool.returnResource(jd);
		jd = null;
	}
}

 

代码详细见附件!

分享到:
评论

相关推荐

    spring boot + jedis

    接下来,我们将创建一个Jedis模板类,以封装Redis操作。例如,创建一个`JedisTemplate.java`文件: ```java import redis.clients.jedis.Jedis; public class JedisTemplate { private Jedis jedis; public ...

    jedis-2.8.1-and-spring-4.0.8 下载

    Spring 4.0.8是Spring框架的一个重要版本,它具有良好的兼容性和稳定性,支持Java 6及以上版本,并且与各种数据库、模板引擎和Web框架良好集成。 将Jedis与Spring结合,可以利用Spring的IoC容器管理Jedis实例,实现...

    springboot-jedis.zip

    Spring Data Redis提供了一个名为`RedisTemplate`的模板类,它是操作Redis的主要接口。我们可以通过Spring Boot的自动配置来获取实例,或者自定义配置: ```java @Autowired private RedisTemplate, Object> ...

    jedis+redisson哨兵模式.zip

    而Redisson是一个基于Jedis的高级客户端,它不仅包含Jedis的功能,还额外提供了一套完整的分布式解决方案,如分布式锁、信号量、原子计数器等。在这个"jedis+redisson哨兵模式.zip"资源中,我们主要关注的是如何在...

    征服 Redis + Jedis + Spring (三)—— 列表操作

    在实际应用中,如果你需要在 Spring 中使用 Jedis 和 Redis 的列表功能,可以创建一个 Redis 配置类,配置 JedisConnectionFactory 并注入到 RedisTemplate 中。例如: ```java @Configuration public class Redis...

    spring-data + jedis + redis代码

    3. 创建一个RedisTemplate或StringRedisTemplate bean,这是Spring Data提供的模板类,用于执行Redis操作。 4. 使用Spring Data的注解(如@Repository、@EnableRedisRepositories)来定义仓库接口,并让Spring自动...

    jedis.zip——java开发redis的工具类

    `JedisTemplate`是核心的模板类,它封装了Jedis客户端的操作,遵循设计模式中的模板方法模式。这个类通常会提供各种Redis操作的抽象方法,如字符串操作、哈希表操作、列表操作、集合操作以及有序集合操作等。开发者...

    spring整合redis

    RedisTemplate是一个高度抽象的模板类,封装了与Redis的通信逻辑,提供了更加方便和强大的数据操作。我们首先需要配置RedisTemplate,设置其序列化机制(默认为StringRedisSerializer),以及连接工厂(通常使用...

    Xmemcached/jedis springdemo

    【Xmemcached/jedis Spring Demo】是一个整合了Xmemcached和jedis的Spring示例项目,旨在帮助开发者理解和学习如何在Spring框架中集成并使用这两种流行的NoSQL客户端库。Xmemcached是Java编写的高效、易用的...

    征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)

    然后,可以通过`RedisTemplate`或`StringRedisTemplate`来操作Redis数据,这些模板类提供了与Redis命令对应的Java方法。 例如,使用`StringRedisTemplate`进行`HMSET`操作: ```java @Autowired private ...

    Redis最全资料+工具+案例+详细说明(有单独使用的jedis也有结合spring使用的redis)

    在Java开发中,Redis的使用通常会涉及到Jedis库,这是一个非常流行的Java客户端,用于连接和操作Redis服务器。 首先,我们要了解如何使用Jedis。Jedis的使用主要包括连接Redis服务器、执行命令以及断开连接。例如,...

    redis集群连接及工具类DEMO

    `RedisTemplate`是Spring Data Redis提供的核心模板类,用于执行各种Redis操作。如果主要操作的是字符串类型数据,可以使用`StringRedisTemplate`,它是`RedisTemplate`的子类,优化了字符串操作。 5. **工具类...

    java使用的redis操作架包

    接着,可以声明RedisTemplate或StringRedisTemplate bean,这两个模板类提供了丰富的操作Redis的方法。Spring Data Redis还支持Repository模式,通过定义接口,可以自动生成相应的Redis操作方法。 2. **Jedis** ...

    Redis操作工具类.zip

    在Java开发中,为了方便地与Redis进行交互,通常会封装一个工具类(RedisUtil),以便于代码的复用和简化操作。这个压缩包包含了一个名为`RedisUtil`的Java工具类和一个`README.md`的介绍文档,下面将详细讲解这两个...

    java redis 各类型操作实例

    在实际应用中,通常会封装一个Redis模板类,以更高效、安全地管理和执行这些操作。同时,注意合理利用连接池,如JedisPool,以提高性能并防止资源泄漏。在项目中,根据具体需求选择合适的数据结构,结合Java的Jedis...

    springmvc整合redis需要的三个jar包.zip

    2. **创建RedisTemplate**:基于`JedisConnectionFactory`,你可以创建一个`RedisTemplate`,这是一个用于执行Redis命令的模板类,提供了各种操作Redis数据结构的方法。 3. **配置Repository**:Spring Data Redis...

    Spring boot -redis

    Spring Data Redis 提供了 RedisTemplate 和 StringRedisTemplate 两个核心模板类,用于执行 Redis 的各种操作。 Jedis 是一个 Java 客户端,用于连接和操作 Redis 服务器。它提供了丰富的 API,支持所有 Redis ...

    SpringDataRedisDemo

    例如,你可以创建一个`RedisRepository`的子接口,然后定义自己的CRUD操作,Spring Data会自动实现这些方法。 8. **Spring Data Redis的其他功能** - 除了基本数据结构,Spring Data Redis还支持其他高级特性,如...

    Spring mvc整合redis实例(redis连接池)

    有了连接工厂后,我们可以创建一个`RedisTemplate`,它是Spring Data Redis提供的模板类,简化了操作Redis的API。 ```xml ``` 现在我们已经配置好了基础的Redis连接,接下来是实现业务逻辑。在...

Global site tag (gtag.js) - Google Analytics