注:SpringBoot2.x之后取消了对Jedis的支持,取而代之的是Lettuce。有关Lecture的学习请参考:https://hcshow.blog.csdn.net/article/details/105863342
第一步:创建项目,添加Maven依赖
org.projectlombok
lombok
1.18.10
com.fasterxml.jackson.core
jackson-core
2.10.1
com.fasterxml.jackson.core
jackson-databind
2.10.1
com.fasterxml.jackson.core
jackson-annotations
2.10.1
com.fasterxml.jackson.datatype
jackson-datatype-jsr310
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
org.junit.vintage
junit-vintage-engine
org.springframework.boot
spring-boot-starter-data-redis
org.apache.commons
commons-pool2
redis.clients
jedis
3.2.0
第二步:配置文件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 redisTemplate(RedisConnectionFactory connectionFactory) {
RedisTemplate 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 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 resultMap = redisTemplate.opsForHash().entries("map1");
System.out.println("resultMap:" + resultMap);
Set keys = redisTemplate.opsForHash().keys("map1");
System.out.println("keys:" + keys);
List 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 resultMap = redisTemplate.opsForHash().entries("map1");
System.out.println("resultMap:" + resultMap);
}
}