赞
踩
有道无术,术尚可求,有术无道,止于术。
本系列Redis 版本 7.2.5
源码地址:https://gitee.com/pearl-organization/study-redis-demo
在上篇文档中已经部署好了 Redis
,接下来学习如何连接到 Redis
。
可以通过以下几种方式进行连接:
Redis Cli
命令行界面官方提供了 redis-cli
工具,通过命令行界面和 Redis
进行交互,在安装目录中可以看到该工具:
操作示例:
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set mykey "Hello"
OK
127.0.0.1:6379> get mykey
"Hello"
Redis Insight
是官方提供的一个可视化管理工具,支持连接 Redis
、Redis Stack
,支持 Windows
、Linux
、MacOS
操作系统。
在官方地址进行下载,选择系统、填写用户信息:
下载完成后直接安装即可,在首页选择添加连接:
填写主机IP
、端口、密码后,点击添加:
自动跳转到连接列表:
Browser
浏览页面可以查看到当前所有 Key
以及对应值的详细信息:
Workbench
工作台页面可以执行 Redis
命令:
Analysis Tools
页面可以查看一些监控信息:
Pub/Sub
页面可以订阅频道,向频道发布消息:
RedisDesktopManager
是一个非官方的可视化管理工具,界面十分简洁,用起来很舒服,推荐一下。
Redis
几乎支持所有编程语言进行客户端连接:
Redis
官方提供了以下语言支持:
Python
C#/.NET
Node.js
Java
Go
其中 Java
客户端包含以下两种:
Jedis
Lettuce
Jedis
是一个同步阻塞的 Redis Java
客户端库,其优点是简单易用、成熟稳定。使用同步阻塞的方式与 Redis
进行通信,在高并发场景下,性能不佳。此外Jedis
实例不是线程安全的,需要通过 JedisPool
连接池管理实例。
引入依赖:
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>5.1.2</version>
</dependency>
连接并执行操作示例:
public class JedisTest { public static void main(String[] args) { // 创建连接池 JedisPool pool = new JedisPool("localhost", 6379,"default","123456"); // 获取客户端 try (Jedis jedis = pool.getResource()) { // 存入一个字符串 jedis.set("foo", "bar"); System.out.println(jedis.get("foo")); //Prints: bar // 存入一个Hash Map<String, String> hash = new HashMap<>();; hash.put("name", "John"); hash.put("surname", "Smith"); hash.put("company", "Redis"); hash.put("age", "29"); jedis.hset("user-session:123", hash); System.out.println(jedis.hgetAll("user-session:123")); // Prints: {name=John, surname=Smith, company=Redis, age=29} } } }
Lettuce
是一个可扩展的线程安全的 Redis Java
客户端库,可用于同步、异步和响应式,API
较为复杂抽象,所以学习成本较高。底层使用的是 Netty
,使用异步非阻塞的方式与 Redis
进行通信,在高并发场景下,性能更好。此外Lettuce
实例是线程安全的,无需额外处理线程同步问题。
引入依赖:
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>6.3.2.RELEASE</version> <!-- Check for the latest version on Maven Central -->
</dependency>
连接并执行操作示例:
public class LettceTest { public static void main(String[] args) { // 创建客户端 RedisClient redisClient = RedisClient.create("redis://localhost:6379"); // 获取连接 try (StatefulRedisConnection<String, String> connection = redisClient.connect()) { // 执行异步命令 RedisAsyncCommands<String, String> asyncCommands = connection.async(); // 存入一个字符串 asyncCommands.set("foo", "bar").get(); System.out.println(asyncCommands.get("foo").get()); // prints bar // 存入一个Hash Map<String, String> hash = new HashMap<>(); hash.put("name", "John"); hash.put("surname", "Smith"); hash.put("company", "Redis"); hash.put("age", "29"); asyncCommands.hset("user-session:123", hash).get(); System.out.println(asyncCommands.hgetall("user-session:123").get()); // Prints: {name=John, surname=Smith, company=Redis, age=29} } catch (ExecutionException | InterruptedException e) { throw new RuntimeException(e); } finally { redisClient.shutdown(); } } }
Redission
是一个高性能、异步无锁的 Redis Java
客户端库,基于 Netty
进行通信。Redission
提供了一些列的分布式服务工具,例如分布式对象、分布式锁、分布式任务调度、分布式数据数据处理、分布式会话集群等。
引入依赖:
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>3.31.0</version>
</dependency>
连接并执行操作示例:
public class RedissonTest { public static void main(String[] args) { // 创建客户端对象 Config config = new Config(); config.useSingleServer().setAddress("redis://127.0.0.1:6379"); RedissonClient redissonClient = Redisson.create(config); // 存入一个 Map RMap<String, String> rMap = redissonClient.getMap("rMap"); // 创建Map分布式对象 rMap.put("name", "John"); // 存入数据 rMap.put("surname", "Smith"); rMap.put("company", "Redis"); // 重新获取 RMap<String, String> getMap = redissonClient.getMap("rMap"); System.out.println(getMap); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。