ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Jedis操作Redis

2021-06-03 22:06:34  阅读:176  来源: 互联网

标签:Exception Redis Jedis ex key 操作 catch jedis null


 

Jedis操作Redis的常用封装方法

@Resource(name="jedispool")
    private JedisPool pool=null;
    /**
     * 设置缓存对象过期时间
     * @param key 缓存的key
     * @param seconds 秒,多少秒后过期自动销毁
     */
    public boolean expireKey(String key,int seconds){
        Jedis jedis=null;
        ObjectOutputStream w=null;
        ByteArrayOutputStream b=null;
        try{
            jedis=pool.getResource();
            long result=jedis.expire(key.getBytes("utf-8"), seconds);
            return result>1;
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{if(jedis!=null){pool.returnResourceObject(jedis);}}catch(Exception ex){}
            try{b.close();}catch(Exception ex){}
            try{w.close();}catch(Exception ex){}
        }
        return false;
    }
    
    /**
     * 查询缓存对象还有多少秒过期
     * @param key 缓存对象的key
     * @return 剩余秒数。   如果key不存在返回-2,如果没有为key设置过期时间返回-1
     */
    public long selectGqTime(String key){
        Jedis jedis=null;
        ObjectOutputStream w=null;
        ByteArrayOutputStream b=null;
        try{
            jedis=pool.getResource();
            return jedis.ttl(key.getBytes("utf-8"));
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{if(jedis!=null){pool.returnResourceObject(jedis);}}catch(Exception ex){}
            try{b.close();}catch(Exception ex){}
            try{w.close();}catch(Exception ex){}
        }
        return -1;
    }
    
    /**
     * 向缓存添加对象
     * @param key
     * @param obj
     */
    public void setObject(String key,Serializable obj){
        Jedis jedis=null;
        ObjectOutputStream w=null;
        ByteArrayOutputStream b=null;
        try{
            jedis=pool.getResource();
            b=new ByteArrayOutputStream();
            w=new ObjectOutputStream(b);
            w.writeObject(obj);
            w.flush();
            b.flush();
            byte[] data=b.toByteArray();
            jedis.set(key.getBytes("utf-8"), data);
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{if(jedis!=null){pool.returnResourceObject(jedis);}}catch(Exception ex){}
            try{b.close();}catch(Exception ex){}
            try{w.close();}catch(Exception ex){}
        }
    }
    
    /**
     * 从缓存中获取对象
     * @param key
     * @return
     */
    public Object getObject(String key){
        Jedis jedis=null;
        ObjectInputStream w=null;
        ByteArrayInputStream b=null;
        try{
            jedis=pool.getResource();
            if(jedis.exists(key.getBytes("utf-8"))){
                byte[] data=jedis.get(key.getBytes("utf-8"));
                b=new ByteArrayInputStream(data);
                w=new ObjectInputStream(b);
                Object obj=w.readObject();
                return obj;
            }
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{if(jedis!=null){pool.returnResourceObject(jedis);}}catch(Exception ex){}
            try{b.close();}catch(Exception ex){}
            try{w.close();}catch(Exception ex){}
        }
        return null;
    }
    
    /**
     * 删除缓存对象
     * @param key
     */
    public void delObject(String key){
        Jedis jedis=null;
        try{
            jedis=pool.getResource();
            jedis.del(key.getBytes("utf-8"));
        }catch(Exception ex){
            ex.printStackTrace();
        }finally{
            try{if(jedis!=null){pool.returnResourceObject(jedis);}}catch(Exception ex){}
        }
    }
    
    public JedisPool getPool() {
        return pool;
    }

    public void setPool(JedisPool pool) {
        this.pool = pool;
    }

 

标签:Exception,Redis,Jedis,ex,key,操作,catch,jedis,null
来源: https://blog.51cto.com/aeolian/2854781

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有