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

相关推荐
S***26754 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
马剑威(威哥爱编程)5 小时前
鸿蒙6开发视频播放器的屏幕方向适配问题
java·音视频·harmonyos
JIngJaneIL5 小时前
社区互助|社区交易|基于springboot+vue的社区互助交易系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·论文·毕设·社区互助
晚风吹人醒.5 小时前
缓存中间件Redis安装及功能演示、企业案例
linux·数据库·redis·ubuntu·缓存·中间件
Yawesh_best5 小时前
告别系统壁垒!WSL+cpolar 让跨平台开发效率翻倍
运维·服务器·数据库·笔记·web安全
V***u4535 小时前
MS SQL Server partition by 函数实战二 编排考场人员
java·服务器·开发语言
roman_日积跬步-终至千里5 小时前
【强化学习基础(2)】被动强化学习:学习价值函数
学习
这是程序猿6 小时前
基于java的ssm框架旅游在线平台
java·开发语言·spring boot·spring·旅游·旅游在线平台
i***t9196 小时前
基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
java·spring boot·spring
k***08296 小时前
【监控】spring actuator源码速读
java·spring boot·spring