当前位置:首页 > 问答 > 正文

Redis连接工具类怎么用,简单又实用的快速入门指南分享

你得明白Redis是什么,我们可以把它想象成一个放在内存里的、速度极快的大柜子,这个柜子不像我们平时用的数据库(比如MySQL)那样需要繁琐的步骤才能存东西、取东西,它非常简单,基本上就是“键值对”存储,就像你给储物柜的每个格子贴上一个标签(键),然后把东西(值)放进去,下次凭标签就能立刻拿到东西,因为它操作内存,所以速度飞快,常用来做缓存,减轻后面大数据库的压力,也能存一些会话信息、排行榜之类需要快速读写的数据。

(参考来源:Redis官方介绍的核心概念)

我们要在Java程序里使用这个“大柜子”,就需要一个工具来连接它,这个工具就是Redis连接工具类,我们不会从零开始自己写这个工具类,那样太麻烦了,通常会使用一个现成的“帮手”——Jedis,Jedis是一个非常流行和简单的Java客户端,你可以把它理解为专门为Java程序访问Redis柜子定制的一把“钥匙”。

(参考来源:Jedis在GitHub上的项目描述)

第一步:准备工作——把“钥匙”拿到手

你得先把Jedis这把“钥匙”引入到你的Java项目中,现在最常用的方式是使用Maven这样的项目管理工具,在你的项目pom.xml文件里,找到<dependencies>标签,然后在里面加上下面这几行代码:

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>4.4.0</version> <!-- 版本号可能会有更新,请使用最新稳定版 -->
</dependency>

加完之后,你的IDE(比如IntelliJ IDEA或Eclipse)通常会自动帮你下载这个jar包,如果你没用Maven,也可以手动去网上下载Jedis的jar包,然后添加到项目的构建路径里。

Redis连接工具类怎么用,简单又实用的快速入门指南分享

(参考来源:Jedis官方文档的入门指南中的依赖配置部分)

第二步:打造你的工具类——制作一个“万能钥匙”

直接每次用的时候都去创建连接,用完了再关闭,这样很啰嗦,而且容易出错,最好的办法是写一个工具类,把连接Redis的细节都封装起来,让它变成一个简单好用的“万能钥匙”,下面是一个非常简单但实用的工具类例子:

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
public class RedisUtil {
    // 声明一个连接池对象,这是关键,连接池可以管理多个连接,避免频繁创建和销毁的开销。
    private static JedisPool jedisPool;
    // 静态代码块,在类加载的时候就初始化连接池
    static {
        // 1. 创建一个连接池的配置对象,可以设置一些参数
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(10); // 最大连接数
        config.setMaxIdle(5);   // 最大空闲连接数
        // 2. 创建连接池对象
        // 参数依次是:配置对象、Redis服务器的IP地址、端口号、连接超时时间、密码(如果没有密码就传null)
        jedisPool = new JedisPool(config, "localhost", 6379, 2000, null);
    }
    // 提供一个静态方法,用于从连接池中获取一个Redis连接
    public static Jedis getJedis() {
        return jedisPool.getResource();
    }
    // 提供一个静态方法,用于关闭连接(实际上是还给连接池)
    public static void close(Jedis jedis) {
        if (jedis != null) {
            jedis.close();
        }
    }
}

(参考来源:Jedis官方文档中关于使用JedisPool连接池的示例)

Redis连接工具类怎么用,简单又实用的快速入门指南分享

第三步:在程序里愉快地使用——用“万能钥匙”开柜存东西、取东西

工具类写好了,现在看看怎么在main方法或者其他地方使用它,整个过程就像这样:

public class TestRedis {
    public static void main(String[] args) {
        // 声明一个Jedis对象,先不初始化
        Jedis jedis = null;
        try {
            // 1. 从我们的工具类里轻松获取一个连接
            jedis = RedisUtil.getJedis();
            // 2. 现在可以开始操作Redis了!非常简单。
            // 存一个字符串:set [键] [值]
            jedis.set("greeting", "Hello, Redis!");
            // 取一个字符串:get [键]
            String value = jedis.get("greeting");
            System.out.println("从Redis取出的值是:" + value); // 输出:Hello, Redis!
            // 存一个带过期时间的键值对(比如5秒后自动删除),这在做验证码缓存时非常有用
            jedis.setex("tempCode", 5, "888999"); // 5秒后,"tempCode"这个键会自动消失
            // 还可以存数字,做自增操作,很适合做计数器或排行榜
            jedis.incr("viewCount"); // 第一次执行,viewCount变成1
            jedis.incr("viewCount"); // 第二次执行,viewCount变成2
            System.out.println("浏览次数:" + jedis.get("viewCount"));
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 3. 非常重要的一步!用完了一定要把连接关掉(归还给连接池)
            RedisUtil.close(jedis);
        }
    }
}

(参考来源:对Jedis常见API方法如set, get, setex, incr的使用总结)

几个重要的提醒:

  1. 连接信息要改:上面的例子中,Redis服务器地址是"localhost",端口是6379,这是Redis的默认配置,如果你的Redis装在其他机器上,或者改了端口、设置了密码,一定要在创建JedisPool的时候修改成对应的值,比如密码是"mypassword",那么创建连接池的那行就要改成 new JedisPool(config, "你的服务器IP", 6379, 2000, "mypassword")
  2. 一定要关闭连接:把连接归还给连接池是一个好习惯,否则连接会一直被占用,最终可能导致连接耗尽,程序无法再连接Redis,所以finally块里的关闭操作必不可少。
  3. 先启动Redis服务:在运行你的Java程序之前,请确保你的Redis服务器已经启动起来了,如果连不上,程序会报错。

通过以上三步,你就拥有了一个简单又实用的Redis连接工具类,并且知道了如何进行最基本的存储和读取操作,这已经能够解决很多实际应用中的问题了,如果想了解更多高级操作,比如存列表、集合、哈希等,可以去查阅Jedis更详细的API文档。