• Redis——使用Jedis操作Redis


    前言

    Jedis是我们使用最多的Java客户端Redis,Jedis整合Redis有两种方式,分别是单机和集群。单机通常我们使用JedisPool连接池进行整合,集群通常我们使用JedisCluster进行整合。

    准备

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

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

    Redis单机版安装和配置的博客参考:redis单机安装与配置

    Redis集群版安装和配置的博客参考:redis集群安装与配置    redis集群安装与配置(官方)

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

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

    连接Redis单机

    单机通常我们使用JedisPool连接池进行整合。使用Jedis连接池,最重要的就是:一定要手动关闭连接(释放连接),否则会因为连接耗尽而导致操作阻塞。

    • 使用示例
    package cn.cwx.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", "cwx");
     
            // 用完之后,一定要手动关闭连接(归还给连接池)
            jedis.close();
        }
    }
    • 封装工具类

    对于jedis连接池来说,只需要初始化一次即可,可以将其在工具类中实现:

    package cn.cwx.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.cwx.redis;
     
    import cn.cwx.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("name", "cwx");
     
            // 一定要关闭jedis连接
            jedis.close();
        }
    }

    连接Redis集群

    集群通常我们使用JedisCluster进行整合。跟单机相比,最大的区别是:不需要手动释放连接

    package cn.cwx.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", "cwx");
     
            // 使用完毕后,不需要释放连接
            // cluster.close();
        }
    }
  • 相关阅读:
    OleDbConnection SqlConnection DB2Connection 区别
    网站软件FTP下载
    总结方法论
    面向对象的三大基石(封装,继承和复合,多态)
    wkhtmltopdf中文参数
    HTTP协议的8种请求类型介绍
    枚举操作笔记
    自写任务调度模型
    数据库操作类
    LoadRunner录制后无法自动生成脚本
  • 原文地址:https://www.cnblogs.com/caoweixiong/p/12802578.html
Copyright © 2020-2023  润新知