나는 자바 시리즈를 사랑 --- [방법 해시 유형의 값에 액세스하는 레디 스 (키 필드 값)]

@Service
 공공  클래스 CartServiceImpl는 구현 CartService { 

    개인  정적  최종 문자열 쇼핑 카트에 담기 = "Cart_을" ; 

    @Autowired 
    개인 RedisTemplate의 redisTemplate을; 

    @Autowired 
    개인 SkuFeign skuFeign; 

    @Autowired 
    개인 SpuFeign spuFeign; 

    / ** 
     *添加购物车
     * @param skuId 
     * 파라미터 : NUM
      * / 
    @Override 
    공공  무효 추가 (NUM 문자열 skuId, 정수, 문자열 이름) { 

        / ** 
         * 1)查询레디 스中的数据
         * 레디 스 이미있는 경우 2), 추가로, 계산 금액 수가 
         없는 경우 * 3), 상기 버퍼에 제품을 추가 
         * / 
        OrderItem에 OrderItem에 =합니다 (OrderItem에) redisTemplate.boundHashOps (손수레 자명 +) 갔지 (skuId); 레디 스로부터 // 값
         IF (! = OrderItem에 ) {
             // 카트 갱신 
            orderItem.setNum (orderItem.getNum () + NUM) 
            orderItem.setMoney (orderItem.getNum () * orderItem.getPrice ()를 ) 
            orderItem.setPayMoney (orderItem.getNum () * orderItem.getPrice ()); 
        } 다른 {
             // 존재하지 않는 새로운 카트 
            결과 <SKU> = skuResultskuFeign.findById (skuId) 
            SKU SKU = skuResult.getData (); 
            SPU SPU = spuFeign.findByspuId (sku.getSpuId ()); 

            // OrderItem에 SKU로 변환 
            OrderItem에가 = 이 본 .sku2OrderItem (SKU, SPU, NUM)를; 
        } 

        // 저장 레디 스의 
        redisTemplate.boundHashOps합니다 (카트 + 이름) .put (skuId, OrderItem에) 저장된 값을 // 레디 스

 
    } 

    // SKU OrderItem에 변환 
    개인 OrderItem에 sku2OrderItem (SKU SKU, SPU SPU, 정수 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에); // 레디 스에 값을 저장
redisTemplate.boundHashOps (CART + 자명) 갔지 ( skuId) // 레디 스의 값이

주목 해시 유형에 저장된 값은 상기 키 필드는 복수의 복수에 해당 할 수있다이 방법에 레디 스를 boundHashOps, 값에 대응하는 필드. 객체의 해시 혜택의 한 종류로 저장 : 각 필드에 비교 문자열 유형이 더 많은 메모리를 저장, 따로 저장합니다.
 

추천

출처www.cnblogs.com/hujunwei/p/11440507.html