yep - part of our fix was ordering the expires such that the invariants are maintained even if the expires arn't exactly at the same time (we are assuming expires are at least ordered)
One hack I can think of is, accessing the keys. If the key is expired, then Redis won't provide it and you could know it is expired.
Another way is to club all of the relative keys in a hash [1]
[0] - https://redis.io/commands/expire#how-redis-expires-keys
sorry should have been more clear
There is also a "passive" key expiry where any read to a key will check the expiry time and delete the key if the current time is larger than the expiry time.
Why are you assuming that? And if true, why do you think that assumption will hold in the future????? Redis could always tweak or change the behavior.