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();
    }
}

猜你喜欢

转载自www.cnblogs.com/caoweixiong/p/12802578.html