redis-unique-queue 0.0.9 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9988ab673216ddbe91cfb262cfadfc946de64eb6
4
- data.tar.gz: 4843b3685e9c9b763a2647cf8d042778459cb45d
3
+ metadata.gz: 181098abab429ba302f5a12778224c7ff43f0493
4
+ data.tar.gz: a0b5caa4aa030dd2c72df554732dd1a38f58e1f3
5
5
  SHA512:
6
- metadata.gz: c07a0e7e00592d7f2a43bcdefca9670a5cd2b9192b8156ed2a3f5e91676ed8966f947412c108de6b34b637a8d960355278e58a0b59361928a2e925b139af7435
7
- data.tar.gz: 0c72f835e333b462a13fb84390d1597d071884788d77e233739e4f903b2478e45442981fe14c9ae8fc6213653f29be9702660617f3a6f6d707457d17e53d3190
6
+ metadata.gz: 42a07228f69c9427f49961331074a56cfa21f2c7904f21e378a5447013ace30834e24cda82144293183eccf1bf86e953f41bfb719fef4aada77f41781ed58131
7
+ data.tar.gz: efe3f5304aae408515bda9c2fd2dc8f47e7db41c71d56754581aca0e49bc0302e8074a47ee11a26873b4deb78d4ad56e4aef6b6fda604b33dd6ac6e8c544812c
data/README.md CHANGED
@@ -47,6 +47,13 @@ q.push "world"
47
47
  q.push "hello" # the item 'hello' will only exist once in the queue since it is unique
48
48
  ```
49
49
 
50
+ You can push multiple items onto the queue.
51
+
52
+ ```ruby
53
+ q.push_multi [1,2,3]
54
+ q.push_multi 4,5,6
55
+ ```
56
+
50
57
  You can pop data from the queue.
51
58
 
52
59
  ```ruby
@@ -5,7 +5,7 @@ class Redis
5
5
  class Queue
6
6
  attr_reader :name
7
7
 
8
- VERSION = "0.0.9"
8
+ VERSION = "1.0.0"
9
9
 
10
10
  def initialize(name, redis_or_options = {})
11
11
  @name = name
@@ -16,12 +16,25 @@ class Redis
16
16
  end
17
17
  end
18
18
 
19
- #Add an item to the queue. delay is in seconds.
20
- def push data, delay=0
21
- score = Time.now.to_f + delay
19
+ def push data
20
+ score = Time.now.to_f
22
21
  @redis.zadd(name, score, data)
23
22
  end
24
23
 
24
+ def push_multi *values
25
+ if values.size > 0
26
+ score = Time.now.to_f
27
+
28
+ values = values.first if 1 == values.size && values.first.kind_of?(Array)
29
+ scored_values = []
30
+ values.each_with_index do |value, i|
31
+ scored_values << [score + i, value]
32
+ end
33
+
34
+ @redis.zadd name, scored_values
35
+ end
36
+ end
37
+
25
38
  def pop
26
39
  block_on_atomic_attempt{ attempt_atomic_pop }
27
40
  end
@@ -72,7 +85,7 @@ class Redis
72
85
  end
73
86
 
74
87
  private
75
-
88
+
76
89
  def attempt_atomic_pop_multi amount
77
90
  attempt_atomic_read_write lambda{ peek 0, amount }, lambda{ |multi, read_result| multi.zremrangebyrank name, 0, amount - 1 }
78
91
  end
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ["lib"]
20
20
 
21
21
  spec.add_development_dependency "bundler", "~> 1.5"
22
- spec.add_development_dependency "rake", '~> 0'
23
- spec.add_runtime_dependency 'redis', '~> 0'
22
+ spec.add_development_dependency "rake"
23
+ spec.add_runtime_dependency 'redis'
24
24
  end
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.9
4
+ version: 1.0.0
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-09-03 00:00:00.000000000 Z
11
+ date: 2015-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -28,28 +28,28 @@ dependencies:
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: redis
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: A unique queue with atomic operations implemented in Redis.