Я люблю серию Java --- [Redis том, как получить доступ к значению типа хэш (ключевое значение поля)]

@Service
 общественного  класса CartServiceImpl реализует CartService { 

    частной  статическая  окончательная Струнной КОРЗИНА = «Cart_» ; 

    @Autowired 
    личное RedisTemplate redisTemplate; 

    @Autowired 
    частный SkuFeign skuFeign; 

    @Autowired 
    частный SpuFeign spuFeign; 

    / ** 
     *添加购物车
     * @param skuId 
     * @param Num
      * / 
    @Override 
    общественности  недействительными добавить (String skuId, Integer Num, String имя пользователя) { 

        / ** 
         * 1)查询Redis中的数据
         * 2) Если Redis уже есть, количество дополнительного, пересчитанной суммы 
         * 3) Если нет, то добавить продукт в буфер 
         * / 
        OrderItem OrderItem = (The OrderItem) redisTemplate.boundHashOps (ВОЗ имя пользователя +) .get (skuId); // значения из Redis
         IF (OrderItem! = NULL ) {
             // , обновляют телеги 
            orderItem.setNum (orderItem.getNum () + NUM); 
            orderItem.setMoney (orderItem.getNum () * orderItem.getPrice () ); 
            orderItem.setPayMoney (orderItem.getNum () * orderItem.getPrice ()); 
        } еще {
             // не существует, новая корзина 
            Результат <Sku> skuResult =skuFeign.findById (skuId); 
            Sku ы = skuResult.getData (); 
            СПУ СПУ = spuFeign.findByspuId (sku.getSpuId ()); 

            // преобразование SKU в OrderItem 
            OrderItem = на эту .sku2OrderItem (ы, СПУ, NUM); 
        } 

        // сохраненные Redis 
        redisTemplate.boundHashOps (ВОЗ + имя пользователя) .Put (skuId, OrderItem); // Redis к хранимой стоимости

 
    } 

    // преобразовать в СКУ OrderItem 
    Private OrderItem sku2OrderItem (Sku SKU, SPU SPU, Integer NUM) { 
        в OrderItem OrderItem = новый новый OrderItem (); 
        orderItem.setSpuId (sku.getSpuId ());
        orderItem.setSkuId (sku.getId ()); 
        orderItem.setName (sku.getName ()); 
        orderItem.setPrice (sku.getPrice ()); 
        orderItem.setNum (NUM); 
        orderItem.setMoney (NUM * orderItem.getPrice ( ));        // цена * количество 
        orderItem.setPayMoney (NUM * orderItem.getPrice ());     // количество фактически уплаченной 
        orderItem.setImage (sku.getImage ()); 
        orderItem.setWeight (sku.getWeight () * NUM);            // вес = количество индивидуального веса * 

        // установка классификации ID 
        orderItem.setCategoryId1 (spu.getCategory1Id ()); 
        orderItem.setCategoryId2 (spu.getCategory2Id ()); 
        orderItem.setCategoryId3 (spu.getCategory3Id ());
        вернуться OrderItem; 
    } 
}
redisTemplate.boundHashOps (телега + имя пользователя) .Put (skuId, OrderItem); // сохранить значение в Redis
redisTemplate.boundHashOps (CART + имя пользователя) .get ( skuId); // значение из Redis

отметить boundHashOps Redis к этому способу, когда значение , сохраненное в типе хэш, ключ может соответствовать множеству множества поля, поле , соответствующее значению. Объект хэш хранится в виде одного типа преимуществ: в каждой области сравниваются с типом строка хранится отдельно, более экономии памяти.
 

рекомендация

отwww.cnblogs.com/hujunwei/p/11440507.html
рекомендация