美文网首页
使用 Java 客户端操作 Redis

使用 Java 客户端操作 Redis

作者: SheHuan | 来源:发表于2021-07-11 20:44 被阅读0次

一、Jedis

创建一个 Maven 项目,添加 Jedis 依赖:

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

先看一个简单版本的使用:

// 1、创建Jedis连接,指定redis的host以及port
Jedis jedis = new Jedis("localhost", 6379);
// 2、密码认证
jedis.auth("shehuan");
// 4、使用 Jedis 对象中的 API 方法 操作 Redis
// 5、关闭连接,释放资源
jedis.close();

连接成功后就可以使用 Jedis 对象来操作 Redis 了,Jedis 中的 API 方法和 Redis 的原生命令基本一致,使用起来很容易上手。

在实际的应用中,我们一般不会直接创建 Jedis 来连接 Redis,而是通过连接池来获取连接:

// 1、创建Jedis连接池
JedisPool jedisPool = new JedisPool("localhost", 6379);
// 2、从连接池获取jedis连接
Jedis jedis = jedisPool.getResource();
// 3、密码认证
jedis.auth("shehuan");
try {
    // 4、使用 Jedis 对象中的 API 方法 操作 Redis
} catch (Exception e) {
    e.printStackTrace();
} finally {
    // 5、关闭连接,释放资源
    if (jedis != null) {
        jedis.close();
    }
}

二、Lettuce

创建一个 Maven 项目,添加 Lettuce 依赖:

<dependency>
    <groupId>io.lettuce</groupId>
    <artifactId>lettuce-core</artifactId>
    <version>6.0.2.RELEASE</version>
</dependency>

如下是 Lettuce 简单的使用:

// 1、配置 Redis 服务器连接信息,uri格式,redis://密码@ip:端口
RedisClient redisClient = RedisClient.create("redis://shehuan@localhost:6379");
// 2、创建一个连接
StatefulRedisConnection<String, String> connect = redisClient.connect();
// 3、获取执行 Redis 指令的对象
RedisCommands<String, String> syncCommands = connect.sync();
// 4、使用 syncCommands 执行具体的 Redis 操作

connect.sync()获取的是 Redis 指令的同步操作的对象,还可以使用connect.async()获取指令的异步操作的对象。

三、小结

从 SpringBoot2.x 开始,默认使用 Lettuce 作为 Spring Data Redis 的内部实现,而不是 Jedis 。下边对两者做一个简单比较:

  • 默认情况下 Jedis 是直接连接 Redis 的,多个线程间共享一个连接实例,但不是线程安全的,我们在 Jedis 部分的第一个例子就是这种情况。如果在多线程场景下就需要使用连接池来实现,也就是 Jedis 部分的第二个例子。
  • Lettuce 底层是基于 Netty 框架实现的,可以实现多个线程共享一个连接实例,同时保证了线程安全,而不用线程池,性能会好一些,同时Lettuce 支持同步、异步、响应式操作 Redis。

相关文章

网友评论

      本文标题:使用 Java 客户端操作 Redis

      本文链接:https://www.haomeiwen.com/subject/vvabjltx.html