Double check key expiration

It is possible with the current implementation to create a lock without an expires if the program crashes at the right time. This is a workaround for the potential issue.

It could probably be done more correctly with redis' transactions, but those confuse and scare me.