Add support for an expiration option. If you are creating semaphores dynamically, the keys do not naturally expire and will gradually build up in Redis. This assumes you don't have exceptionally long running critical sections as no expiration is set on the grabbed_key. In theory there could be some point within exists_or_create! where the exists_key expires between the getset and the renewal of the expiration, but this setting would be only appropriate when there is some definitive time the lock is no longer useful like a bidding window that has closed