文章目录
- 一、Jedis简介
- 二、Jedis依赖配置
- Maven依赖
- Gradle依赖
- 三、Jedis连接方式
- 单机连接
- 连接池配置
- JedisPooled简化操作
- 集群连接
- 四、Jedis基本操作
- 字符串操作
- 列表操作
- 哈希操作
- 集合操作
- 有序集合操作
- 五、Jedis高级功能
- 事务操作
- 管道操作
- 订阅发布
- 六、Jedis性能优化
- 连接池配置
- 批量操作
- 数据序列化
- 七、Jedis注意事项
- 线程安全
- 资源释放
- 版本兼容性
- 八、总结
一、Jedis简介
Jedis是Redis的Java客户端,以其高性能和易用性著称,支持多种数据类型及事务、管道、连接池等功能。它并非线程安全,多线程环境下需通过连接池使用。
二、Jedis依赖配置
Maven依赖
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.2.0</version>
</dependency>
Gradle依赖
implementation 'redis.clients:jedis:5.2.0'
三、Jedis连接方式
单机连接
Jedis jedis = new Jedis("localhost", 6379);
连接池配置
JedisPool pool = new JedisPool("localhost", 6379);
try (Jedis jedis = pool.getResource()) {jedis.set("key", "value");
}
JedisPooled简化操作
JedisPooled jedis = new JedisPooled("localhost", 6379);
jedis.set("key", "value");
集群连接
Set<HostAndPort> nodes = new HashSet<>();
nodes.add(new HostAndPort("127.0.0.1", 7379));
nodes.add(new HostAndPort("127.0.0.1", 7380));
JedisCluster jedis = new JedisCluster(nodes);
jedis.set("key", "value");
四、Jedis基本操作
字符串操作
jedis.set("name", "Jedis");
String value = jedis.get("name");
列表操作
jedis.lpush("languages", "Java", "Python", "C++");
List<String> languages = jedis.lrange("languages", 0, -1);
哈希操作
jedis.hset("user:1", "name", "Alice");
jedis.hset("user:1", "age", "30");
Map<String, String> user = jedis.hgetAll("user:1");
集合操作
jedis.sadd("fruits", "apple", "banana", "orange");
Set<String> fruits = jedis.smembers("fruits");
有序集合操作
jedis.zadd("scores", 85, "Alice");
jedis.zadd("scores", 90, "Bob");
Set<String> highScores = jedis.zrange("scores", 1, -1);
五、Jedis高级功能
事务操作
Transaction tx = jedis.multi();
tx.set("key1", "value1");
tx.set("key2", "value2");
List<Object> results = tx.exec();
管道操作
Pipeline pipeline = jedis.pipelined();
pipeline.set("key1", "value1");
pipeline.set("key2", "value2");
pipeline.sync();
订阅发布
// 发布
jedis.publish("news", "Hello, Redis!");// 订阅
new Thread(() -> {try (Jedis subJedis = pool.getResource()) {subJedis.subscribe((channel, message) -> System.out.println(message), "news");}
}).start();
六、Jedis性能优化
连接池配置
合理配置连接池参数,如最大连接数、超时时间等,可有效提升性能。
批量操作
使用管道或事务进行批量操作,减少网络往返时间。
数据序列化
对于复杂对象,使用序列化工具(如Jackson)转换为JSON字符串存储,提升读写效率。
七、Jedis注意事项
线程安全
Jedis实例非线程安全,多线程场景需使用连接池。
资源释放
使用完毕需及时释放连接,避免资源泄漏。
版本兼容性
不同版本Jedis支持的Redis命令不同,使用时需注意版本匹配。
八、总结
Jedis功能丰富,能满足多种场景需求。但需合理配置连接池、及时释放资源,并关注版本兼容性。