redis_queue 0.6.1 → 0.7.0

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/redis_queue.rb +33 -3
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ec321ee8d7b2c72ec76a0061f8676bf7a54f215f
4
- data.tar.gz: 6ab9ed9ead9ce2470728e0424a6b7ff96413adff
3
+ metadata.gz: 478d7768be5fbb3a39f9b578d1a0398f221e4dfa
4
+ data.tar.gz: d818a1f802cb83ff38f1a639bd8011dc0dedab7d
5
5
  SHA512:
6
- metadata.gz: 1e815a7e4272d0a79cb8ec709fa5bb663923983227e5a35bbe271c515fa96a496bd792c66cfdef8ed73c337c10e583ef24ea4029d453ec4931b2e5a58df8ddbf
7
- data.tar.gz: 4cbee5cb67aa31e53f4a1ea90cc1da7f6593e4b0687fa29b48f32ac6132e5da2bc0109397fd4fc0d8e44a9222d2109367c6ea53b0110e27bd4d817b86ca46b50
6
+ metadata.gz: f1be4795444eb4700248dded81c56c880cba7cb1490149acbf73913df7890331ad469274a192583f0f5255c5227ba0228862ed2d1015d32b79f680e020051706
7
+ data.tar.gz: 6a6c522e9b3542eff0dd875ff83567294795f69f6645a4e35a5fb5bb1d122c01fadfd3e1beb0e3040b0646e4b8232ba33c4b704f7b16d9969c700ec0d239c1b8
data/lib/redis_queue.rb CHANGED
@@ -22,6 +22,16 @@ class RedisQueue
22
22
  end
23
23
  return message
24
24
  "'',
25
+ touch: ''"
26
+ local message = ''
27
+ while message == '' do
28
+ message = redis.call('lpop', ARGV[1])
29
+ end
30
+ if message then
31
+ redis.call('rpush', ARGV[1], message)
32
+ end
33
+ return message
34
+ "'',
25
35
  repush: ''"
26
36
  #{PUSH_CODE}
27
37
  redis.call('srem', ARGV[1]..'_in_use', ARGV[2])
@@ -55,9 +65,7 @@ class RedisQueue
55
65
 
56
66
  def pop(block: true)
57
67
  return nonblpop unless block
58
- begin
59
- message = @redis_blocking.run { |redis| redis.blpop(@id) }.last
60
- end while message == ''
68
+ message = blpop
61
69
  @redis.run { |redis| redis.sadd "#{@id}_in_use", message } if message
62
70
  message
63
71
  end
@@ -86,6 +94,17 @@ class RedisQueue
86
94
  @redis.run { |redis| redis.srem "#{@id}_in_use", message }
87
95
  end
88
96
 
97
+ def remove(message)
98
+ @redis.run { |redis| redis.lrem @id, 0, message }
99
+ end
100
+
101
+ def touch(block: true)
102
+ return nonbltouch unless block
103
+ message = blpop
104
+ push(message)
105
+ message
106
+ end
107
+
89
108
  def reset
90
109
  init_from "#{@id}_in_use"
91
110
  @redis.run { |redis| redis.del "#{@id}_in_use" }
@@ -157,10 +176,21 @@ class RedisQueue
157
176
 
158
177
  private
159
178
 
179
+ def blpop
180
+ begin
181
+ message = @redis_blocking.run { |redis| redis.blpop(@id) }.last
182
+ end while message == ''
183
+ message
184
+ end
185
+
160
186
  def nonblpop
161
187
  script :nonblpop, @id
162
188
  end
163
189
 
190
+ def nonbltouch
191
+ script :touch, @id
192
+ end
193
+
164
194
  def load_scripts
165
195
  @scripts = {}
166
196
  @redis.run do |redis|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jose Ignacio Fernandez