私は、[ハッシュタイプ(キーフィールド値)の値にアクセスする方法のRedis] --- Javaのシリーズが大好き

@Service
 パブリック クラス CartServiceImplが実装CartService { 

    プライベート 静的 最終的な文字列CART =「Cart_を」

    @Autowired 
    プライベートRedisTemplate redisTemplate。

    @Autowired 
    プライベートSkuFeign skuFeign。

    @Autowired 
    プライベートSpuFeign spuFeign。

    / ** 
     *添加购物车
     * @param SKUID 
     * @paramのNUM
      * / 
    @Override 
    公共 ボイドアドオン(NUM文字列SKUID、整数、文字列のユーザー名){ 

        / ** 
         * 1)查询Redisの中的数据
         * 2)Redisのは既に、追加、再計算された量の数た場合
         * 3)でない場合は、バッファに製品を追加する
         * / 
        のOrderItemのOrderItem =(のOrderItem)redisTemplate.boundHashOps(CARTユーザ名+)に.get(SKUID)。 Redisのから//値
         IF(のOrderItem =!ヌル){
             // 、カート更新 
            orderItem.setNum(orderItem.getNum()+ NUM)を、
            orderItem.setMoney(orderItem.getNum() * orderItem.getPrice() ); 
            orderItem.setPayMoney(orderItem.getNum() * orderItem.getPrice()); 
        } {
             // 存在しない、新しいカート 
            結果<SKU> skuResult =skuFeign.findById(SKUID); 
            SKU SKU = skuResult.getData(); 
            SPU SPU = spuFeign.findByspuId(sku.getSpuId()); 

            // のOrderItemにSKU変換 
            のOrderItemは= この.sku2OrderItem(SKU、SPU、NUM)を、
        } 

        // 格納されているのRedisの
        redisTemplate.boundHashOps(CART + 名).put(SKUID、のOrderItem);格納された値に//のRedis

 
    } 

    // 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(CART + ユーザー名).put(SKUID、のOrderItem); // Redisのために値を保存
redisTemplate.boundHashOps(CART +名)に.get( SKUID); // Redisのからの値は

、ここで述べた値がハッシュ・タイプに格納されている場合、キーはフィールドの複数の複数に対応することができる、この方法のRedisをboundHashOps値に対応するフィールド。利点の一つとして格納されたオブジェクトのハッシュ:各フィールドに文字列型と比較されているが、より多くのメモリを節約する、別々に保存されます。
 

おすすめ

転載: www.cnblogs.com/hujunwei/p/11440507.html
おすすめ