package com.dz.im.tools;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtil {
//Redis服务器IP
private static String ADDR = PropertiesUtil.Intance.GetProperty("redis.ip");
//Redis的端口号
private static int PORT = Integer.parseInt(PropertiesUtil.Intance.GetProperty("redis.port"));
//如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
private static int MAX_ACTIVE = Integer.parseInt(PropertiesUtil.Intance.GetProperty("redis.pool.maxActive"));
//控制一个pool最多有多少个状态为idle(空闲的)的jedis实例,默认值也是8。
private static int MAX_IDLE =Integer.parseInt(PropertiesUtil.Intance.GetProperty("redis.pool.maxIdle"));
//等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException;
private static int MAX_WAIT =Integer.parseInt(PropertiesUtil.Intance.GetProperty("redis.pool.maxWait"));
//当调用borrow Object方法时,是否进行有效性检查
private static String TEST_ON_BORROW = PropertiesUtil.Intance.GetProperty("redis.pool.testOnBorrow");
//当调用return Object方法时,是否进行有效性检查
private static String TEST_ON_RETURN = PropertiesUtil.Intance.GetProperty("redis.pool.testOnReturn");
//超时时间
private static int TIMEOUT = Integer.parseInt(PropertiesUtil.Intance.GetProperty("redis.timeout"));;
private static JedisPool jedisPool = null;
/**
* 初始化Redis连接池
*/
private static void initialPool(){
try {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxActive(MAX_ACTIVE);
config.setMaxIdle(MAX_IDLE);
config.setMaxWait(MAX_WAIT);
config.setTestOnBorrow(Boolean.valueOf(TEST_ON_BORROW));
config.setTestOnReturn(Boolean.valueOf(TEST_ON_RETURN));
jedisPool = new JedisPool(config, ADDR, PORT, TIMEOUT);
} catch (Exception e) {
e.printStackTrace();
LoggerUtil.MyLogger.error("init jedispoll error :%s", e);
}
}
/**
* 在多线程环境同步初始化
*/
private static synchronized void poolInit() {
if (jedisPool == null) {
initialPool();
}
}
/**
* 释放jedis资源
* @param jedis
*/
private static void returnResource(final Jedis jedis) {
if (jedis != null && jedisPool !=null) {
jedisPool.returnResource(jedis);
}
}
/**
* 销毁连接
* @param shardedJedis
*/
private static void returnBrokenResource(final Jedis jedis) {
try {
jedisPool.returnBrokenResource(jedis);
} catch (Exception e) {
LoggerUtil.MyLogger.error("returnBrokenResource error", e);
}
}
/**
* 设置String 值
* @param key
* @param value
* @return
*/
public static boolean setString(String key, String value) {
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.set(key, value);
}
return true;
} catch (Exception ex) {
LoggerUtil.MyLogger.error("set String error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return false;
}
/**
* 获取String值
* @param key
* @return value
*/
public static String getString(String key){
String value="";
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
value=jedis.get(key);
}
} catch (Exception ex) {
LoggerUtil.MyLogger.error("get String error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return value;
}
/**
* 删除String值
* @param key
* @return
*/
public static boolean delString(String key) {
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.del(key);
}
return true;
} catch (Exception ex) {
LoggerUtil.MyLogger.error("del String error.", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return false;
}
/**
* 添加到List
* @param key
* @param value
* @return
*/
public static boolean addList(String key, String value) {
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.lpush(key, value);
}
return true;
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis addList error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return false;
}
/**
* 截取List
* @param key 列表key
* @param start 开始位置 从0开始
* @param end 结束位置
* @return
*/
public static List<String> rangeList(String key, long start, long end) {
List<String> msgList=null;
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
//第一个是key,第二个是起始位置,第三个是结束位置, -1表示取得所有
msgList=jedis.lrange(key, start, end);
}
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis range list error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return msgList;
}
/**
* 检查List长度
* @param key
* @return
*/
public static long countList(String key) {
long redisKeyLen=0;
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
redisKeyLen=jedis.llen(key);
}
} catch (Exception ex) {
LoggerUtil.MyLogger.error("countList error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return redisKeyLen;
}
/**
* 根据key,修改List里面的值
* @param key
* @param index
* @param value
* @return
*/
public static void updateListByIndex(String key,int index,String value) {
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.lset(key, index, value);
}
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis updateListByIndex error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
}
/**
* 删除List里面的值
* @param key
* @param count
* @param value
*/
public static void deleteListByIndex(String key,int count,String value){
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.lrem(key, count, value);
}
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis updateListByIndex error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
}
/**
* 添加到Set
* @param key
* @param value
* @return
*/
public static boolean addSet(String key, String value) {
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.sadd(key, value);
}
return true;
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis addSet error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return false;
}
/**
* 添加到Map
* @return
*/
public static boolean addMap(String key,Map<String,String> map){
Jedis jedis=null;
if (jedisPool == null) {
poolInit();
}
try {
if (jedisPool != null) {
jedis = jedisPool.getResource();
jedis.hmset(key, map);
}
return true;
} catch (Exception ex) {
LoggerUtil.MyLogger.error("redis addSet error", ex);
returnBrokenResource(jedis);
} finally {
returnResource(jedis);
}
return false;
}
}
相关推荐
在Java开发中,为了方便地操作Redis,通常会封装一个Redis工具类,提高代码的复用性和易用性。本篇文章将深入探讨标题为"Redis工具类"的知识点,包括`valueOperations`和`RedisTemplate`的使用,以及它们在`Redis...
在实际开发中,一个良好的Redis工具类通常会封装这些基础操作,提供更友好的API,例如批量操作、连接池管理、异常处理等。工具类的设计应考虑线程安全、资源释放以及错误处理,以确保代码的健壮性。 总的来说,这个...
redis工具类,整合springmvc,用来操作redis,获取数据的工具类,包括初始化和具体操作
在 Java 开发中,Redis 的工具类通常用于简化与 Redis 服务器之间的交互过程。这些工具类提供了方便的方法来执行常见的 Redis 操作,例如设置键值对、获取数据、删除键等。通过使用这些工具类,开发者能够更加高效地...
Spring整合Redis工具类,导入redis依赖,并使用工具类,不必使用RedisTemplate调用redis,并且采用java更常用的方式调用方法。
文章是redisUtils工具类的封装,和基于springboot环境的单元测试; 文中封装了redis的众多方法,希望对您有所帮助。
非常全面的一个java连接redis操作的工具类
创建Redis工具类** 接下来,编写一个`RedisUtil`工具类,用于管理Redis连接和提供常用操作方法。以下是一个简单的示例: ```java import redis.clients.jedis.Jedis; import java.util.Properties; public class ...
Fewyit Redis工具类是为了简化Redis操作而设计的Java库,它封装了各种常见的Redis操作,使得在开发过程中能够更加便捷地与Redis进行交互。下面将详细介绍这个工具类的主要功能及其使用方法。 1. **连接管理** - `...
工具类中包括存放hash表键值对,键值对以map的方式储存,删除键值对,永久存放键值对,设置过期时间,需要的直接去gitHab上看https://github.com/1610220353/advancedGiants/tree/master/src/main
在Java开发中,为了方便地与Redis交互,我们通常会编写或使用已有的Redis工具类。这个“Redis工具类”就是为了简化Redis的读写操作而设计的,它能够帮助开发者更高效、更便捷地在应用程序中集成Redis功能。 Redis...
Redis工具类是为了简化与Redis交互而创建的Java代码库,它可以极大地提高开发效率,帮助开发者快速实现对Redis的操作。以下是一些关于Redis工具类的重要知识点: 1. **连接管理**:Redis工具类通常会包含连接池的...
在Java开发中,为了方便与Redis进行交互,通常会封装一个工具类,本文将详细介绍如何封装一个基于Redis操作字符串的工具类。 在`RedisPoolUtils`这个类中,我们可以看到它是对Jedis或Lettuce等Redis客户端的进一步...
Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...
redis工具类,继承StringRedisTemplate类,重写父类方法操作redis
"宝塔Redis工具类"指的是宝塔面板中用于管理和操作Redis数据库的一系列功能或代码模块。 Redis工具类通常包含以下关键知识点: 1. **连接管理**:工具类会提供连接Redis服务器的方法,包括建立、关闭和复用连接。...