Jedis学习笔记

文章目录

一、Jedis简介

Jedis是Redis的Java客户端,以其高性能和易用性著称,支持多种数据类型及事务、管道、连接池等功能。它并非线程安全,多线程环境下需通过连接池使用。

二、Jedis依赖配置

Maven依赖

xml 复制代码
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>5.2.0</version>
</dependency>

Gradle依赖

groovy 复制代码
implementation 'redis.clients:jedis:5.2.0'

三、Jedis连接方式

单机连接

java 复制代码
Jedis jedis = new Jedis("localhost", 6379);

连接池配置

java 复制代码
JedisPool pool = new JedisPool("localhost", 6379);
try (Jedis jedis = pool.getResource()) {
    jedis.set("key", "value");
}

JedisPooled简化操作

java 复制代码
JedisPooled jedis = new JedisPooled("localhost", 6379);
jedis.set("key", "value");

集群连接

java 复制代码
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基本操作

字符串操作

java 复制代码
jedis.set("name", "Jedis");
String value = jedis.get("name");

列表操作

java 复制代码
jedis.lpush("languages", "Java", "Python", "C++");
List<String> languages = jedis.lrange("languages", 0, -1);

哈希操作

java 复制代码
jedis.hset("user:1", "name", "Alice");
jedis.hset("user:1", "age", "30");
Map<String, String> user = jedis.hgetAll("user:1");

集合操作

java 复制代码
jedis.sadd("fruits", "apple", "banana", "orange");
Set<String> fruits = jedis.smembers("fruits");

有序集合操作

java 复制代码
jedis.zadd("scores", 85, "Alice");
jedis.zadd("scores", 90, "Bob");
Set<String> highScores = jedis.zrange("scores", 1, -1);

五、Jedis高级功能

事务操作

java 复制代码
Transaction tx = jedis.multi();
tx.set("key1", "value1");
tx.set("key2", "value2");
List<Object> results = tx.exec();

管道操作

java 复制代码
Pipeline pipeline = jedis.pipelined();
pipeline.set("key1", "value1");
pipeline.set("key2", "value2");
pipeline.sync();

订阅发布

java 复制代码
// 发布
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功能丰富,能满足多种场景需求。但需合理配置连接池、及时释放资源,并关注版本兼容性。

相关推荐
小毛驴85024 分钟前
Linux 后台启动java jar 程序 nohup java -jar
java·linux·jar
DKPT1 小时前
Java桥接模式实现方式与测试方法
java·笔记·学习·设计模式·桥接模式
好奇的菜鸟2 小时前
如何在IntelliJ IDEA中设置数据库连接全局共享
java·数据库·intellij-idea
巴伦是只猫3 小时前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
DuelCode3 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
好好研究4 小时前
学习栈和队列的插入和删除操作
数据结构·学习
幽络源小助理4 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
猴哥源码4 小时前
基于Java+springboot 的车险理赔信息管理系统
java·spring boot
Hello.Reader4 小时前
Redis 延迟排查与优化全攻略
数据库·redis·缓存