我们之前对Redis的学习都是在命令行窗口,那么如何使用Java来对Redis进行操作呢?对于Java连接Redis的开发工具有很多,这里先介绍通过Jedis实现对Redis的各种操作。(前提是你的redis已经配置了远程访问)
1.创建一个maven工程,并且添加以下依赖
- <dependencies>
-
- <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();
- }
- }
- }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |