封装redis(jedis)

1、添加pom文件
<!-- Jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.2.1</version>
</dependency>

2、添加redis.properties文件
book.redis.pool.maxWait=1000
book.redis.pool.maxActive=1024
book.redis.pool.maxIdle=200
book.redis.pool.ip=localhost
book.redis.pool.port=6379

3、添加RedisPool.java类

public class RedisPool<T> {
private String poolName;
private String ip;
private String pore;
private int maxWait;
private int maxActive;
private int maxIdle;
private static JedisPool jedisPool;

public RedisPool() {
}

public RedisPool(String poolName, String ip, String pore, int maxWait, int maxActive, int maxIdle) {

this.poolName = poolName;
this.ip = ip;
this.pore = pore;
this.maxWait = maxWait;
this.maxActive = maxActive;
this.maxIdle = maxIdle;
createPool();
}

//创建池
private void createPool(){
JedisPoolConfig jedisPoolConfig=new JedisPoolConfig();
jedisPoolConfig.setMaxActive(maxActive);
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWait(maxWait);
jedisPoolConfig.setTestOnBorrow(false);
jedisPool =new JedisPool(jedisPoolConfig,ip, SsmUtil.convert(pore,6379),maxWait);

}

public String getPoolName() {
return poolName;
}

public void setPoolName(String poolName) {
this.poolName = poolName;
}

public String getIp() {
return ip;
}

public void setIp(String ip) {
this.ip = ip;
}

public String getPore() {
return pore;
}

public void setPore(String pore) {
this.pore = pore;
}

public int getMaxWait() {
return maxWait;
}

public void setMaxWait(int maxWait) {
this.maxWait = maxWait;
}

public int getMaxActive() {
return maxActive;
}

public void setMaxActive(int maxActive) {
this.maxActive = maxActive;
}

public int getMaxIdle() {
return maxIdle;
}

public void setMaxIdle(int maxIdle) {
this.maxIdle = maxIdle;
}

//普通类set方法
public void set(String key, String value) {
boolean flag = true;
Jedis jedis = jedisPool.getResource();
try{
if(jedis!=null){
jedis.set(key, value);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
jedisPool.returnResource(jedis);
}else{
jedisPool.returnBrokenResource(jedis);
}
}
}

//String 类get方法
public String get(String key) {
boolean flag = true;
Jedis jedis =jedisPool.getResource();
try{
if(jedis!=null){
return jedis.get(key);
}
}catch(Exception e){
flag = false;
e.printStackTrace();
}finally{
if (flag){
//把数据还回数据池
jedisPool.returnResource(jedis);
}else{
//销毁数据
jedisPool.returnBrokenResource(jedis);
}
}
return null;
}

}

4、添加 RedisUtil类

public class RedisUtil {

/**
* redis连接池Map
* 可以有多个连接池对象
*/
private static HashMap<String, RedisPool> redisPoolMap = new HashMap<>();

private final static String REDIS_PROFILE = "properties/redis.properties";

/**
* 获取连接池对象
*
* @param poolName 连接池的名称 需要和配置文件对应
* @return 连接池对象
*/
public static synchronized RedisPool getRedisPool(String poolName) {
RedisPool rp = null;
if (redisPoolMap.containsKey(poolName)) {
rp = redisPoolMap.get(poolName);
} else {
//读取poolname对应的配置文件的属性来构建poolName
try {
Properties pro = PropertiesUtil.getProperties(REDIS_PROFILE,"utf-8");
rp = createRedisPool(poolName, pro);
redisPoolMap.put(poolName, rp);
} catch (Exception e) {
e.printStackTrace();
}
}
return rp;
}
//创建redis数据源
private static RedisPool createRedisPool(String poolName, Properties pro) {
String ip = pro.getProperty(poolName + ".redis.pool.ip");
String port = pro.getProperty(poolName + ".redis.pool.port");
System.out.println(poolName + ".redis.pool.maxWait");
int maxWait = SsmUtil.convert(pro.getProperty(poolName + ".redis.pool.maxWait"), 0);
int maxActive = SsmUtil.convert(pro.getProperty(poolName + ".redis.pool.maxActive"), 0);
int maxIdle = SsmUtil.convert(pro.getProperty(poolName + ".redis.pool.maxIdle"), 0);
System.out.println((poolName + ".redis.pool.ip") + ":[ip:" + ip + " 端口:" + port + " 等待:" + maxWait + " maxActive:" + maxActive + " maxIdle:" + maxIdle + "]");
return new RedisPool(poolName, ip, port, maxWait, maxActive, maxIdle);
}

}

