2014-01-11 127 views
2

我想删除一个redis键,但由于某种原因它不是删除,但也没有抛出异常。这里是我的代码删除:春季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)); 
    } 
} 
+0

从Redis的-CLI中使用监控命令查看发送到Redis的服务器,命令。 http://redis.io/commands/monitor –

+0

是你的redis一个主实例吗?如果您尝试删除从机实例上的密钥,您的行为就会发生。 – user1151446

回答

0

没有getOperation使用:

@Override 
public void deleteCustomer(BigInteger id) { 
    redisTemplate.opsForValue().delete(String.valueOf(id)); 
} 
8

ValueOperations没有删除方法。所以下面将不起作用:

redisTemplate.opsForValue().delete(key); 

尝试

redisTemplate.delete(key); 
0

试试这个:

public void deleteCustomer(BigInteger id) { 
     redisTemplate.execute(new RedisCallback<String>() { 
       @Override 
       public String doInRedis(RedisConnection redisConnection) throws DataAccessException { 
         redisConnection.del(redisTemplate.getStringSerializer().serialize(String.valueOf(id))); 
         return null; 
       } 
     }); 
}