Spring boot集成redis的第二种方法:jedis
基于Springboot已经使用spring-data-redis方式写过一篇文章了,现在介绍使用redis的第二种方法:使用jedis
1. 在pom.xml导入jedis包
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2. 配置文件中添加redis的配置
jedis :
pool :
host : 127.0.0.1
port : 6379
config :
maxTotal: 100
maxIdle: 10
maxWaitMillis : 100000
3. 增加redis配置类RedisConfiguration.java
package com.ieslab.powergrid.demosvr.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
@Configuration
public class RedisConfiguration {
@Bean(name= "jedis.pool")
@Autowired
public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
@Value("${jedis.pool.host}")String host,
@Value("${jedis.pool.port}")int port) {
return new JedisPool(config, host, port);
}
@Bean(name= "jedis.pool.config")
public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,
@Value("${jedis.pool.config.maxIdle}")int maxIdle,
@Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(maxTotal);
config.setMaxIdle(maxIdle);
config.setMaxWaitMillis(maxWaitMillis);
return config;
}
}
4. 编写RedisClient.java客户端访问类
package com.ieslab.powergrid.demosvr.utils;
import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
@Component
public class RedisClient<T> {
@Autowired
private JedisPool jedisPool;
public void set(String key, String value) throws Exception {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
jedis.set(key, value);
} finally {
//返还到连接池
jedis.close();
}
}
public String get(String key) throws Exception {
Jedis jedis = null;
try {
jedis = jedisPool.getResource();
return jedis.get(key);
} finally {
//返还到连接池
jedis.close();
}
}
public void setobj(String key, T value) throws Exception {
Jedis jedis = null;
try {
Set<T> set = new HashSet<T>();
set.add(value);
jedis = jedisPool.getResource();
jedis.sadd(key, String.valueOf(set));
} finally {
//返还到连接池
jedis.close();
}
}
}
5. 编写单元测试代码PersonServiceTest.java
package com.ieslab.powergrid.demosvr.utils;
import com.ieslab.powergrid.demosvr.entity.Person;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@SpringBootTest
@Slf4j
class RedisClientTest {
@Autowired
RedisClient redisClient;
@Test
void insertData(){
try {
redisClient.set("test:1","ceshi daima");
} catch (Exception e) {
e.printStackTrace();
}
}
@Test
void getData(){
try {
log.info("获取数据:" + redisClient.get("test:1"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个测试用例中,有插入方法,有获取方法。可以测试一下是否成功!!!
下面是执行getData()方法的截图:
5.总结
感觉本方法比spring-data-redis更好用,只是个人感觉,非喜勿喷啊!