async-redis 0.2.0 → 0.3.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
  SHA256:
3
- metadata.gz: cd8adb00be17d1c72515a20f6c73dbba0e4f995780b6bec7e4fefef0aca53853
4
- data.tar.gz: 39c7bef188aafb043d7efb1fe437bf18fc215bc1ebff5834e118a28fd37a3cfb
3
+ metadata.gz: f8921f2c6c6856463367ae38fcfa5e82a80616e5eda3430cc6eb40255c47f3ae
4
+ data.tar.gz: 53c01952126f0403bb75d3b82e522048e9b74ceb841a8c15d54a7fec980149b1
5
5
  SHA512:
6
- metadata.gz: 872b269771f7bda3fd312cc70d334687062aefbc27b70e2cc155b06614a26290ee6db0aa3901ea2390b5e2a245617e12c8641eff88608ef8c72a17d83cf4cadc
7
- data.tar.gz: 7cf5d03872e8d7197a00b2493af8838cd8591faa4f6843a02f4ece26d80ae31a58054b96e8b14c03c042fa879ff0a8781954f7c9091515c85cf60ef48f909e62
6
+ metadata.gz: 1bc75e38ba9b902f7f0f89c9a55fc8338c618492c3d30495b76e4da2976ae3509678ef0a51151b6668f6409c46e61fb6cccfda458dd039b5a8ce27d3b979e81a
7
+ data.tar.gz: 849ac7c70c39a57e25def98669e2843639a818f980b081805966d39589b9708cd23b1db13e06261e1c055e9c2c58c9f7bf3fadbfc0ab7d74786268c13dd6ebdc
data/.travis.yml CHANGED
@@ -10,11 +10,13 @@ matrix:
10
10
  - rvm: 2.4
11
11
  - rvm: 2.5
12
12
  - rvm: 2.6
13
+ - rvm: truffleruby
13
14
  - rvm: jruby-head
14
15
  env: JRUBY_OPTS="--debug -X+O"
15
16
  - rvm: ruby-head
16
17
  - rvm: rbx-3
17
18
  allow_failures:
19
+ - rvm: truffleruby
18
20
  - rvm: ruby-head
19
21
  - rvm: jruby-head
20
22
  - rvm: rbx-3
data/README.md CHANGED
@@ -27,6 +27,63 @@ Or install it yourself as:
27
27
 
28
28
  ## Usage
29
29
 
30
+ ### Basic Local Connection
31
+
32
+ ```ruby
33
+ require 'async/redis'
34
+
35
+ endpoint = Async::Redis.local_endpoint
36
+ client = Async::Redis::Client.new(endpoint)
37
+
38
+ Async.run do
39
+ pp client.info
40
+ ensure
41
+ client.close
42
+ end
43
+ ```
44
+
45
+ ### Variables
46
+
47
+ ```ruby
48
+ require 'async/redis'
49
+
50
+ endpoint = Async::Redis.local_endpoint
51
+ client = Async::Redis::Client.new(endpoint)
52
+
53
+ Async.run do
54
+ client.set('X', 10)
55
+ pp client.get('X')
56
+ ensure
57
+ client.close
58
+ end
59
+ ```
60
+
61
+ ### Subscriptions
62
+
63
+ ```ruby
64
+ require 'async/redis'
65
+ require 'json'
66
+
67
+ endpoint = Async::Redis.local_endpoint
68
+ client = Async::Redis::Client.new(endpoint)
69
+
70
+ Async.run do |task|
71
+ subscriber = task.async do
72
+ client.subscribe 'status.frontend' do |context|
73
+ type, name, message = context.listen
74
+
75
+ pp type, name, message
76
+ end
77
+ end
78
+
79
+ publisher = task.async do
80
+ client.publish 'status.frontend', 'good'
81
+ end
82
+ ensure
83
+ client.close
84
+ end
85
+ ```
86
+
30
87
  ## Contributing
31
88
 
32
89
  1. Fork it
