我爱java系列---【redis中如何存取hash类型的值(key field value)】
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了我爱java系列---【redis中如何存取hash类型的值(key field value)】,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2047字,纯文字阅读大概需要3分钟。
内容图文
@Service public class CartServiceImpl implements CartService { privatestaticfinal String CART="Cart_"; @Autowired private RedisTemplate redisTemplate; @Autowired private SkuFeign skuFeign; @Autowired private SpuFeign spuFeign; /** * 添加购物车 * @param skuId * @param num */ @Override publicvoid add(String skuId, Integer num,String username) { /** * 1)查询redis中的数据 * 2)如果redis中已经有了,则追加数量,重新计算金额 * 3)如果没有,将商品添加到缓存 */ OrderItem orderItem = (OrderItem) redisTemplate.boundHashOps(CART+username).get(skuId);//从redis中取值 if (orderItem != null){ //存在,刷新购物车 orderItem.setNum(orderItem.getNum()+num); orderItem.setMoney(orderItem.getNum()*orderItem.getPrice()); orderItem.setPayMoney(orderItem.getNum()*orderItem.getPrice()); }else{ //不存在,新增购物车 Result<Sku> skuResult = skuFeign.findById(skuId); Sku sku = skuResult.getData(); Spu spu = spuFeign.findByspuId(sku.getSpuId()); //将SKU转换成OrderItem orderItem = this.sku2OrderItem(sku,spu,num); } //存入redis redisTemplate.boundHashOps(CART+username).put(skuId,orderItem);//往redis中存值 } //sku转换为orderItemprivate OrderItem sku2OrderItem(Sku sku, Spu spu, Integer num) { OrderItem orderItem = new 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()); return orderItem; } }
redisTemplate.boundHashOps(CART+username).put(skuId,orderItem);//往redis中存值
redisTemplate.boundHashOps(CART+username).get(skuId);//从redis中取值
这里注意boundHashOps这个方法在往redis中存值的时候,在hash类型中,一个key可以对应多个多个field,一个field对应一个value。将一个对象存储为hash类型的好处之一:较于每个字段都单独存储成string类型来说,更能节约内存。
原文:https://www.cnblogs.com/hujunwei/p/11440507.html
内容总结
以上是互联网集市为您收集整理的我爱java系列---【redis中如何存取hash类型的值(key field value)】全部内容,希望文章能够帮你解决我爱java系列---【redis中如何存取hash类型的值(key field value)】所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。