redis_stream 0.1.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49b0969e58e3218a98bca0a7fee77b867319d714939bb2f362d26caefda7276e
4
- data.tar.gz: ae4dfad5e0111d8d194dd2efb42c760169d6ff1779be54c7f0be880b85543865
3
+ metadata.gz: aa2de65409a3a83d298de733e2f3355bb7da6ebb529125437968ba15ddc18ab3
4
+ data.tar.gz: c344189774034287fa7a014b516c77d05f222facf1ee10647f30394913ece4eb
5
5
  SHA512:
6
- metadata.gz: 0ccc6e83373da211edac19337381cb91be66cf54348be8014e41241f41ad5fd3499026d4efde8251e79911bf79f1ec450ad58f3b7f914b468407ac9a46093f02
7
- data.tar.gz: 2716f3534212900fd4b5079f201acd072f9cc193ef75c9daf6eee303a8a358e7bdcc3570c81e20c8df682759572398c4ad87036f9103ade017cca4b28149816b
6
+ metadata.gz: bc3c7528075b49aaba8bf3b02e531f03afebae736b29f10647069e260c5e654de6643ba840f499461da1ac8ffa771571906430e197bc9b648c936f7e178cbe8e
7
+ data.tar.gz: 2cfabc193ded3ea9eac249b1777b06a44586f32d81f400604cd1007746b9cae71109d41ba2cd8739e944c8ae3cdaf0942378c855270fec0af6abe7c55d9d3b63
data/README.md CHANGED
@@ -42,9 +42,9 @@ client = RedisStream.new
42
42
 
43
43
  weather_stream = client.stream('weather')
44
44
 
45
- weather_stream.add(20.0)
46
- weather_stream.add(21.0)
47
- weather_stream.add(22.0)
45
+ weather_stream.add({ temp: 20.0 })
46
+ weather_stream.add({ temp: 21.0 })
47
+ weather_stream.add({ temp: 22.0 })
48
48
 
49
49
  puts weather_stream.len
50
50
  #=> 3
@@ -58,12 +58,18 @@ require 'redis_stream'
58
58
  client = RedisStream.new
59
59
  messages_stream = client.stream('messages')
60
60
 
61
- messages_stream.add('Message 1')
62
- messages_stream.add('Message 2')
61
+ messages_stream.add({ msg: 'Message 1' })
62
+ messages_stream.add({ msg: 'Message 2' })
63
63
 
64
64
  messages_stream.each_message do |message|
65
65
  puts message
66
66
  end
67
- # => Message 1
68
- # => Message 2
67
+ # => { "msg" => Message 1 }
68
+ # => { "msg" => Message 2 }
69
+
70
+ puts messages_stream.last
71
+ # => { "msg" => Message 2 }
72
+
73
+ puts messages_stream.first
74
+ # => { "msg" => Message 2 }
69
75
  ```
@@ -39,7 +39,7 @@ module RedisStream
39
39
  messages = result[key]
40
40
  messages.each do |message|
41
41
  id, entry = message
42
- yield(entry['value'])
42
+ yield(entry)
43
43
  @redis.xack(key, name, id) if ack
44
44
  end
45
45
  end
@@ -8,7 +8,7 @@ module RedisStream
8
8
  end
9
9
 
10
10
  def add(entry)
11
- @redis.xadd(key, value: entry)
11
+ @redis.xadd(key, entry)
12
12
  end
13
13
 
14
14
  def len
@@ -19,6 +19,10 @@ module RedisStream
19
19
  @redis.xtrim(key, 0)
20
20
  end
21
21
 
22
+ def group(name:)
23
+ RedisStream::Group.new(redis: @redis, key: key, name: name)
24
+ end
25
+
22
26
  def each_message
23
27
  last_id = '0'
24
28
 
@@ -29,9 +33,21 @@ module RedisStream
29
33
  messages = result[key]
30
34
  messages.each do |message|
31
35
  last_id, entry = message
32
- yield(entry['value'])
36
+ yield(entry)
33
37
  end
34
38
  end
35
39
  end
40
+
41
+ # XREVRANGE [name] + - COUNT 1
42
+ def last
43
+ _id, entry = @redis.xrevrange(key, '+', '-', count: 1).first
44
+ entry
45
+ end
46
+
47
+ # XRANGE [name] - + COUNT 1
48
+ def first
49
+ _id, entry = @redis.xrange(key, '-', '+', count: 1).first
50
+ entry
51
+ end
36
52
  end
37
53
  end
@@ -1,3 +1,3 @@
1
1
  module RedisStream
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_stream
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anton Volkov