Redis中不支持嵌套数据结构,只支持字符串类型的k-v数据结构
1.对象存储
-
在项目中以前对对象的存储才用的是序列化操作,每次存入Redis都需要先将对象序列化,然后在存入,取出时再反序列化。
优点:虽然需要序列化和反序列化,但是可以直接操作对象的方法,方便快捷
缺点:需要序列化和反序列化,并且修改单个字段,需要获取整个json,修改后,序列化保存,浪费空间,浪费时间,效率低 -
后来为了节约内存空间,以及进度类需要实时更新其中某个字段,而非全部,所以为了提升效率,于是采用redis的hash数据类型重构。Redis hash 是一个 string 类型的 field 和 value 的映射表,hash 特别适合用于存储对象。
考虑到实际情况,比如多用户任务进度信息,需要userId与taskName唯一标志一个进度信息,因此对应的进度key为:userId:taskName value:cnt、count、finish、breakdown
另外需要快速查询每个用户对应的所有进度信息,因此还需要存储每个用户所对应的的任务名
<