data/async-redis.gemspec CHANGED
@@ -13,15 +13,16 @@ Gem::Specification.new do |spec|
13
13
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
14
14
  f.match(%r{^(test|spec|features)/})
15
15
  end
16
+
16
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
18
  spec.require_paths = ["lib"]
18
19
 
19
20
  spec.add_dependency("async", "~> 1.8")
20
- spec.add_dependency("async-io", "~> 1.10.0")
21
+ spec.add_dependency("async-io", "~> 1.10")
21
22
 
22
23
  spec.add_development_dependency "async-rspec", "~> 1.1"
23
24
 
24
- spec.add_development_dependency "bundler", "~> 1.3"
25
+ spec.add_development_dependency "bundler"
25
26
  spec.add_development_dependency "rspec", "~> 3.6"
26
27
  spec.add_development_dependency "rake"
27
28
  end
data/lib/async/redis.rb CHANGED
@@ -18,4 +18,5 @@
18
18
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
19
  # THE SOFTWARE.
20
20
 
21
- require "async/redis/version"
21
+ require_relative 'redis/version'
22
+ require_relative 'redis/client'
@@ -23,6 +23,11 @@ require_relative 'pool'
23
23
  require_relative 'context/multi'
24
24
  require_relative 'context/subscribe'
25
25
 
26
+ require_relative 'methods/strings'
27
+ require_relative 'methods/keys'
28
+ require_relative 'methods/lists'
29
+ require_relative 'methods/server'
30
+
26
31
  require 'async/io'
27
32
 
28
33
  module Async
@@ -32,6 +37,11 @@ module Async
32
37
  end
33
38
 
34
39
  class Client
40
+ include Methods::Strings
41
+ include Methods::Keys
42
+ include Methods::Lists
43
+ include Methods::Server
44
+
35
45
  def initialize(endpoint = Redis.local_endpoint, protocol = Protocol::RESP, **options)
36
46
  @endpoint = endpoint
37
47
  @protocol = protocol
@@ -1,5 +1,5 @@
1
1
  # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- # and Huba Nagy
2
+ # Copyright, 2018, by Huba Nagy.
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -21,10 +21,18 @@
21
21
 
22
22
  require_relative 'nested'
23
23
 
24
+ require_relative '../methods/strings'
25
+ require_relative '../methods/keys'
26
+ require_relative '../methods/lists'
27
+
24
28
  module Async
25
29
  module Redis
26
30
  module Context
27
31
  class Multi < Nested
32
+ include Methods::Strings
33
+ include Methods::Keys
34
+ include Methods::Lists
35
+
28
36
  def initialize(pool, *args)
29
37
  super(pool)
30
38
 
@@ -32,20 +40,12 @@ module Async
32
40
  @connection.read_response
33
41
  end
34
42
 
35
- def set(key, value)
36
- return send_command('SET', key, value)
37
- end
38
-
39
- def get(key)
40
- return send_command 'GET', key
41
- end
42
-
43
43
  def execute
44
- return send_command 'EXEC'
44
+ return call 'EXEC'
45
45
  end
46
46
 
47
47
  def discard
48
- return send_command 'DISCARD'
48
+ return call 'DISCARD'
49
49
  end
50
50
  end
51
51
  end
@@ -1,5 +1,5 @@
1
1
  # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- # and Huba Nagy
2
+ # Copyright, 2018, by Huba Nagy.
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -35,7 +35,7 @@ module Async
35
35
  end
36
36
  end
37
37
 
38
- def send_command(command, *args)
38
+ def call(command, *args)
39
39
  @connection.write_request([command, *args])
40
40
  return @connection.read_response
41
41
  end
@@ -1,5 +1,5 @@
1
1
  # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
- # and Huba Nagy
2
+ # Copyright, 2018, by Huba Nagy.
3
3
  #
4
4
  # Permission is hereby granted, free of charge, to any person obtaining a copy
5
5
  # of this software and associated documentation files (the "Software"), to deal
