springboot2.x整合Redis 之 jedis
注:SpringBoot2.x之后取消了对Jedis的支持,取而代之的是Lettuce。有关Lecture的学习请参考:https://hcshow.blog.csdn.net/article/details/105863342
第一步:创建项目,添加Maven依赖
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.1</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.1</version>
</dependency>
<!-- 解决java8新日期API反序列化异常:com.fasterxml.jackson.databind.exc.InvalidDefinitionException-->
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--redis默认使用的Lettuce客户端-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--使用默认的Lettuce时,若配置spring.redis.lettuce.pool则必须配置该依赖-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
第二步:配置文件application.yml
spring:
redis:
database: 0
host: 127.0.0.1
port: 6379
# password: 123456
jedis:
pool:
max-active: 100
max-idle: 3
max-wait: -1
min-idle: 0
timeout: 1000
第三步:Redis配置文件
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate<Object, Object> template = new RedisTemplate<>();
template.setConnectionFactory(connectionFactory);
//使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式)
GenericJackson2JsonRedisSerializer serializer = new GenericJackson2JsonRedisSerializer();
//使用StringRedisSerializer来序列化和反序列化redis的key值
template.setKeySerializer(new StringRedisSerializer());
template.setHashKeySerializer(new StringRedisSerializer());
template.setValueSerializer(serializer);
template.setHashValueSerializer(serializer);//设置值的序列化方式,默认是二进制
template.afterPropertiesSet();
return template;
}
@Bean
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate stringRedisTemplate = new StringRedisTemplate();
stringRedisTemplate.setConnectionFactory(factory);
return stringRedisTemplate;
}
}
第四步:测试代码
@SpringBootTest
public class HashDemoTest {
@Resource
private RedisTemplate redisTemplate;
@Test
public void fun0(){
redisTemplate.opsForHash().put("sss","k1","v1");
//设置指定key过期时间
redisTemplate.expire("sss",2,TimeUnit.MINUTES);
}
@Test
public void fun1(){
System.out.println(redisTemplate);
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
map.put("key3", "value3");
map.put("key4", "value4");
map.put("key5", "value5");
redisTemplate.opsForHash().putAll("map1", map);
redisTemplate.expire("map1",30, TimeUnit.HOURS);
}
@Test
public void fun2(){
String value = (String) redisTemplate.opsForHash().get("map1", "key1");
System.out.println("value:" + value);
Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
System.out.println("resultMap:" + resultMap);
Set<String> keys = redisTemplate.opsForHash().keys("map1");
System.out.println("keys:" + keys);
List<String> values = redisTemplate.opsForHash().values("map1");
System.out.println("values:" + values);
}
@Test
public void fun3(){
//删除Hash中指定的key
Long delete = redisTemplate.opsForHash().delete("map1", "key1");
System.out.println(delete);
Map<String, String> resultMap = redisTemplate.opsForHash().entries("map1");
System.out.println("resultMap:" + resultMap);
}
}
还没有评论,来说两句吧...