有道无术,术尚可求,有术无道,止于术。
本系列Redis 版本 7.2.5
源码地址:https://gitee.com/pearl-organization/study-redis-demo
文章目录
- 1. 概述
- 2. Redis Cli
- 3. 可视化管理工具
- 3.1 Redis Insight
- 3.2 RedisDesktopManager
- 4. 客户端库
- 4.1 Jedis
- 4.2 Lettuce
- 4.3 Redission
1. 概述
官方文档
在上篇文档中已经部署好了 Redis
,接下来学习如何连接到 Redis
。
可以通过以下几种方式进行连接:
Redis Cli
命令行界面- 可视化管理工具
- 编程语言客户端库
2. 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"
3. 可视化管理工具
3.1 Redis Insight
Redis Insight
是官方提供的一个可视化管理工具,支持连接 Redis
、Redis Stack
,支持 Windows
、Linux
、MacOS
操作系统。
在官方地址进行下载,选择系统、填写用户信息:
下载完成后直接安装即可,在首页选择添加连接:
填写主机IP
、端口、密码后,点击添加:
自动跳转到连接列表:
Browser
浏览页面可以查看到当前所有 Key
以及对应值的详细信息:
Workbench
工作台页面可以执行 Redis
命令:
Analysis Tools
页面可以查看一些监控信息:
Pub/Sub
页面可以订阅频道,向频道发布消息:
3.2 RedisDesktopManager
下载地址
RedisDesktopManager
是一个非官方的可视化管理工具,界面十分简洁,用起来很舒服,推荐一下。
4. 客户端库
Redis
几乎支持所有编程语言进行客户端连接:
Redis
官方提供了以下语言支持:
Python
C#/.NET
Node.js
Java
Go
其中 Java
客户端包含以下两种:
Jedis
Lettuce
4.1 Jedis
官方文档
GitHub地址
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// 存入一个HashMap<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}}}
}
4.2 Lettuce
官方文档
GitHub地址
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// 存入一个HashMap<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();}}
}
4.3 Redission
官方网站
GitHub地址
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);// 存入一个 MapRMap<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);}
}