1. 程式人生 > 其它 >redis中是沒有Long型別的

redis中是沒有Long型別的

redis中沒有Long型別,儲存進去後取出來會是Interger型別。需要自行轉化,不可直接強轉。否則將CCE。 本人在處理springboot的redisTemplate封裝時發生了這個異常。解決方案如下

private <T> T getObject(String key, Class<T> clazz, boolean updateLive, long timeout, TimeUnit unit) {
    Assert.notNull(key, "查詢key值不能為null");
    if (isExist(key)) {
        Object valueObj 
= redisTemplate.opsForValue().get(key); if (updateLive) { redisTemplate.expire(key, timeout, unit); } if (clazz.isInstance(valueObj)) { return (T) valueObj; } else if (clazz == Long.class && valueObj instanceof Integer) { Integer obj
= (Integer) valueObj; return (T) Long.valueOf(obj.longValue()); } else { logger.warn("object type is " + valueObj.getClass().getName() + ", which can not cast to " + clazz.getName()); } } return null; }