我有一个EmployeeDaoImpl类,它有一个**saveEmployee
方法,它使用hashOperations
的putIfAbsent
方法在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,而不会使该键过期
1条答案
按热度按时间sqxo8psd1#
在Redis中,哈希值中的字段不能过期。Redis只支持键的过期,而不支持键中的值。