可以使用redis的hash进行存储,以客户唯一id作为key创建一个hash存储结构存储对应的购物车信息
将商品编号作为field,购买数量作为value进行存储
添加商品:追加全新的field和value
hset key field value
浏览:遍历hash
hget key field
hgetall key
更改数量: 自增/自减,设置value值
hincrby key field increment
hincrbyfloat key field incrementhset key field value
hmset key field1 value1 field2 value2 ...
删除商品: 删除field
hdel key field1 [field2]
清空: 删除key
hdel key
另外商品信息也要存到redis中
每条购物车中的商品记录保存成两条field
filed1专用于保存购买数量
命名格式: 商品id:nums
保存数据: 数值
field2专用于保存购物车中显示的信息,包含文字描述,图片地址,所属商家信息等
命名格式: 商品id:info
保存数据: json
hsetnx key field value
补充一下hash类型的redis操作方式:
添加/修改数据
hset key field value
获取数据
hget key field
hgetall key
删除数据
hdel key field1 [field2]
添加/修改多个数据
hmset key field1 value1 field2 value2 ...
获取多个数据
hmget key filed1 field2 ...
获取哈希表中字段的数量
hlen key
获取哈希表中是否存在指定的字段
hexists key field
hash类型数据扩展操作
获取哈希表中所有的字段名或字段值
hkeys key
hvals key
设置指定字段的数值数据增加指定范围的值
hincrby key field increment
hincrbyfloat key field incrementhash类型下的value只能存储字符串,不允许存储其他数据类型,不存在嵌套现象。如果数据未获取到,对应的值未nil
每个hash可以存储2^32-1个键值对
hash类型十分贴近对象的数据存储形式,并且可以灵活添加删除对象属性。
但hash的设计初衷不是为存储大量对象而设计的,切记不可滥用,更不可以将hash作为对象列表使用
hgetall操作可以获取全部属性,如果内部field过多,遍历整体数据效率就会很低,有可能成为数据访问瓶颈.
参考文章:https://www.cnblogs.com/ifme/p/12301259.html网友回复
DLNA与UPnP的区别和不同?
苏超自建抢票app,通过先预约再抽签化解高并发抢票?
python如何让给电脑在局域网中伪装成电视接收手机的投屏图片视频播放?
如何结合python+js如何自己的视频编码与加密播放直播?
python如何在电脑上通过局域网将本地视频或m3u8视频投屏电视播放?
腾讯视频爱奇艺优酷vip电影电视剧视频如何通过python绕过vip收费直接观看?
有没有可免费观看全球电视台直播m3u8地址url的合集?
有没有实现观影自由的免vip影视苹果 CMS V10 API的可用url?
python如何实时检测电脑usb插入检测报警?
如何判断真人操作的鼠标移动直线轨迹与机器操作的轨迹?