redis-unique-queue 0.0.6 → 0.0.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +6 -0
- data/lib/redis/unique/queue.rb +22 -1
- metadata +2 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fe0ab6091f352b3205cdbda893af5a397f90989
|
4
|
+
data.tar.gz: 303d6fc29e02f326c773ee3d81990cf30296dbc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e32f7c9629bedc8e841fd86efbde03ee87b24e0a1b50c241822f9124a8ba3fe00f4fb759fb12619969bd2006dd28ede3be7526aeefe48aa8e257261a1a1ea0ea
|
7
|
+
data.tar.gz: dae1e9b8e2c24a3dbc0e81d729f1752b7c4d0be0f9dcc568ad09857e98281f86f0bf583781d8cb5576945283b424dbd0633c94a3c202daaaa96a89dc9da3096b
|
data/README.md
CHANGED
data/lib/redis/unique/queue.rb
CHANGED
@@ -5,7 +5,7 @@ class Redis
|
|
5
5
|
class Queue
|
6
6
|
attr_reader :name
|
7
7
|
|
8
|
-
VERSION = "0.0.
|
8
|
+
VERSION = "0.0.7"
|
9
9
|
|
10
10
|
def initialize(name, redis_or_options = {})
|
11
11
|
@name = name
|
@@ -29,6 +29,13 @@ class Redis
|
|
29
29
|
result
|
30
30
|
end
|
31
31
|
|
32
|
+
def pop_all
|
33
|
+
begin
|
34
|
+
success, result = attempt_atomic_pop_all
|
35
|
+
end while !success && result
|
36
|
+
result
|
37
|
+
end
|
38
|
+
|
32
39
|
def front
|
33
40
|
@redis.zrange(name, 0, 0).first
|
34
41
|
end
|
@@ -67,6 +74,20 @@ class Redis
|
|
67
74
|
|
68
75
|
private
|
69
76
|
|
77
|
+
def attempt_atomic_pop_all
|
78
|
+
result = nil
|
79
|
+
success = @redis.watch(name) do
|
80
|
+
result = all
|
81
|
+
if result
|
82
|
+
@redis.multi do |multi|
|
83
|
+
multi.del name
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
[success, result]
|
89
|
+
end
|
90
|
+
|
70
91
|
def attempt_atomic_pop
|
71
92
|
min_score = 0
|
72
93
|
max_score = Time.now.to_f
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redis-unique-queue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Misha Conway
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-08-
|
11
|
+
date: 2015-08-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -91,4 +91,3 @@ signing_key:
|
|
91
91
|
specification_version: 4
|
92
92
|
summary: A unique queue with atomic operations implemented in Redis
|
93
93
|
test_files: []
|
94
|
-
has_rdoc:
|