I love the java series --- [redis how to access the value of hash type (key field value)]

@Service
public class CartServiceImpl implements CartService {

    private static final String CART="Cart_";

    @Autowired
    private RedisTemplate redisTemplate;

    @Autowired
    private SkuFeign skuFeign;

    @Autowired
    private SpuFeign spuFeign;

    /**
     * 添加购物车
     * @param skuId
     * @param num
     */
    @Override
    public void add(String skuId, Integer num,String username) {

        /**
         * 1)查询redis中的数据
         * 2) If redis already has, the number of additional, recalculated amount 
         * 3) If not, add the product to the buffer 
         * / 
        the OrderItem orderItem = (the OrderItem) redisTemplate.boundHashOps (the CART username +) .get (skuId); // values from the redis
         IF (orderItem =! null ) {
             // , renew cart 
            orderItem.setNum (orderItem.getNum () + NUM); 
            orderItem.setMoney (orderItem.getNum () * orderItem.getPrice () ); 
            orderItem.setPayMoney (orderItem.getNum () * orderItem.getPrice ()); 
        } the else {
             // does not exist, the new cart 
            Result <Sku> skuResult =skuFeign.findById (skuId); 
            Sku SKU = skuResult.getData (); 
            Spu SPU = spuFeign.findByspuId (sku.getSpuId ()); 

            // converting SKU into the OrderItem 
            orderItem = the this .sku2OrderItem (SKU, SPU, NUM); 
        } 

        // stored redis 
        redisTemplate.boundHashOps (the CART + username) .put (skuId, orderItem); // redis to the stored-value

 
    } 

    // convert to sku orderItem 
    Private the orderItem sku2OrderItem (Sku sku, Spu SPU, Integer NUM) { 
        the orderItem orderItem = new new the 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 ( ));        // Price * quantity 
        orderItem.setPayMoney (NUM * orderItem.getPrice ());     // amount actually paid 
        orderItem.setImage (sku.getImage ()); 
        orderItem.setWeight (sku.getWeight () * NUM);            // weight = number of individual weight * 

        // classification ID setting 
        orderItem.setCategoryId1 (spu.getCategory1Id ()); 
        orderItem.setCategoryId2 (spu.getCategory2Id ()); 
        orderItem.setCategoryId3 (spu.getCategory3Id ());
        return orderItem;
    }
}
redisTemplate.boundHashOps (the CART + username) .put (skuId, orderItem); // save the value to redis
redisTemplate.boundHashOps (CART + username) .get ( skuId); // the value from redis

noted here boundHashOps redis to this method, when the value stored in the hash type, the key may correspond to a plurality of a plurality of Field, a field corresponding to a value. An object hash stored as one type of benefits: in each field are compared to a string type is stored separately, more save memory.
 

Guess you like

Origin www.cnblogs.com/hujunwei/p/11440507.html