Module: RedisLocks
- Defined in:
- lib/redis_locks.rb,
lib/redis_locks/mutex.rb,
lib/redis_locks/version.rb,
lib/redis_locks/semaphore.rb,
lib/redis_locks/lock_error.rb,
lib/redis_locks/connections.rb,
lib/redis_locks/token_bucket.rb,
lib/redis_locks/evalsha_or_eval.rb,
lib/redis_locks/resource_unavailable.rb
Defined Under Namespace
Modules: Connections Classes: AlreadyLocked, LockError, Mutex, MutexExpired, RateLimitExceeded, ResourceUnavailable, Semaphore, SemaphoreUnavailable, TokenBucket
Constant Summary collapse
- VERSION =
'0.2.0'
Class Method Summary collapse
-
.evalsha_or_eval(conn:, script:, digest:, keys: [], args: []) ⇒ Object
This ensures that each Lua script is evaluated at most once; after it has been evaluated, we will be able to call it just by passing its digest.
- .redis ⇒ Object
- .redis=(redis) ⇒ Object
Class Method Details
.evalsha_or_eval(conn:, script:, digest:, keys: [], args: []) ⇒ Object
This ensures that each Lua script is evaluated at most once; after it has been evaluated, we will be able to call it just by passing its digest.
5 6 7 8 9 10 11 12 13 |
# File 'lib/redis_locks/evalsha_or_eval.rb', line 5 def self.evalsha_or_eval(conn:, script:, digest:, keys: [], args: []) conn.evalsha digest, keys, args rescue Redis::CommandError => e if e..start_with?('NOSCRIPT') conn.eval script, keys, args else raise end end |
.redis ⇒ Object
16 17 18 19 |
# File 'lib/redis_locks.rb', line 16 def self.redis raise "RedisLocks.redis is not set!" unless @redis @redis end |
.redis=(redis) ⇒ Object
12 13 14 |
# File 'lib/redis_locks.rb', line 12 def self.redis=(redis) @redis = Connections.ensure_pool(redis) end |