java操作redis之jedis
我们之前对Redis的学习都是在命令行窗口,那么如何使用Java来对Redis进行操作呢?对于Java连接Redis的开发工具有很多,这里先介绍通过Jedis实现对Redis的各种操作。(前提是你的redis已经配置了远程访问)
1.创建一个maven工程,并且添加以下依赖#
<dependencies>
<!-- jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.7.0</version>
</dependency>
<!-- 单元测试 -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.7.0</version>
<scope>test</scope>
</dependency>
</dependencies>
2.创建JedisTest.java测试类#
package org.example.test;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;
import org.junit.jupiter.api.BeforeEach;
import java.util.Map;
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUp(){
// 建立连接
jedis = new Jedis("192.168.***.***", 6379);
// 设置密码
jedis.auth("******");
// 选择数据库
jedis.select(0);
}
//测试String
@Test
void testString(){
// 添加数据
String result = jedis.set("name", "minqilianghhahahah");
System.out.println(result);
// 获取数据
String data = jedis.mget(new String[]{"id","name"}).toString();
System.out.println(data);
}
//测试hash
@Test
void testHash(){
// 添加数据
jedis.hset("user", "name", "张三");
jedis.hset("user", "age", "23");
// 获取数据
String name = jedis.hget("user", "name");
Map<String, String> user = jedis.hgetAll("user");
System.out.println(name);
System.out.println(user);
}
//释放资源
@AfterEach
void tearDown(){
if(jedis != null){
jedis.close();
}
}
}
到这里Jedis如何连接redis以及常用操作已经了解了,其实这里的操作方法和原始的方法是一致的,降低了学习成本。但是还有一些不好的地方就是每次使用都要重新连接redis,使用完又要断开连接,那么可以使用连接池来解决这个问题。下面介绍连接池的使用。
3.使用连接池#
-
创建连接工厂类,如下:
package org.example; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisConnectionFactory { private static final JedisPool jedisPool; static { // 配置链接池信息 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置最大连接数 jedisPoolConfig.setMaxTotal(8); // 设置最大空闲连接数 jedisPoolConfig.setMaxIdle(8); // 设置最小空闲连接数 jedisPoolConfig.setMinIdle(0); // 设置连接池的最大等待时间 jedisPoolConfig.setMaxWaitMillis(1000); // 创建连接池对象 jedisPool = new JedisPool(jedisPoolConfig,"192.168.***.***",6379,1000, "******"); } public static Jedis getJedis() { return jedisPool.getResource(); } }
-
测试类使用连接池
package org.example.test; import org.example.JedisConnectionFactory; import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import redis.clients.jedis.Jedis; import org.junit.jupiter.api.BeforeEach; import java.util.Map; public class JedisTest { private Jedis jedis; // 通过连接池获取连接 @BeforeEach void setUp(){ // 建立连接 jedis = JedisConnectionFactory.getJedis(); // 选择数据库 jedis.select(0); } //测试String @Test void testString(){ // 添加数据 String result = jedis.set("name", "minqilianghhahahah"); System.out.println(result); // 获取数据 String data = jedis.mget(new String[]{"id","name"}).toString(); System.out.println(data); } //测试hash @Test void testHash(){ // 添加数据 jedis.hset("user", "name", "张三"); jedis.hset("user", "age", "23"); // 获取数据 String name = jedis.hget("user", "name"); Map<String, String> user = jedis.hgetAll("user"); System.out.println(name); System.out.println(user); } //释放资源 @AfterEach void tearDown(){ if(jedis != null){ jedis.close(); } } }
作者:minqiliang
出处:https://www.cnblogs.com/minqiliang/p/17489245.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY