Spring Boot 如何使用Sping Boot 和RedisTemplate为Redis数据库中的散列键中的特定行记录设置生存时间(TTL)

tkqqtvp1  于 2022-12-12  发布在  Spring
关注(0)|答案(1)|浏览(190)

我有一个EmployeeDaoImpl类,它有一个**saveEmployee方法,它使用hashOperationsputIfAbsent方法在Redis中存储JSON**字符串。

@Service
public class EmployeeDaoImpl implements IEmployeeDao {

    private static final String MAPPING_KEY = "EMPLOYEES_REG_TEMP_RECORDS";
    
    private final ObjectMapper objectMapper;
    private final StringRedisTemplate stringRedisTemplate;
    @Resource(name = "stringRedisTemplate")  // 'stringRedisTemplate' is defined as a Bean in AppConfig.java
    private HashOperations<String, String, String> hashOperations;
    
    public EmployeeDaoImpl(ObjectMapper objectMapper, StringRedisTemplate stringRedisTemplate) {
        this.objectMapper = objectMapper;
        this.stringRedisTemplate = stringRedisTemplate;
    }
    
    @Override
    public void saveEmployee(Employee emp) throws JsonProcessingException {
        String json = objectMapper.writeValueAsString(emp);
        hashOperations.putIfAbsent(MAPPING_KEY, emp.getRequestRefId(), json);
    }

}

这张截图是Redis

中员工记录的保存方式
我可以通过这种方式使密钥过期

stringRedisTemplate.expire(key, 30, TimeUnit.SECONDS)

但现在我希望能够为EMPLOYEES_REG_TEMP_RECORDS哈希键中的每个单行记录设置TTL,而不会使该键过期

sqxo8psd

sqxo8psd1#

在Redis中,哈希值中的字段不能过期。Redis只支持键的过期,而不支持键中的值。

相关问题