Currently, WATCH in a multi-exec transaction will ignore expired keys. So if a key that was previously being watched is expired and deleted from Redis, WATCH will not consider it at all... There is a TCL test for this behavior
https://github.com/redis/redis/blob/unstable/tests/unit/multi.tcl#L224
However, this behavior doesn't seem to make a lot of sense to me. If I am watching an item and the item gets deleted from Redis, I would want to be notified... Anyone know the reason behind this behavior in Redis?
Comment From: madolson
This was previously brought up in https://github.com/redis/redis/issues/6860, It looks like salvatore agreed but no one did anything about it.
"I mean, if you WATCH a key, and it gets deleted for whatever reason, you expect the watch to fail. Looks like a bug, I'm surprised no one complained about it for so many years. People must not be using watch that much..." Got a thumbs up