我试图删除一个redis键,但由于某种原因,它没有删除,但也没有抛出异常。下面是我的删除代码:
import com.example.service.CustomerService;
import com.example.model.Customer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import java.math.BigInteger;
import java.util.*;
@Service
public class RedisCustomerService implements CustomerService {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
private String uniqueIdKey = "customerId";
private BigInteger uniqueId() {
long uniqueId = this.redisTemplate.opsForValue().increment(uniqueIdKey, 1);
return BigInteger.valueOf(uniqueId);
}
private String lastNameKey(BigInteger id) {
return "customer:ln:" + id;
}
private String firstNameKey(BigInteger id) {
return "customer:fn:" + id;
}
@Override
public void deleteCustomer(BigInteger id) {
redisTemplate.opsForValue().getOperations().delete(String.valueOf(id));
}
}
6条答案
按热度按时间ojsjcaue1#
ValueOperations没有 delete 方法。因此以下内容将不起作用:
试试看
6qftjkof2#
使用
ValueOperations
删除的另一种方法是设置一个几乎立即过期的空值。Redis将自己处理驱逐。例如,您可以设置如下值:
当你想删除的时候,你可以这样做:
两个操作中的密钥必须相同
368yc8dk3#
在spring Boot 2之前,如果你在构建resttemplate时没有指定序列化器,在redis上你会看到这样的键:
“xac\xed\x00\x05t\x008mx.company.support.catalog.dao.keys”
但当尝试删除它与
redisTemplate.delete(key)
的关键是不擦除一个简单的方法是获取字节中的键并继续删除它。
你班上的例子:
ia2d9nvy4#
试试这个:
flvlnr445#
hs1ihplo6#
没有要使用的getOperation: