您当前的位置: 首页 >  redis

梁云亮

暂无认证

  • 4浏览

    0关注

    1211博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Redis工具类:Jedis

梁云亮 发布时间:2019-10-28 15:28:42 ,浏览量:4

Redis工具类:Jedis

常用的操作Redis的框架有:Jedis,Redisson,Lettuce,其中:

  • Jedis:是Redis的Java实现客户端,提供了比较全面的Redis命令的支持:官网 Jedis比较全面的提供了Redis的操作特性。 Jedis使用阻塞的I/O,且其方法调用都是同步的,程序流需要等到sockets处理完I/O才能执行,不支持异步。Jedis客户端实例不是线程安全的,所以需要通过连接池来使用Jedis。

  • Redisson:实现了分布式和可扩展的Java数据结构。官网 Redisson促使使用者对Redis的关注分离,提供很多分布式相关操作服务,例如,分布式锁,分布式集合,可通过Redis支持延迟队列。 Redisson基于Netty框架的事件驱动的通信层,其方法调用是异步的。Redisson的API是线程安全的,所以可以操作单个Redisson连接来完成各种操作

  • Lettuce:高级Redis客户端,用于线程安全同步、异步和响应使用,支持集群、Sentinel、管道和编码器。官网 Lettuce主要在一些分布式缓存框架上使用比较多 Lettuce基于Netty框架的事件驱动的通信层,其方法调用是异步的。Lettuce的API是线程安全的,所以可以操作单个Lettuce连接来完成各种操作

建 议 使 用 \color{#ca0c16}{建议使用} 建议使用:Jedis + Redisson

本博客代码中的JedisPoolUtil代码请参看:JedisPoolUtil

Jedis工具类
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import redis.clients.jedis.Jedis;

public class JedisUtil {
    private static final Logger log = LoggerFactory.getLogger(JedisUtil.class);
    
    /key操作
    /**
     * 删除指定的key
     * @param key
     * @return
     */
    public static long del(String key){
        Jedis jedis =null;
        long res = -1;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.del(key);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("strSet {} error:{}",key ,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return  res;
    }
    
    /**
     * 字符串设置key-value-expire
     * @param key
     * @param value
     * @param expire 过期时间,值为-1时永不过期
     * @return 成功返回OK
     */
    public static  String strSet(String key ,String value,int expire){
        Jedis jedis =null;
        String res = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.set(key, value);
            if(expire != -1){
                jedis.expire(key ,expire);
            }
        } catch (Exception e) {
            e.printStackTrace();
            log.error("strSet {} error:{}",key ,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return  res;
    }

    ///string操作
    /**
     * 字符串设置key-value
     * @param key
     * @param value
     * @return 成功返回OK
     */
    public static  String strSet(String key ,String value){
        return strSet(key,value,-1);
    }

    /**
     * 根据key获取字符串的值
     * @param key
     * @return
     */
    public static String strGet(String key){
        Jedis jedis =null;
        String res = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.get(key);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("strSet {} error:{}",key ,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return  res;
    }
    public static String strMset(String... keyValues){
        String res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.mset(keyValues);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("strMset {} error:{}",keyValues ,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return  res;
    }
    public static List strMget(String... keys){
        List res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.mget(keys);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("strMget {} error:{}",keys ,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    
    /list操作
     /**
     * 从右边开始往List中添加数据
     * @param key
     * @param values
     * @return 返回值为添加到List中元素的个数
     */
    public static long listRpush(String key , String ... values){
        long res = -1;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.rpush(key, values);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("listRpush(): {} {},error:{}",key ,values,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    /**
     * 返回key中从start到end之间的元素
     * @param key
     * @param start
     * @param end
     * @return
     */
    public static List listLrange(String key,int start ,int end){
        List res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.lrange(key,start,end);
        } catch (Exception e) {
            e.printStackTrace();
            log.error("listRpush(): {} {} {},error:{}",key ,start,end,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    
    /hash操作
    public static long mapHset(String key, String field, String value) {
        long res = -1;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.hset(key, field, value);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("mapHset() {} {} {} , errors {}",key,field,value,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    public static String mapHget(String key, String field) {
        String res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.hget(key, field);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("mapHget() {} {} , errors {}",key,field,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    public static String mapHmset(String key, Map map) {
        String res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.hmset(key, map);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("mapHmset() {} {} , errors {}",key,map,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
    public static List mapHmget(String key, String... fields) {
        List res = null;
        Jedis jedis = null;
        try {
            jedis = JedisPoolUtil.getJedis();
            res = jedis.hmget(key, fields);
        } catch (Exception e) {
            e.printStackTrace();
            log.info("mapHmget() {} {} , errors {}",key,fields,e);
        } finally {
            JedisPoolUtil.release(jedis);
        }
        return res;
    }
	//......
}
工具类测试代码
public class JedisUtilTest {
	//key 操作
    @Test
    public void del(){
        long res = JedisUtil.del("list");
        System.out.println(res);
    }
    
    //string 操作
    @Test
    public void strSet1() {
        String res = JedisUtil.strSet("k2", "v2",60);
        System.out.println(res);
    }
    @Test
    public void strSet2() {
        String res = JedisUtil.strSet("k3", "v3");
        System.out.println(res);
    }
    @Test
    public void strGet() {
        String k1 = JedisUtil.strGet("k1");
        System.out.println(k1);
    }
    @Test
    public void strMset(){
        String res = JedisUtil.strMset("k1", "v1", "k2", "v2");
        System.out.println(res);
    }
    @Test
    public void strMget(){
        List res = JedisUtil.strMget("k1", "k2");
        System.out.println(res);
    }
    
    //list 操作
    @Test
    public void listRpush(){
        long res = JedisUtil.listRpush("list", "aa", "cc", "dd", "bb", "aa");
        System.out.println(res);
    }
    @Test
    public void listLrange(){
        List res = JedisUtil.listLrange("list", 0, -1);
        for (String item : res) {
            System.out.println(item);
        }
    }
    
    /hash操作
     @Test
    public void mapHset(){
        long res = JedisUtil.mapHset("map", "name", "zhangsan");
        System.out.println(res);
    }
    @Test
    public void mapHget(){
        String res = JedisUtil.mapHget("map", "name");
        System.out.println(res);
    }

    @Test
    public void mapHmset(){
        Map map = new HashMap();
        map.put("name","zhangsan");
        map.put("age","18");
        map.put("birth","1999-09-21");
        String res = JedisUtil.mapHmset("map",map);
        System.out.println(res);
    }
    @Test
    public void mapHmget(){
        List res = JedisUtil.mapHmget("map", "name","age","birth");
        System.out.println(res);
    }
	//......
}
关注
打赏
1665409997
查看更多评论
立即登录/注册

微信扫码登录

0.3413s