@@ -66,7 +66,7 @@ module Async
66
66
  return response
67
67
  else
68
68
  @channels.subtract(channels)
69
- return send_command 'UNSUBSCRIBE', *channels
69
+ return call 'UNSUBSCRIBE', *channels
70
70
  end
71
71
  end
72
72
  end
@@ -0,0 +1,140 @@
1
+ # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ # Copyright, 2018, by Huba Nagy.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+
22
+ require 'date'
23
+
24
+ module Async
25
+ module Redis
26
+ module Methods
27
+ module Keys
28
+ def del(key, *keys)
29
+ return call('DEL', key, *keys)
30
+ end
31
+
32
+ def dump(key)
33
+ return call('DUMP', key)
34
+ end
35
+
36
+ def exists(key, *keys)
37
+ return call('EXISTS', key, *keys)
38
+ end
39
+
40
+ def expire(key, seconds)
41
+ return call('EXPIRE', key, seconds)
42
+ end
43
+
44
+ def expireat(key, time)
45
+ case time
46
+ when DateTime, Time, Date
47
+ timestamp = time.strftime('%s').to_i
48
+ else
49
+ timestamp = time
50
+ end
51
+
52
+ return call('EXPIREAT', key, timestamp)
53
+ end
54
+
55
+ def keys(pattern)
56
+ return call('KEYS', pattern)
57
+ end
58
+
59
+ def migrate
60
+
61
+ end
62
+
63
+ def move(key, db)
64
+ return call('MOVE', key, db)
65
+ end
66
+
67
+ def object
68
+
69
+ end
70
+
71
+ def persist(key)
72
+ return call('PERSIST', key)
73
+ end
74
+
75
+ def pexpire(key, milliseconds)
76
+ return call('PEXPIRE', milliseconds)
77
+ end
78
+
79
+ def pexpireat(key, time)
80
+ case time.class
81
+ when DateTime, Time, Date
82
+ timestamp = time.strftime('%Q').to_i
83
+ else
84
+ timestamp = time
85
+ end
86
+
87
+ return call('PEXPIREAT', key, timestamp)
88
+ end
89
+
90
+ def pttl(key)
91
+ return call('PTTL', key)
92
+ end
93
+
94
+ def randomkey
95
+ return call('RANDOMKEY')
96
+ end
97
+
98
+ def rename(key, new_key)
99
+ return call('RENAME', key, new_key)
100
+ end
101
+
102
+ def renamenx(key, new_key)
103
+ return call('RENAMENX', key, new_key)
104
+ end
105
+
106
+ def restore(key, serialized_value, ttl=0)
107
+ return call('RESTORE', key, ttl, serialized_value)
108
+ end
109
+
110
+ def sort
111
+
112
+ end
113
+
114
+ def touch(key, *keys)
115
+ return call('TOUCH', key, *keys)
116
+ end
117
+
118
+ def ttl(key)
119
+ return call('TTL', key)
120
+ end
121
+
122
+ def type(key)
123
+ return call('TYPE', key)
124
+ end
125
+
126
+ def unlink(key)
127
+ return call('UNLINK', key)
128
+ end
129
+
130
+ def wait(newreplicas, timeout)
131
+
132
+ end
133
+
134
+ def scan
135
+
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
@@ -0,0 +1,118 @@
1
+ # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ # Copyright, 2018, by Huba Nagy.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+
22
+ module Async
23
+ module Redis
24
+ module Methods
25
+ module Lists
26
+ def blpop(ttl=0, *keys)
27
+ return call('BLPOP', *keys, ttl)
28
+ end
29
+
30
+ def brpop(ttl=0, *keys)
31
+ return call('BRPOP', *keys, ttl)
32
+ end
33
+
34
+ def brpoplpush(sorce, destination, timeout)
35
+ return call('BRPOPLPUSH', source, destination, timeout)
36
+ end
37
+
38
+ def lindex(key, index)
39
+ return call('LINDEX', key, index)
40
+ end
41
+
42
+ def linsert(key, position=:before, index, value)
43
+ if position == :before
44
+ offset = 'BEFORE'
45
+ else
46
+ offset = 'AFTER'
47
+ end
48
+
49
+ return call('LINSERT', key, offset, index, value)
50
+ end
51
+
52
+ def llen(key)
53
+ return call('LLEN', key)
54
+ end
55
+
56
+ def lpop(key)
57
+ return call('LPOP', key)
58
+ end
59
+
60
+ def lpush(key, value, *values)
61
+ case value
62
+ when Array
63
+ values = value
64
+ else
65
+ values = [value] + values
66
+ end
67
+
68
+ return call('LPUSH', key, *values)
69
+ end
70
+
71
+ def lpushx(key, value)
72
+ return call('LPUSHX', key, value)
73
+ end
74
+
75
+ def lrange(key, start, stop)
76
+ return call('LRANGE', key. start, stop)
77
+ end
78
+
79
+ def lrem(key, count, value)
80
+ return call('LREM', key, count)
81
+ end
82
+
83
+ def lset(key, index, values)
84
+ return call('LSET', key, index, values)
85
+ end
86
+
87
+ def ltrim(key, start, stop)
88
+ return call('LTRIM', key, start, stop)
89
+ end
90
+
91
+ def rpop(key)
92
+ return call('RPOP', key)
93
+ end
94
+
95
+ def rpoplpush(source, destination=nil)
96
+ destination = source if destination.nil?
97
+
98
+ return call('RPOPLPUSH', source, destination)
99
+ end
100
+
101
+ def rpush(key, value, *values)
102
+ case value
103
+ when Array
104
+ values = value
105
+ else
106
+ values = [value] + values
107
+ end
108
+
109
+ return call('RPUSH', key, *values)
110
+ end
111
+
112
+ def rpushx(key, value)
113
+ return call('RPUSHX', key, value)
114
+ end
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,44 @@
1
+ # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ # Copyright, 2018, by Huba Nagy.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+
22
+ module Async
23
+ module Redis
24
+ module Methods
25
+ module Server
26
+ # Get info from server.
27
+ # @return [Hash] the server metadata.
28
+ def info
29
+ metadata = {}
30
+
31
+ call('INFO').each_line(Protocol::CRLF) do |line|
32
+ key, value = line.split(':')
33
+
34
+ if value
35
+ metadata[key.to_sym] = value.chomp!
36
+ end
37
+ end
38
+
39
+ return metadata
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -0,0 +1,132 @@
1
+ # Copyright, 2018, by Samuel G. D. Williams. <http://www.codeotaku.com>
2
+ # Copyright, 2018, by Huba Nagy.
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ # of this software and associated documentation files (the "Software"), to deal
6
+ # in the Software without restriction, including without limitation the rights
7
+ # to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ # copies of the Software, and to permit persons to whom the Software is
9
+ # furnished to do so, subject to the following conditions:
10
+ #
11
+ # The above copyright notice and this permission notice shall be included in
12
+ # all copies or substantial portions of the Software.
13
+ #
14
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ # AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ # THE SOFTWARE.
21
+
22
+ module Async
23
+ module Redis
24
+ module Methods
25
+ module Strings
26
+ def append(key, value)
27
+ return call('APPEND', key, value)
28
+ end
29
+
30
+ def bitcount(key, *range)
31
+ return call('BITCOUNT', key, *range)
32
+ end
33
+
34
+ def decr(key)
35
+ return call('DECR', key)
36
+ end
37
+
38
+ def decrby(key, decrement)
39
+ return call('DECRBY', key, decrement)
40
+ end
41
+
42
+ def get(key)
43
+ return call('GET', key)
44
+ end
45
+
46
+ def getbit(key, offset)
47
+ return call('GETBIT', key, offset)
48
+ end
49
+
50
+ def getrange(key, start_index, end_index)
51
+ return call('GETRANGE', key, start_index, end_index)
52
+ end
53
+
54
+ def getset(key, value)
55
+ return call('GETSET', key, value)
56
+ end
57
+
58
+ def incr(key)
59
+ return call('INCR', key)
60
+ end
61
+
62
+ def incrby(key, increment)
63
+ return call('INCRBY', key, increment)
64
+ end
65
+
66
+ def incrbyfloat(key, increment)
67
+ return call('INCRBYFLOAT', key, increment)
68
+ end
69
+
70
+ def mget(key, *keys)
71
+ return call('MGET', key, *keys)
72
+ end
73
+
74
+ def mset(pairs)
75
+ flattened_pairs = pairs.keys.zip(pairs.values).flatten
76
+ return call('MSET', *flattened_pairs)
77
+ end
78
+
79
+ def msetnx(pairs)
80
+ flattened_pairs = pairs.keys.zip(pairs.values).flatten
81
+ return call('MSETNX', *flattened_pairs)
82
+ end
83
+
84
+ def psetex(key, milliseconds, value)
85
+ return set key, value, milliseconds: milliseconds
86
+ end
87
+
88
+ def set(key, value, **options)
89
+ arguments = []
90
+
91
+ if options.has_key? :seconds
92
+ arguments << 'EX'
93
+ arguments << options[:seconds]
94
+ end
95
+
96
+ if options.has_key? :milliseconds
97
+ arguments << 'PX'
98
+ arguments << options[:milliseconds]
99
+ end
100
+
101
+ if options[:condition] == :nx
102
+ arguments << 'NX'
103
+ elsif options[:condition] == :xx
104
+ arguments << 'XX'
105
+ end
106
+
107
+ return call('SET', key, value, *arguments)
108
+ end
109
+
110
+ def setbit(key, offset, value)
111
+ return call('SETBIT', key, offset, value)
112
+ end
113
+
114
+ def setex(key, seconds, value)
115
+ return set key, value, seconds: seconds
116
+ end
117
+
118
+ def setnx(key, value)
119
+ return set key, value, condition: :nx
120
+ end
121
+
122
+ def setrange(key, offset, value)
123
+ return call('SETRANGE', key, offset, value)
124
+ end
125
+
126
+ def strlen(key)
127
+ return call('STRLEN', key)
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -26,9 +26,9 @@ module Async
26
26
  end