5、添加PropertiesUtil类
public class PropertiesUtil {
//用来测试的方法
public static void main(String [] args)
{
Properties p = getProperties("properties/redis.properties","utf-8");
System.out.println(p);
}
//解析properties文件添加到properties类
public static Properties getProperties(String filepath,String charset) {
Properties pro = new Properties();
Reader reader = null;
InputStream is = null;
try{
is = Thread.currentThread().getContextClassLoader().getResourceAsStream(filepath);
reader = new InputStreamReader(is, Charset.forName(charset));
pro.load(reader);
}
catch (Exception e)
{
e.printStackTrace();
}
finally{
if(is!=null){
try {
is.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return pro;
}

}
6、添加 SsmUtil类

public class SsmUtil {

//转换数据类型方法
public static int convert(String property, int i) {

return Integer.parseInt(property);

}
}

时间: 2024-10-09 18:15:32

封装redis(jedis)的相关文章

征服 Redis + Jedis + Spring (一)—— 配置&amp;常规操作(GET SET DEL)

有日子没写博客了,真的是忙得要疯掉. 完成项目基础架构搭建工作,解决了核心技术问题,接着需要快速的调研下基于Spring框架下的Redis操作. 相关链接: 征服 Redis 征服 Redis + Jedis 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL) 征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET) 征服 Redis + Jedis + Spring (三)—— 列表操作 前文有述

Redis实战之征服 Redis + Jedis + Spring (二)

不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然吃了苦,也做个记录,也许以后API升级后,能好用些呢?! 或许,是我的理解不对,没有真正的理解哈希表. 相关链接: Redis实战 Redis实战之Redis + Jedis Redis实战之征服 Redis + Jedis + Spring (一) Redis实战之征服 Redis + Jedis + Spring (二) Redis实战之征服 Redis + Jedis + Spring (三) 一.预期 接上一篇,扩充User属性:

Redis实战之Redis + Jedis[转]

http://blog.csdn.net/it_man/article/details/9730605 2013-08-03 11:01 1786人阅读 评论(0) 收藏 举报 目录(?)[-] 一简单使用Jedis 二池化使用Jedis 三一致性哈希 四Spring封装参考 用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET 等.基于这些限制,有必要考虑Redis! 相关链接: Redis实战 Redis实战之Redis + Jedis R

Redis实战之征服 Redis + Jedis + Spring (一)

相关链接: Redis实战 Redis实战之Redis + Jedis Redis实战之征服 Redis + Jedis + Spring (一) Redis实战之征服 Redis + Jedis + Spring (二) Redis实战之征服 Redis + Jedis + Spring (三) 前文有述,Spring提供了对于Redis的专门支持:spring-data-redis.此外,类似的还有: 我想大部分人对spring-data-hadoop.spring-data-mongodb

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

一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 相关链接: 征服 Redis 征服 Redis + Jedis 征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL) 征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET) 征服 Redis + Jedis + Spring (三)—— 列表

Redis实战之征服 Redis + Jedis + Spring (三)

一开始以为Spring下操作哈希表,列表,真就是那么土.恍惚间发现“stringRedisTemplate.opsForList()”的强大,抓紧时间恶补下. 通过spring-data-redis完成LINDEX, LLEN, LPOP, LPUSH, LRANGE, LREM, LSET, LTRIM, RPOP, RPUSH命令.其实还有一些命令,当前版本不支持.不过,这些List的操作方法可以实现队列,堆栈的正常操作,足够用了. 相关链接: Redis实战 Redis实战之Redis +

db#redis#jedis

pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4

jedis使用线程池封装redis基本操作

redis客户端 jedis 常用的 操作 key value hash list set zset 的基本操作 package cn.zto.util; import java.util.List; import java.util.Map; import java.util.Set; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import red

征服 Redis + Jedis + Spring —— 配置&amp;常规操作

Spring提供了对于Redis的专门支持:spring-data-redis.此外,类似的还有: 我想大部分人对spring-data-hadoop.spring-data-mongodb.spring-data-redis以及spring-data-jpa表示关注. 一.简述 spring把专门的数据操作独立封装在spring-data系列中,spring-data-redis自然是针对Redis的独立封装了. 当前版本1.0.1,主要是将jedis.jredis.rjc以及srp等Redi