如题,想在 Mysql 的事务之中写一个缓存,不知道对 Mysql 性能是否友好,有老铁尝试过吗??
begin trans;
select xxx;
update xxx;
redis.set(xxx);
commit;
begin trans;
select xxx;
update xxx;
redis.set(xxx);
commit;
|
fancy111Feb 11, 2020
1
骚操作,阻断事务执行。
|
|
kn007Feb 11, 2020
2
建议不要如此操作。
|
|
mahone3297Feb 11, 2020
3
长事务不好
|
|
xmh51Feb 11, 2020
4
事务回滚了 redis 怎么办?
|
|
6
|
|
whileFalseFeb 11, 2020
7
正确的做法是 mysql 提交成功之后更新缓存,这样缓存出错的概率较低。
|
|
cabingFeb 11, 2020
8
不能在事务执行成功后放入 redis 吗?
|
|
diluFeb 11, 2020
9
建议不要这样,除非你是小项目,一天几十个人的那种访问量
但凡是个数据量大的系统你都要考虑一个极端问题,redis 超时会抛出一个异常,导致事务直接失败,但是本来业务应该是成功的 还有就是 redis 写完了但是事务失败了 这些逻辑上的漏洞都考虑清楚 最好的办法是事务完成后写 redis 用的时候从 redis 中取 不存在再从数据库取 |
|
NeinChnFeb 11, 2020
10
直接提交事务后,通过 binlog 得到消息流,通过回调的方式去更新 Redis 也是一种常用解决方案
有很多类似的基础组件,例如 linkedin 的 databus,阿里 canal |