27
27
 
28
28
  module Protocol
29
+ CRLF = "\r\n".freeze
30
+
29
31
  class RESP < Async::IO::Protocol::Line
30
- CRLF = "\r\n".freeze
31
-
32
32
  class << self
33
33
  alias client new
34
34
  end
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module Redis
23
- VERSION = "0.2.0"
23
+ VERSION = "0.3.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-12-11 00:00:00.000000000 Z
12
+ date: 2018-12-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: async
@@ -31,14 +31,14 @@ dependencies:
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 1.10.0
34
+ version: '1.10'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 1.10.0
41
+ version: '1.10'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: async-rspec
44
44
  requirement: !ruby/object:Gem::Requirement
@@ -57,16 +57,16 @@ dependencies:
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - "~>"
60
+ - - ">="
61
61
  - !ruby/object:Gem::Version
62
- version: '1.3'
62
+ version: '0'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - "~>"
67
+ - - ">="
68
68
  - !ruby/object:Gem::Version
69
- version: '1.3'
69
+ version: '0'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rspec
72
72
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +116,10 @@ files:
116
116
  - lib/async/redis/context/multi.rb
117
117
  - lib/async/redis/context/nested.rb
118
118
  - lib/async/redis/context/subscribe.rb
119
+ - lib/async/redis/methods/keys.rb
120
+ - lib/async/redis/methods/lists.rb
121
+ - lib/async/redis/methods/server.rb
122
+ - lib/async/redis/methods/strings.rb
119
123
  - lib/async/redis/pool.rb
120
124
  - lib/async/redis/protocol/resp.rb
121
125
  - lib/async/redis/version.rb