[Movie Ticket]关于Lazy load的问题

上课时讲到我们更新Ticket表中的pending stauts可以用lazy load的方法,下个人想要重新把record 设置为pending的时候,更新status状态。然而如果这个状态是pending的情况下,其他用户看这个座位应该是显示不能选择的才对,那么这个记录不就没有机会从pending -> availabel了?因为没有用户会去想对已经标记为pending的记录进行写操作?还是说我们应该在读取这个表的时候我们就做检查update pending呢?

读取时会同时看 available 或者是 超时的 pending,把这两种情况都认为是实际意义的 available,更新时同样对待。

请问 alternative approach 如果用redis实现这个ttl (modified_at), 是不是会清晰一些

redis做一个分布式锁, ticket被占用就加个锁在redis里,
a.如果超时没买,这个锁就timeout
b.买了就更db新状态

用 Redis TTL 可以的,但是本质上跟这里提的 Lazy load 是类似的,因为 Redis 的 TTL 也是 semi-lazy 的。只是一个用 Redis 实现 TTL,一个用 DB 实现 TTL。