使用步骤:
step1:导入Spring Data Redis 的maven坐标
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
step2:配置Redis的数据源
spring:
redis:
port: 6379
host: localhost
database: 2
step3:编写配置类,创建RedisTemplate对象(配置类管理第三方bean)
/**
* 简介说明:Redis的配置类,用于配置RedisTemplate
*
* @author: 小鸥
* @date: 2025/05/08 17:54:55
* @version: 1.0
*/
@Configuration
@Slf4j
public class RedisConfiguration {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
log.info("初始化RedisTemplate...");
RedisTemplate redisTemplate = new RedisTemplate();
//设置key的序列化器 默认是JdkSerializationRedisSerializer
redisTemplate.setKeySerializer(new StringRedisSerializer());
//设置工厂,通过redis的工厂创建对象
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
step4:测试类,通过RedisTemplate对象来操作Redis的五种常用数据类型
/**
* 简介说明:
*
* @author: 小鸥
* @date: 2025/04/16 14:31:01
* @version: 1.0
*/
@SpringBootTest
public class SpringDataRedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void testRedisTemplate(){
System.out.println(redisTemplate);
//操作string类型
ValueOperations valueOperations = redisTemplate.opsForValue();
//操作hash类型
HashOperations hashOperations = redisTemplate.opsForHash();
//操作list类型
ListOperations listOperations = redisTemplate.opsForList();
//操作set类型
SetOperations setOperations = redisTemplate.opsForSet();
//操作zset类型
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
}
//操作string类型
@Test
public void testRedis_string(){
ValueOperations redis_string = redisTemplate.opsForValue();
redis_string.set("name","小鸥");
redis_string.set("age","18");
String string =(String) redis_string.get("name");
System.out.println(string);
redis_string.set("code","123456",3, TimeUnit.MICROSECONDS);
redis_string.setIfAbsent("lock","1");
redis_string.setIfAbsent("lock","2");
}
//操作hash类型
@Test
public void testRedis_hash(){
HashOperations redis_hash = redisTemplate.opsForHash();
redis_hash.put("user","name","小明");
redis_hash.put("user","age","22");
String name = (String) redis_hash.get("user", "name");
System.out.println(name);//小明
//获取所有的key
Set user = redis_hash.keys("user");
System.out.println(user);//[name, age]
//获取所有的value
List values = redis_hash.values("user");
System.out.println(values);//[小明, 22]
redis_hash.delete("user","age");
}
//操作列表类型的数据
@Test
public void testRedis_list(){
ListOperations redis_list = redisTemplate.opsForList();
redis_list.leftPushAll("mylist","a","b","c");
redis_list.leftPush("mylist","d");
List range = redis_list.range("mylist", 0, -1);
System.out.println(range);//[d, c, b, a]
redis_list.rightPop("mylist");
Long size = redis_list.size("mylist");
System.out.println(size);//3
}
//操作集合类型的数据
@Test
public void testRedis_set(){
SetOperations redis_set = redisTemplate.opsForSet();
redis_set.add("set1","a","b","c","d");
redis_set.add("set2","a","b","x","f");
Set members = redis_set.members("set1");
System.out.println(members);//[a, b, c, d]
Long size = redis_set.size("set1");
System.out.println(size);//4
Set intersect = redis_set.intersect("set1", "set2");
System.out.println(intersect);//[a, b]
Set union = redis_set.union("set1", "set2");
System.out.println(union);//[a, b, c, d, x, f]
redis_set.remove("set1","a","b");
}
//操作有序集合类型的数据
@Test
public void testRedis_zset(){
ZSetOperations redis_zset = redisTemplate.opsForZSet();
redis_zset.add("zset1","a",10);
redis_zset.add("zset1","b",12);
redis_zset.add("zset1","c",9);
Set zset = redis_zset.range("zset1", 0, -1);
System.out.println(zset);//[c, a, b]
redis_zset.incrementScore("zset1","c",20);
redis_zset.remove("zset1","a","b");
}
//操作通用类型的数据
@Test
public void testRedis_common(){
Set keys = redisTemplate.keys("*");
System.out.println(keys);//[user, name, set1, zset1, mylist, lock, set2, age]
Boolean name = redisTemplate.hasKey("name");
Boolean set1 = redisTemplate.hasKey("set1");
System.out.println(name);//true
System.out.println(set1);//true
for (Object key :keys) {
DataType type = redisTemplate.type(key);
System.out.println(type);
}
redisTemplate.delete("mylist");
}
}