2014-01-11 125 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; 
       } 
     }); 
}