zeromicro / zero-doc

The docs for go-zero

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

关于go-ctl模版更新方法的缺陷

chenjianjun571 opened this issue · comments

如果一个表有唯一索引,目前的goctl模版是有缺陷的

自动生成的Update方法是基于传入的data字段进行缓存key组合并删除。如果使用者修改的是唯一索引字段,会导致修改前的唯一索引缓存key不会被删除。
比如:
用户表 user 主键key是id,唯一索引是phone
数据库存在一条记录id:3 phone1:123456 对应的redis缓存是 user:id:3-----指向>>>>数据 user:phone1:123456-------指向>>>>3
使用放把id为3的电话号码修改为654321,那么按照目前的方式,缓存里面会出现这样的情况:
user:id:3-----指向>>>>数据
user:phone1:123456-------指向>>>>3 (未删除)
user:phone1:654321-------指向>>>>3(修改后访问新增)

解决办法
在update的时候,通过id取一下旧值,然后通过旧值把缓存key删除

我的实现方案,官方可以考虑
image