`
taiwei.peng
  • 浏览: 234404 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

redis 工具类

阅读更多

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;

     }

 

}

 

分享到:
评论

相关推荐

    Redis工具类

    在Java开发中,为了方便地操作Redis,通常会封装一个Redis工具类,提高代码的复用性和易用性。本篇文章将深入探讨标题为"Redis工具类"的知识点,包括`valueOperations`和`RedisTemplate`的使用,以及它们在`Redis...

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

    在实际开发中,一个良好的Redis工具类通常会封装这些基础操作,提供更友好的API,例如批量操作、连接池管理、异常处理等。工具类的设计应考虑线程安全、资源释放以及错误处理,以确保代码的健壮性。 总的来说,这个...

    redis工具类

    redis工具类,整合springmvc,用来操作redis,获取数据的工具类,包括初始化和具体操作

    redis工具类-Java开发

    在 Java 开发中,Redis 的工具类通常用于简化与 Redis 服务器之间的交互过程。这些工具类提供了方便的方法来执行常见的 Redis 操作,例如设置键值对、获取数据、删除键等。通过使用这些工具类,开发者能够更加高效地...

    spring-redis工具类

    Spring整合Redis工具类,导入redis依赖,并使用工具类,不必使用RedisTemplate调用redis,并且采用java更常用的方式调用方法。

    springboot 集成封装redis工具类redisUtils和单元测试

    文章是redisUtils工具类的封装,和基于springboot环境的单元测试; 文中封装了redis的众多方法,希望对您有所帮助。

    Jedis工具类/redis工具类

    非常全面的一个java连接redis操作的工具类

    java操作redis工具类与配置文件,详细版

    创建Redis工具类** 接下来,编写一个`RedisUtil`工具类,用于管理Redis连接和提供常用操作方法。以下是一个简单的示例: ```java import redis.clients.jedis.Jedis; import java.util.Properties; public class ...

    最完整redis工具类_redis_Redist工具类_fewyit_redis工具类_

    Fewyit Redis工具类是为了简化Redis操作而设计的Java库,它封装了各种常见的Redis操作,使得在开发过程中能够更加便捷地与Redis进行交互。下面将详细介绍这个工具类的主要功能及其使用方法。 1. **连接管理** - `...

    redis工具类以及redis 连接池配置

    工具类中包括存放hash表键值对,键值对以map的方式储存,删除键值对,永久存放键值对,设置过期时间,需要的直接去gitHab上看https://github.com/1610220353/advancedGiants/tree/master/src/main

    Redis工具类,方便缓存读写

    在Java开发中,为了方便地与Redis交互,我们通常会编写或使用已有的Redis工具类。这个“Redis工具类”就是为了简化Redis的读写操作而设计的,它能够帮助开发者更高效、更便捷地在应用程序中集成Redis功能。 Redis...

    Redis工具类.rar

    Redis工具类是为了简化与Redis交互而创建的Java代码库,它可以极大地提高开发效率,帮助开发者快速实现对Redis的操作。以下是一些关于Redis工具类的重要知识点: 1. **连接管理**:Redis工具类通常会包含连接池的...

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

    在Java开发中,为了方便与Redis进行交互,通常会封装一个工具类,本文将详细介绍如何封装一个基于Redis操作字符串的工具类。 在`RedisPoolUtils`这个类中,我们可以看到它是对Jedis或Lettuce等Redis客户端的进一步...

    redis utils 工具类

    Redis Utils工具类是Java开发中常见的一种封装,用于简化与Redis数据库的交互操作。Redis是一种高性能的键值存储系统,广泛应用于缓存、消息队列、数据持久化等多个场景。在Java开发中,为了提高代码的可读性和复用...

    springboot StringRedisTemplate redis工具类

    redis工具类,继承StringRedisTemplate类,重写父类方法操作redis

    该文件是宝塔redis工具类

    "宝塔Redis工具类"指的是宝塔面板中用于管理和操作Redis数据库的一系列功能或代码模块。 Redis工具类通常包含以下关键知识点: 1. **连接管理**:工具类会提供连接Redis服务器的方法,包括建立、关闭和复用连接。...

Global site tag (gtag.js) - Google Analytics