Redis

SpringBoot導入

Copilot

要在 Spring Boot 中使用實體和 Repository 存取 Redis,可以按照以下步驟進行配置:

1. 添加依賴

在你的 pom.xml 文件中添加 Spring Data Redis 依賴:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-pool2</artifactId>
</dependency>

2. 配置 Redis 連接

application.propertiesapplication.yml 文件中設置 Redis 連接屬性:

spring.redis.host=localhost
spring.redis.port=6379
spring.redis.password=yourpassword
spring.redis.database=0

3. 創建 Redis 配置類

創建一個新的 Java 類來配置 Redis:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;

@Configuration
@EnableRedisRepositories
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(redisConnectionFactory());
        return template;
    }
}

4. 創建實體類

創建一個實體類並使用 @RedisHash 註解:

import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;

@RedisHash("YourEntity")
@Data
public class YourEntity {
    @Id
    private String id;
    private String data;
    @TimeToLive
    private Long expiration; // 過期時間(秒)

    // getters and setters
}

5. 創建 Repository 介面

創建一個 Repository 介面,繼承 CrudRepository 並加上 @Repository 註解:

import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface YourEntityRepository extends CrudRepository<YourEntity, String> {
    // 定義自訂的 Redis 操作
}

6. 使用 Repository 操作 Redis

在你的服務或控制器中使用 Repository 操作 Redis。例如:

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class YourEntityService {
    private final YourEntityRepository repository;

    @Autowired
    public YourEntityService(YourEntityRepository repository) {
        this.repository = repository;
    }

    public void saveEntity(YourEntity entity) {
        repository.save(entity);
    }

    public YourEntity getEntity(String id) {
        return repository.findById(id).orElse(null);
    }
}

7. 設置過期時間

如果需要設置過期時間,可以在實體類中使用 @TimeToLive 註解,或者在操作 Redis 時指定過期時間。例如:

import org.springframework.data.redis.core.TimeToLive;

@RedisHash("YourEntity")
public class YourEntity {
    @Id
    private String id;
    private String data;

    @TimeToLive
    private Long expiration; // 過期時間(秒)

    // getters and setters
}

或者在服務類中設置過期時間:

import java.util.concurrent.TimeUnit;

@Service
public class YourEntityService {
    private final YourEntityRepository repository;
    private final RedisTemplate<String, Object> redisTemplate;

    @Autowired
    public YourEntityService(YourEntityRepository repository, RedisTemplate<String, Object> redisTemplate) {
        this.repository = repository;
        this.redisTemplate = redisTemplate;
    }

    public void saveEntityWithExpiration(String key, YourEntity entity, long timeout, TimeUnit unit) {
        redisTemplate.opsForValue().set(key, entity, timeout, unit);
    }
}

這樣,你就可以在 Spring Boot 中使用實體和 Repository 存取 Redis。如果你有任何其他問題或需要進一步的幫助,隨時告訴我!