我爱java系列---【redis中如何存取hash类型的值(key field value)】
时间:2019-08-31
本文章向大家介绍我爱java系列---【redis中如何存取hash类型的值(key field value)】,主要包括我爱java系列---【redis中如何存取hash类型的值(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)如果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转换为orderItem private 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
- springboot 注册服务注册中心(zk)的两种方式
- 极速体验:Oracle 18c 下载和Scalable Sequence新特性
- springboot mybatis 事务管理
- Elasticsearch JAVA api轻松搞定groupBy聚合
- 微信加关注链接 一键关注公众号 解决用手机看网页无法扫二维码的烦恼
- springboot mybatis redis 二级缓存
- Elasticsearch强制重置未分配的分片(unassigned)
- 帝国cms调用缩略图和具体文章的方法
- python codis集群客户端(一) - 基于客户端daemon探活与服务列表维护
- python codis集群客户端(二) - 基于zookeeper对实例创建与摘除
- JavaScript replace() 方法
- 别让Open Sans字体拖慢wordpress后台速度
- Oracle 问题小结
- 为帝国cms模板添加站内搜索小教程
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MTO和MaTO MMZDT
- stat 命令家族(3)- 详解 mpstat
- 知识图谱入门(一)
- PHP判断变量内容是什么编码(gbk?utf-8) mb_detect_encoding
- stat 命令家族(4)- 详解 iostat
- PHP将数组存入数据库中的四种方式
- 序列化与json性能评测
- js内存泄漏常见的四种情况(From LeuisKen)
- 「R」Rprofile:R 全局设置
- Jmetal Problem和Problem Set的变量范围
- 简单工厂、工厂方法、抽象工厂的比较与分析
- 用一张组织架构图说清楚类和对象
- 一起来学matlab-matlab学习笔记8 基本绘图命令_3 特殊图形绘制
- 看了这个有趣的例子,你就秒懂多线程同步了
- IDA7.0 配置内核调试,双机调试