Spring Data redis 是Spring的一部分,对 Redis 底层开发包进行了高度封装。在Spring项目中,可以使用Spring Data Redis来简化操作。
操作步骤:
org.springframework.boot
spring-boot-starter-data-redis
spring:
redis:
host: 127.0.0.1
port: 6379
database: 1
package top.suweijie.redis.config;
import cn.hutool.db.nosql.redis.RedisDS;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* @Author suweijie
* @Date 2024/1/9 17:01
* @Description: TODO
* @Version 1.0
*/
@Slf4j
@Configuration
public class RedisConfig {
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
log.info("redisTemplate init...");
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setKeySerializer(new StringRedisSerializer());
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}
package top.suweijie.redis;
import jdk.nashorn.internal.runtime.regexp.joni.constants.OPSize;
import lombok.extern.slf4j.Slf4j;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.*;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
import java.util.concurrent.TimeUnit;
/**
* @Author suweijie
* @Date 2024/1/9 17:05
* @Description: TODO
* @Version 1.0
*/
@Slf4j
@SpringBootTest
@RunWith(SpringRunner.class)
public class RedisTest {
@Autowired
private RedisTemplate redisTemplate;
@Test
public void test1() {
ValueOperations stringObjectValueOperations = redisTemplate.opsForValue();
HashOperations stringObjectObjectHashOperations = redisTemplate.opsForHash();
ListOperations stringObjectListOperations = redisTemplate.opsForList();
SetOperations setOperations = redisTemplate.opsForSet();
ZSetOperations zSetOperations = redisTemplate.opsForZSet();
}
}
@Test
public void dealString() {
//set key value
redisTemplate.opsForValue().set("name","suweijie");
//get key
String name = (String)redisTemplate.opsForValue().get("name");
//setex key seconds value
redisTemplate.opsForValue().set("name","suweijie",60,TimeUnit.SECONDS);
//setnx key value
redisTemplate.opsForValue().setIfAbsent("name","suweijie");
redisTemplate.delete("name");
}
@Test
public void dealHash() {
//hset key field value
redisTemplate.opsForHash().put("user","name","suweijie");
redisTemplate.opsForHash().put("user","age","20");
//hget key field
String name = (String)redisTemplate.opsForHash().get("user","name");
log.info(name);
//hdel key field
redisTemplate.opsForHash().delete("user","age");
//hkeys key
Set keys = redisTemplate.opsForHash().keys("user");
keys.forEach(System.out::println);
//hvals key
List values = redisTemplate.opsForHash().values("user");
values.forEach(System.out::println);
}
@Test
public void dealList() {
//lpush key value1 value2
redisTemplate.opsForList().leftPushAll("list","4","3","2","1");
//lrange key start end
List list = redisTemplate.opsForList().range("list", 0, -1);
list.forEach(System.out::println);
//rpop key
String rightPop = (String) redisTemplate.opsForList().rightPop("list");
log.info(rightPop);
//llen key
Long size = redisTemplate.opsForList().size("list");
log .info(size + "");
}
@Test
public void dealSet() {
//sadd key member1 member2
redisTemplate.opsForSet().add("set1","1","2","3","2");
redisTemplate.opsForSet().add("set2","1","2","2","4");
log.info("-------------------------------------------------");
//smembers key
Set set = redisTemplate.opsForSet().members("set1");
set.forEach(System.out::println);
log.info("-------------------------------------------------");
//scard key
Long size = redisTemplate.opsForSet().size("set2");
log.info(size + "");
log.info("-------------------------------------------------");
//sinter key1 key2
Set intersect = redisTemplate.opsForSet().intersect("set1", "set2");
intersect.forEach(System.out::println);
log.info("-------------------------------------------------");
Set union = redisTemplate.opsForSet().union("set1", "set2");
union.forEach(System.out::println);
}
@Test
public void dealZset() {
//zadd score1 member1 socre2 member2
redisTemplate.opsForZSet().add("zset1","swj",1);
redisTemplate.opsForZSet().add("zset1","zat",2);
//zrange key start end withscores
Set zset1 = redisTemplate.opsForZSet().rangeByScoreWithScores("zset1", 0, 3);
zset1.forEach(System.out::println);
//zincryby key increment memer
redisTemplate.opsForZSet().incrementScore("zset1","zat",1);
//zrem key member1 member2
redisTemplate.opsForZSet().remove("zset1","swj");
}