• 使用Jedis操作Redis


    目录

    一、快速上手

      1.1、导入依赖

      1.2、第一个示例

    二、使用Jedis连接池

      2.1、使用示例

      2.2、封装工具类

    三、使用Jedis连接Redis集群

      3.1、单纯的JedisCluster

      3.2、配合使用连接池

    一、快速上手

    1.1、导入依赖

      jedis的github网址:https://github.com/xetorthio/jedis

      maven仓库信息:https://mvnrepository.com/artifact/redis.clients/jedis

      本文所使用的的是最新的3.2.0版本,jedis的maven依赖xml如下:

    <dependency>
    	<groupId>redis.clients</groupId>
    	<artifactId>jedis</artifactId>
    	<version>3.2.0</version>
    </dependency>
    

      

    1.2、第一个示例

      测试的时候,使用本地安装的redis,所以先将本地的redis服务器启动

      

      导入以来以后,可以创建一个单元测试类进行测试

    package cn.ganlixin.redis;
    
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    
    public class JedisExample {
    
        @Test
        public void testFirstExample() {
            // 连接redis
            Jedis jedis = new Jedis("localhost", 6379);
            // Jedis jedis = new Jedis("localhost"); // 默认6379端口
    
            // string类型
            jedis.set("name", "demo");
            String name = jedis.get("name");
    
            // list类型
            jedis.lpush("myList", "hello");
            jedis.rpush("myList", "world");
            String lpopVal = jedis.lpop("myList");
            String rpopVal = jedis.rpop("myList");
    
            // set类型
            jedis.sadd("mySet", "123");
            jedis.sadd("mySet", "456");
            jedis.sadd("mySet", "789");
            jedis.srem("mySet", "789");
            jedis.scard("mySet");
    
            // zset类型
            jedis.zadd("myZset", 99, "X");
            jedis.zadd("myZset", 90, "Y");
            jedis.zadd("myZset", 97, "Z");
            Double zscore = jedis.zscore("myZset", "Z");
    
            // 其他
            jedis.incr("intKey");
            jedis.incrBy("intKey", 5);
            jedis.del("intKey");
    
            // 触发持久化
            // jedis.save();
            // jedis.bgsave()
    
            // 关闭连接
            jedis.close();
        }
    }
    

      

      执行完毕后,可以通过redis客户端工具,登录到redis服务器查看存储的值

      

    二、使用Jedis连接池

     

    2.1、使用示例

      仍旧使用上面的maven依赖,示例代码如下

    package cn.ganlixin.redis;
    
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    public class JedisPoolExample {
    
        @Test
        public void testUsePool() {
    
            // 配置连接池
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(20);
            config.setMaxIdle(10);
            config.setMinIdle(5);
    
            // 创建连接池
            JedisPool jedisPool = new JedisPool(config, "localhost", 6379);
    
            Jedis jedis = jedisPool.getResource();
    
            // 使用jedis进行操作
            jedis.set("name", "otherNameVal");
    
            // 用完之后,一定要手动关闭连接(归还给连接池)
            jedis.close();
        }
    }

    2.2、封装工具类

      对于jedis连接池来说,只需要初始化一次即可,所以可以将其在工具类中实现,下面是我写的示例:

    package cn.ganlixin.redis.util;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * 描述: Jedis工具类(封装了连接池)
     */
    public class JedisUtils {
    
        private static JedisPool jedisPool;
    
        static {
            // 配置连接池
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(5);
            config.setMaxIdle(3);
            config.setMinIdle(2);
    
            // 创建连接池
            jedisPool = new JedisPool(config, "localhost", 6379);
        }
    
        /**
         * 获取redis连接
         */
        public static Jedis getJedis() {
            return jedisPool.getResource();
        }
    }
    

      

      配置项可以从配置文件中获取,下面是使用示例:

    package cn.ganlixin.redis;
    
    import cn.ganlixin.redis.util.JedisUtils;
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    
    public class JedisPoolExample {
    
        @Test
        public void testJedisPoolUtil() {
            Jedis jedis = JedisUtils.getJedis();
            jedis.set("name123", "demo");
    
            // 一定要关闭jedis连接
            jedis.close();
        }
    }
    

      使用Jedis连接池,最重要的就是:一定要手动关闭连接(释放连接),否则会因为连接耗尽而导致操作阻塞

      

    三、使用Jedis连接Redis集群

      要使用jedis操作Redis集群,就必须先有一个redis集群,redis集群的搭建方式,可以参考:Redis集群搭建

    3.1、单纯的JedisCluster

      这里的单纯,是指先简单可以下JedisCluster的用法,没有涉及到连接池相关的,后面会与连接池配合使用

    package cn.ganlixin.redis;
    
    import org.junit.Test;
    import redis.clients.jedis.HostAndPort;
    import redis.clients.jedis.JedisCluster;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Jedis操作Redis集群
     */
    public class JedisClusterExample {
    
        @Test
        public void testExample() {
            // 设置redis集群的节点信息
            Set<HostAndPort> nodes = new HashSet<>();
            nodes.add(new HostAndPort("192.168.1.3", 6379));
            nodes.add(new HostAndPort("192.168.1.4", 6379));
            nodes.add(new HostAndPort("192.168.1.5", 6379));
    
            // 创建jediscluster,可以理解为jedis对象
            JedisCluster cluster = new JedisCluster(nodes);
    
            // 和jedis的使用方式几乎一样
            cluster.set("name", "nameDemo");
    
            // 使用完毕后,不需要释放连接
            // cluster.close();
        }
    }
    

      

    3.2、配合使用连接池

      JedisCluster增加连接池,只需要配置一下连接池即可,示例如下:

    package cn.ganlixin.redis;
    
    import org.junit.Test;
    import redis.clients.jedis.HostAndPort;
    import redis.clients.jedis.JedisCluster;
    import redis.clients.jedis.JedisPoolConfig;
    
    import java.util.HashSet;
    import java.util.Set;
    
    /**
     * Jedis操作Redis集群
     */
    public class JedisClusterExample {
    
        @Test
        public void clusterWithPool() {
    
            // 设置redis集群的节点信息
            Set<HostAndPort> nodes = new HashSet<>();
            nodes.add(new HostAndPort("192.168.1.3", 6379));
            nodes.add(new HostAndPort("192.168.1.4", 6379));
            nodes.add(new HostAndPort("192.168.1.5", 6379));
    
            // 配置连接池
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxTotal(5);
            jedisPoolConfig.setMaxIdle(3);
            jedisPoolConfig.setMinIdle(2);
    
            // 创建jediscluster,传入节点列表和连接池配置
            JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig);
    
            // 和jedis的使用方式几乎一样
            cluster.set("name", "nameDemo2121");
    
            // 使用完毕后,不需要释放连接
            // cluster.close();
        }
    }
    

      执行程序,在命令行中登录到redis集群查看

      

      

  • 相关阅读:
    图灵测试
    百度面试题
    【javascript每日一练】- 插入排序
    各种排序讲解
    【javascript每日一练】- 多维数组
    不用JQuery,原生Javascript实现Ajax功能及相关知识点
    【javascript每日一练】- 无序数组排序
    前端面试题
    前端重构面试题
    面试题
  • 原文地址:https://www.cnblogs.com/-beyond/p/10991139.html
Copyright © 2020-2023  润新知