redis 3.3.5 → 4.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 (147) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +220 -2
  3. data/README.md +169 -89
  4. data/lib/redis/client.rb +176 -99
  5. data/lib/redis/cluster/command.rb +79 -0
  6. data/lib/redis/cluster/command_loader.rb +33 -0
  7. data/lib/redis/cluster/key_slot_converter.rb +72 -0
  8. data/lib/redis/cluster/node.rb +120 -0
  9. data/lib/redis/cluster/node_key.rb +31 -0
  10. data/lib/redis/cluster/node_loader.rb +34 -0
  11. data/lib/redis/cluster/option.rb +100 -0
  12. data/lib/redis/cluster/slot.rb +86 -0
  13. data/lib/redis/cluster/slot_loader.rb +46 -0
  14. data/lib/redis/cluster.rb +315 -0
  15. data/lib/redis/commands/bitmaps.rb +63 -0
  16. data/lib/redis/commands/cluster.rb +45 -0
  17. data/lib/redis/commands/connection.rb +58 -0
  18. data/lib/redis/commands/geo.rb +84 -0
  19. data/lib/redis/commands/hashes.rb +251 -0
  20. data/lib/redis/commands/hyper_log_log.rb +37 -0
  21. data/lib/redis/commands/keys.rb +411 -0
  22. data/lib/redis/commands/lists.rb +289 -0
  23. data/lib/redis/commands/pubsub.rb +72 -0
  24. data/lib/redis/commands/scripting.rb +114 -0
  25. data/lib/redis/commands/server.rb +188 -0
  26. data/lib/redis/commands/sets.rb +207 -0
  27. data/lib/redis/commands/sorted_sets.rb +812 -0
  28. data/lib/redis/commands/streams.rb +382 -0
  29. data/lib/redis/commands/strings.rb +313 -0
  30. data/lib/redis/commands/transactions.rb +139 -0
  31. data/lib/redis/commands.rb +242 -0
  32. data/lib/redis/connection/command_helper.rb +7 -10
  33. data/lib/redis/connection/hiredis.rb +5 -5
  34. data/lib/redis/connection/registry.rb +2 -1
  35. data/lib/redis/connection/ruby.rb +130 -128
  36. data/lib/redis/connection/synchrony.rb +24 -9
  37. data/lib/redis/connection.rb +3 -1
  38. data/lib/redis/distributed.rb +231 -72
  39. data/lib/redis/errors.rb +57 -0
  40. data/lib/redis/hash_ring.rb +30 -73
  41. data/lib/redis/pipeline.rb +178 -13
  42. data/lib/redis/subscribe.rb +11 -12
  43. data/lib/redis/version.rb +3 -1
  44. data/lib/redis.rb +173 -2661
  45. metadata +66 -202
  46. data/.gitignore +0 -16
  47. data/.travis/Gemfile +0 -11
  48. data/.travis.yml +0 -89
  49. data/.yardopts +0 -3
  50. data/Gemfile +0 -4
  51. data/Rakefile +0 -87
  52. data/benchmarking/logging.rb +0 -71
  53. data/benchmarking/pipeline.rb +0 -51
  54. data/benchmarking/speed.rb +0 -21
  55. data/benchmarking/suite.rb +0 -24
  56. data/benchmarking/worker.rb +0 -71
  57. data/examples/basic.rb +0 -15
  58. data/examples/consistency.rb +0 -114
  59. data/examples/dist_redis.rb +0 -43
  60. data/examples/incr-decr.rb +0 -17
  61. data/examples/list.rb +0 -26
  62. data/examples/pubsub.rb +0 -37
  63. data/examples/sentinel/sentinel.conf +0 -9
  64. data/examples/sentinel/start +0 -49
  65. data/examples/sentinel.rb +0 -41
  66. data/examples/sets.rb +0 -36
  67. data/examples/unicorn/config.ru +0 -3
  68. data/examples/unicorn/unicorn.rb +0 -20
  69. data/redis.gemspec +0 -44
  70. data/test/bitpos_test.rb +0 -69
  71. data/test/blocking_commands_test.rb +0 -42
  72. data/test/client_test.rb +0 -59
  73. data/test/command_map_test.rb +0 -30
  74. data/test/commands_on_hashes_test.rb +0 -21
  75. data/test/commands_on_hyper_log_log_test.rb +0 -21
  76. data/test/commands_on_lists_test.rb +0 -20
  77. data/test/commands_on_sets_test.rb +0 -77
  78. data/test/commands_on_sorted_sets_test.rb +0 -137
  79. data/test/commands_on_strings_test.rb +0 -101
  80. data/test/commands_on_value_types_test.rb +0 -133
  81. data/test/connection_handling_test.rb +0 -277
  82. data/test/connection_test.rb +0 -57
  83. data/test/db/.gitkeep +0 -0
  84. data/test/distributed_blocking_commands_test.rb +0 -46
  85. data/test/distributed_commands_on_hashes_test.rb +0 -10
  86. data/test/distributed_commands_on_hyper_log_log_test.rb +0 -33
  87. data/test/distributed_commands_on_lists_test.rb +0 -22
  88. data/test/distributed_commands_on_sets_test.rb +0 -83
  89. data/test/distributed_commands_on_sorted_sets_test.rb +0 -18
  90. data/test/distributed_commands_on_strings_test.rb +0 -59
  91. data/test/distributed_commands_on_value_types_test.rb +0 -95
  92. data/test/distributed_commands_requiring_clustering_test.rb +0 -164
  93. data/test/distributed_connection_handling_test.rb +0 -23
  94. data/test/distributed_internals_test.rb +0 -79
  95. data/test/distributed_key_tags_test.rb +0 -52
  96. data/test/distributed_persistence_control_commands_test.rb +0 -26
  97. data/test/distributed_publish_subscribe_test.rb +0 -92
  98. data/test/distributed_remote_server_control_commands_test.rb +0 -66
  99. data/test/distributed_scripting_test.rb +0 -102
  100. data/test/distributed_sorting_test.rb +0 -20
  101. data/test/distributed_test.rb +0 -58
  102. data/test/distributed_transactions_test.rb +0 -32
  103. data/test/encoding_test.rb +0 -18
  104. data/test/error_replies_test.rb +0 -59
  105. data/test/fork_safety_test.rb +0 -65
  106. data/test/helper.rb +0 -232
  107. data/test/helper_test.rb +0 -24
  108. data/test/internals_test.rb +0 -417
  109. data/test/lint/blocking_commands.rb +0 -150
  110. data/test/lint/hashes.rb +0 -162
  111. data/test/lint/hyper_log_log.rb +0 -60
  112. data/test/lint/lists.rb +0 -143
  113. data/test/lint/sets.rb +0 -140
  114. data/test/lint/sorted_sets.rb +0 -316
  115. data/test/lint/strings.rb +0 -260
  116. data/test/lint/value_types.rb +0 -122
  117. data/test/persistence_control_commands_test.rb +0 -26
  118. data/test/pipelining_commands_test.rb +0 -242
  119. data/test/publish_subscribe_test.rb +0 -282
  120. data/test/remote_server_control_commands_test.rb +0 -118
  121. data/test/scanning_test.rb +0 -413
  122. data/test/scripting_test.rb +0 -78
  123. data/test/sentinel_command_test.rb +0 -80
  124. data/test/sentinel_test.rb +0 -255
  125. data/test/sorting_test.rb +0 -59
  126. data/test/ssl_test.rb +0 -73
  127. data/test/support/connection/hiredis.rb +0 -1
  128. data/test/support/connection/ruby.rb +0 -1
  129. data/test/support/connection/synchrony.rb +0 -17
  130. data/test/support/redis_mock.rb +0 -130
  131. data/test/support/ssl/gen_certs.sh +0 -31
  132. data/test/support/ssl/trusted-ca.crt +0 -25
  133. data/test/support/ssl/trusted-ca.key +0 -27
  134. data/test/support/ssl/trusted-cert.crt +0 -81
  135. data/test/support/ssl/trusted-cert.key +0 -28
  136. data/test/support/ssl/untrusted-ca.crt +0 -26
  137. data/test/support/ssl/untrusted-ca.key +0 -27
  138. data/test/support/ssl/untrusted-cert.crt +0 -82
  139. data/test/support/ssl/untrusted-cert.key +0 -28
  140. data/test/support/wire/synchrony.rb +0 -24
  141. data/test/support/wire/thread.rb +0 -5
  142. data/test/synchrony_driver.rb +0 -88
  143. data/test/test.conf.erb +0 -9
  144. data/test/thread_safety_test.rb +0 -62
  145. data/test/transactions_test.rb +0 -264
  146. data/test/unknown_commands_test.rb +0 -14
  147. data/test/url_param_test.rb +0 -138
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.5
4
+ version: 4.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Zygmuntowicz
@@ -13,77 +13,94 @@ authors:
13
13
  - Michel Martens
14
14
  - Damian Janowski
15
15
  - Pieter Noordhuis
16
- autorequire:
16
+ autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2017-09-28 00:00:00.000000000 Z
19
+ date: 2022-06-24 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
- name: rake
22
+ name: em-synchrony
23
23
  requirement: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - "<"
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 11.0.0
27
+ version: '0'
28
28
  type: :development
29
29
  prerelease: false
30
30
  version_requirements: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - "<"
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 11.0.0
34
+ version: '0'
35
35
  - !ruby/object:Gem::Dependency
36
- name: test-unit
36
+ name: hiredis
37
37
  requirement: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 3.1.5
41
+ version: '0'
42
42
  type: :development
43
43
  prerelease: false
44
44
  version_requirements: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: 3.1.5
48
+ version: '0'
49
+ - !ruby/object:Gem::Dependency
50
+ name: mocha
51
+ requirement: !ruby/object:Gem::Requirement
52
+ requirements:
53
+ - - ">="
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ type: :development
57
+ prerelease: false
58
+ version_requirements: !ruby/object:Gem::Requirement
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: '0'
49
63
  description: |2
50
64
  A Ruby client that tries to match Redis' API one-to-one, while still
51
- providing an idiomatic interface. It features thread-safety,
52
- client-side sharding, pipelining, and an obsession for performance.
65
+ providing an idiomatic interface.
53
66
  email:
54
67
  - redis-db@googlegroups.com
55
68
  executables: []
56
69
  extensions: []
57
70
  extra_rdoc_files: []
58
71
  files:
59
- - ".gitignore"
60
- - ".travis.yml"
61
- - ".travis/Gemfile"
62
- - ".yardopts"
63
72
  - CHANGELOG.md
64
- - Gemfile
65
73
  - LICENSE
66
74
  - README.md
67
- - Rakefile
68
- - benchmarking/logging.rb
69
- - benchmarking/pipeline.rb
70
- - benchmarking/speed.rb
71
- - benchmarking/suite.rb
72
- - benchmarking/worker.rb
73
- - examples/basic.rb
74
- - examples/consistency.rb
75
- - examples/dist_redis.rb
76
- - examples/incr-decr.rb
77
- - examples/list.rb
78
- - examples/pubsub.rb
79
- - examples/sentinel.rb
80
- - examples/sentinel/sentinel.conf
81
- - examples/sentinel/start
82
- - examples/sets.rb
83
- - examples/unicorn/config.ru
84
- - examples/unicorn/unicorn.rb
85
75
  - lib/redis.rb
86
76
  - lib/redis/client.rb
77
+ - lib/redis/cluster.rb
78
+ - lib/redis/cluster/command.rb
79
+ - lib/redis/cluster/command_loader.rb
80
+ - lib/redis/cluster/key_slot_converter.rb
81
+ - lib/redis/cluster/node.rb
82
+ - lib/redis/cluster/node_key.rb
83
+ - lib/redis/cluster/node_loader.rb
84
+ - lib/redis/cluster/option.rb
85
+ - lib/redis/cluster/slot.rb
86
+ - lib/redis/cluster/slot_loader.rb
87
+ - lib/redis/commands.rb
88
+ - lib/redis/commands/bitmaps.rb
89
+ - lib/redis/commands/cluster.rb
90
+ - lib/redis/commands/connection.rb
91
+ - lib/redis/commands/geo.rb
92
+ - lib/redis/commands/hashes.rb
93
+ - lib/redis/commands/hyper_log_log.rb
94
+ - lib/redis/commands/keys.rb
95
+ - lib/redis/commands/lists.rb
96
+ - lib/redis/commands/pubsub.rb
97
+ - lib/redis/commands/scripting.rb
98
+ - lib/redis/commands/server.rb
99
+ - lib/redis/commands/sets.rb
100
+ - lib/redis/commands/sorted_sets.rb
101
+ - lib/redis/commands/streams.rb
102
+ - lib/redis/commands/strings.rb
103
+ - lib/redis/commands/transactions.rb
87
104
  - lib/redis/connection.rb
88
105
  - lib/redis/connection/command_helper.rb
89
106
  - lib/redis/connection/hiredis.rb
@@ -96,90 +113,16 @@ files:
96
113
  - lib/redis/pipeline.rb
97
114
  - lib/redis/subscribe.rb
98
115
  - lib/redis/version.rb
99
- - redis.gemspec
100
- - test/bitpos_test.rb
101
- - test/blocking_commands_test.rb
102
- - test/client_test.rb
103
- - test/command_map_test.rb
104
- - test/commands_on_hashes_test.rb
105
- - test/commands_on_hyper_log_log_test.rb
106
- - test/commands_on_lists_test.rb
107
- - test/commands_on_sets_test.rb
108
- - test/commands_on_sorted_sets_test.rb
109
- - test/commands_on_strings_test.rb
110
- - test/commands_on_value_types_test.rb
111
- - test/connection_handling_test.rb
112
- - test/connection_test.rb
113
- - test/db/.gitkeep
114
- - test/distributed_blocking_commands_test.rb
115
- - test/distributed_commands_on_hashes_test.rb
116
- - test/distributed_commands_on_hyper_log_log_test.rb
117
- - test/distributed_commands_on_lists_test.rb
118
- - test/distributed_commands_on_sets_test.rb
119
- - test/distributed_commands_on_sorted_sets_test.rb
120
- - test/distributed_commands_on_strings_test.rb
121
- - test/distributed_commands_on_value_types_test.rb
122
- - test/distributed_commands_requiring_clustering_test.rb
123
- - test/distributed_connection_handling_test.rb
124
- - test/distributed_internals_test.rb
125
- - test/distributed_key_tags_test.rb
126
- - test/distributed_persistence_control_commands_test.rb
127
- - test/distributed_publish_subscribe_test.rb
128
- - test/distributed_remote_server_control_commands_test.rb
129
- - test/distributed_scripting_test.rb
130
- - test/distributed_sorting_test.rb
131
- - test/distributed_test.rb
132
- - test/distributed_transactions_test.rb
133
- - test/encoding_test.rb
134
- - test/error_replies_test.rb
135
- - test/fork_safety_test.rb
136
- - test/helper.rb
137
- - test/helper_test.rb
138
- - test/internals_test.rb
139
- - test/lint/blocking_commands.rb
140
- - test/lint/hashes.rb
141
- - test/lint/hyper_log_log.rb
142
- - test/lint/lists.rb
143
- - test/lint/sets.rb
144
- - test/lint/sorted_sets.rb
145
- - test/lint/strings.rb
146
- - test/lint/value_types.rb
147
- - test/persistence_control_commands_test.rb
148
- - test/pipelining_commands_test.rb
149
- - test/publish_subscribe_test.rb
150
- - test/remote_server_control_commands_test.rb
151
- - test/scanning_test.rb
152
- - test/scripting_test.rb
153
- - test/sentinel_command_test.rb
154
- - test/sentinel_test.rb
155
- - test/sorting_test.rb
156
- - test/ssl_test.rb
157
- - test/support/connection/hiredis.rb
158
- - test/support/connection/ruby.rb
159
- - test/support/connection/synchrony.rb
160
- - test/support/redis_mock.rb
161
- - test/support/ssl/gen_certs.sh
162
- - test/support/ssl/trusted-ca.crt
163
- - test/support/ssl/trusted-ca.key
164
- - test/support/ssl/trusted-cert.crt
165
- - test/support/ssl/trusted-cert.key
166
- - test/support/ssl/untrusted-ca.crt
167
- - test/support/ssl/untrusted-ca.key
168
- - test/support/ssl/untrusted-cert.crt
169
- - test/support/ssl/untrusted-cert.key
170
- - test/support/wire/synchrony.rb
171
- - test/support/wire/thread.rb
172
- - test/synchrony_driver.rb
173
- - test/test.conf.erb
174
- - test/thread_safety_test.rb
175
- - test/transactions_test.rb
176
- - test/unknown_commands_test.rb
177
- - test/url_param_test.rb
178
116
  homepage: https://github.com/redis/redis-rb
179
117
  licenses:
180
118
  - MIT
181
- metadata: {}
182
- post_install_message:
119
+ metadata:
120
+ bug_tracker_uri: https://github.com/redis/redis-rb/issues
121
+ changelog_uri: https://github.com/redis/redis-rb/blob/master/CHANGELOG.md
122
+ documentation_uri: https://www.rubydoc.info/gems/redis/4.7.0
123
+ homepage_uri: https://github.com/redis/redis-rb
124
+ source_code_uri: https://github.com/redis/redis-rb/tree/v4.7.0
125
+ post_install_message:
183
126
  rdoc_options: []
184
127
  require_paths:
185
128
  - lib
@@ -187,94 +130,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
187
130
  requirements:
188
131
  - - ">="
189
132
  - !ruby/object:Gem::Version
190
- version: '0'
133
+ version: 2.4.0
191
134
  required_rubygems_version: !ruby/object:Gem::Requirement
192
135
  requirements:
193
136
  - - ">="
194
137
  - !ruby/object:Gem::Version
195
138
  version: '0'
196
139
  requirements: []
197
- rubyforge_project:
198
- rubygems_version: 2.5.1
199
- signing_key:
140
+ rubygems_version: 3.1.2
141
+ signing_key:
200
142
  specification_version: 4
201
143
  summary: A Ruby client library for Redis
202
- test_files:
203
- - test/bitpos_test.rb
204
- - test/blocking_commands_test.rb
205
- - test/client_test.rb
206
- - test/command_map_test.rb
207
- - test/commands_on_hashes_test.rb
208
- - test/commands_on_hyper_log_log_test.rb
209
- - test/commands_on_lists_test.rb
210
- - test/commands_on_sets_test.rb
211
- - test/commands_on_sorted_sets_test.rb
212
- - test/commands_on_strings_test.rb
213
- - test/commands_on_value_types_test.rb
214
- - test/connection_handling_test.rb
215
- - test/connection_test.rb
216
- - test/db/.gitkeep
217
- - test/distributed_blocking_commands_test.rb
218
- - test/distributed_commands_on_hashes_test.rb
219
- - test/distributed_commands_on_hyper_log_log_test.rb
220
- - test/distributed_commands_on_lists_test.rb
221
- - test/distributed_commands_on_sets_test.rb
222
- - test/distributed_commands_on_sorted_sets_test.rb
223
- - test/distributed_commands_on_strings_test.rb
224
- - test/distributed_commands_on_value_types_test.rb
225
- - test/distributed_commands_requiring_clustering_test.rb
226
- - test/distributed_connection_handling_test.rb
227
- - test/distributed_internals_test.rb
228
- - test/distributed_key_tags_test.rb
229
- - test/distributed_persistence_control_commands_test.rb
230
- - test/distributed_publish_subscribe_test.rb
231
- - test/distributed_remote_server_control_commands_test.rb
232
- - test/distributed_scripting_test.rb
233
- - test/distributed_sorting_test.rb
234
- - test/distributed_test.rb
235
- - test/distributed_transactions_test.rb
236
- - test/encoding_test.rb
237
- - test/error_replies_test.rb
238
- - test/fork_safety_test.rb
239
- - test/helper.rb
240
- - test/helper_test.rb
241
- - test/internals_test.rb
242
- - test/lint/blocking_commands.rb
243
- - test/lint/hashes.rb
244
- - test/lint/hyper_log_log.rb
245
- - test/lint/lists.rb
246
- - test/lint/sets.rb
247
- - test/lint/sorted_sets.rb
248
- - test/lint/strings.rb
249
- - test/lint/value_types.rb
250
- - test/persistence_control_commands_test.rb
251
- - test/pipelining_commands_test.rb
252
- - test/publish_subscribe_test.rb
253
- - test/remote_server_control_commands_test.rb
254
- - test/scanning_test.rb
255
- - test/scripting_test.rb
256
- - test/sentinel_command_test.rb
257
- - test/sentinel_test.rb
258
- - test/sorting_test.rb
259
- - test/ssl_test.rb
260
- - test/support/connection/hiredis.rb
261
- - test/support/connection/ruby.rb
262
- - test/support/connection/synchrony.rb
263
- - test/support/redis_mock.rb
264
- - test/support/ssl/gen_certs.sh
265
- - test/support/ssl/trusted-ca.crt
266
- - test/support/ssl/trusted-ca.key
267
- - test/support/ssl/trusted-cert.crt
268
- - test/support/ssl/trusted-cert.key
269
- - test/support/ssl/untrusted-ca.crt
270
- - test/support/ssl/untrusted-ca.key
271
- - test/support/ssl/untrusted-cert.crt
272
- - test/support/ssl/untrusted-cert.key
273
- - test/support/wire/synchrony.rb
274
- - test/support/wire/thread.rb
275
- - test/synchrony_driver.rb
276
- - test/test.conf.erb
277
- - test/thread_safety_test.rb
278
- - test/transactions_test.rb
279
- - test/unknown_commands_test.rb
280
- - test/url_param_test.rb
144
+ test_files: []
data/.gitignore DELETED
@@ -1,16 +0,0 @@
1
- *.rdb
2
- *.swp
3
- Gemfile.lock
4
- *.gem
5
- /tmp/
6
- /.idea
7
- /.yardoc
8
- /coverage/*
9
- /doc/
10
- /examples/sentinel/sentinel.conf
11
- /nohup.out
12
- /pkg/*
13
- /rdsrv
14
- /redis/*
15
- /test/db
16
- /test/test.conf
data/.travis/Gemfile DELETED
@@ -1,11 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path => "../"
4
-
5
- case ENV["conn"]
6
- when "hiredis"
7
- gem "hiredis"
8
- when "synchrony"
9
- gem "hiredis"
10
- gem "em-synchrony"
11
- end
data/.travis.yml DELETED
@@ -1,89 +0,0 @@
1
- language: ruby
2
-
3
- rvm:
4
- - 1.8.7
5
- - 1.9.3
6
- - 2.0
7
- - 2.1
8
- - 2.2
9
- - 2.3.0
10
- - jruby-18mode
11
- - jruby-19mode
12
- - jruby-9.0.5.0
13
- - rbx-2
14
-
15
- gemfile: ".travis/Gemfile"
16
-
17
- sudo: false
18
-
19
- env:
20
- global:
21
- - VERBOSE=true
22
- - TIMEOUT=1
23
- matrix:
24
- - conn=ruby REDIS_BRANCH=3.0
25
- - conn=ruby REDIS_BRANCH=3.2
26
- - conn=hiredis REDIS_BRANCH=3.0
27
- - conn=hiredis REDIS_BRANCH=3.2
28
- - conn=synchrony REDIS_BRANCH=3.0
29
- - conn=synchrony REDIS_BRANCH=3.2
30
- - conn=ruby REDIS_BRANCH=unstable
31
-
32
- branches:
33
- only:
34
- - master
35
-
36
- matrix:
37
- exclude:
38
- # hiredis
39
- - rvm: jruby-18mode
40
- gemfile: .travis/Gemfile
41
- env: conn=hiredis REDIS_BRANCH=3.0
42
- - rvm: jruby-18mode
43
- gemfile: .travis/Gemfile
44
- env: conn=hiredis REDIS_BRANCH=3.2
45
- - rvm: jruby-19mode
46
- gemfile: .travis/Gemfile
47
- env: conn=hiredis REDIS_BRANCH=3.0
48
- - rvm: jruby-19mode
49
- gemfile: .travis/Gemfile
50
- env: conn=hiredis REDIS_BRANCH=3.2
51
- - rvm: jruby-9.0.5.0
52
- gemfile: .travis/Gemfile
53
- env: conn=hiredis REDIS_BRANCH=3.0
54
- - rvm: jruby-9.0.5.0
55
- gemfile: .travis/Gemfile
56
- env: conn=hiredis REDIS_BRANCH=3.2
57
-
58
- # synchrony
59
- - rvm: 1.8.7
60
- gemfile: .travis/Gemfile
61
- env: conn=synchrony REDIS_BRANCH=3.0
62
- - rvm: 1.8.7
63
- gemfile: .travis/Gemfile
64
- env: conn=synchrony REDIS_BRANCH=3.2
65
- - rvm: jruby-18mode
66
- gemfile: .travis/Gemfile
67
- env: conn=synchrony REDIS_BRANCH=3.0
68
- - rvm: jruby-18mode
69
- gemfile: .travis/Gemfile
70
- env: conn=synchrony REDIS_BRANCH=3.2
71
- - rvm: jruby-19mode
72
- gemfile: .travis/Gemfile
73
- env: conn=synchrony REDIS_BRANCH=3.0
74
- - rvm: jruby-19mode
75
- gemfile: .travis/Gemfile
76
- env: conn=synchrony REDIS_BRANCH=3.2
77
- - rvm: jruby-9.0.5.0
78
- gemfile: .travis/Gemfile
79
- env: conn=synchrony REDIS_BRANCH=3.0
80
- - rvm: jruby-9.0.5.0
81
- gemfile: .travis/Gemfile
82
- env: conn=synchrony REDIS_BRANCH=3.2
83
- allow_failures:
84
- - rvm: rbx-2
85
-
86
- notifications:
87
- irc:
88
- - irc.freenode.net#redis-rb
89
- email: false
data/.yardopts DELETED
@@ -1,3 +0,0 @@
1
- --exclude redis/connection
2
- --exclude redis/compat
3
- --markup markdown
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- # encoding: utf-8
2
- source 'https://rubygems.org'
3
-
4
- gemspec
data/Rakefile DELETED
@@ -1,87 +0,0 @@
1
- require "rake/testtask"
2
-
3
- ENV["REDIS_BRANCH"] ||= "unstable"
4
-
5
- REDIS_DIR = File.expand_path(File.join("..", "test"), __FILE__)
6
- REDIS_CNF = File.join(REDIS_DIR, "test.conf")
7
- REDIS_CNF_TEMPLATE = File.join(REDIS_DIR, "test.conf.erb")
8
- REDIS_PID = File.join(REDIS_DIR, "db", "redis.pid")
9
- REDIS_LOG = File.join(REDIS_DIR, "db", "redis.log")
10
- REDIS_SOCKET = File.join(REDIS_DIR, "db", "redis.sock")
11
- BINARY = "tmp/redis-#{ENV["REDIS_BRANCH"]}/src/redis-server"
12
-
13
- task :default => :run
14
-
15
- desc "Run tests and manage server start/stop"
16
- task :run => [:start, :test, :stop]
17
-
18
- desc "Start the Redis server"
19
- task :start => [BINARY, REDIS_CNF] do
20
- sh "#{BINARY} --version"
21
-
22
- redis_running = \
23
- begin
24
- File.exists?(REDIS_PID) && Process.kill(0, File.read(REDIS_PID).to_i)
25
- rescue Errno::ESRCH
26
- FileUtils.rm REDIS_PID
27
- false
28
- end
29
-
30
- unless redis_running
31
- unless system("#{BINARY} #{REDIS_CNF}")
32
- abort "could not start redis-server"
33
- end
34
- end
35
-
36
- at_exit do
37
- Rake::Task["stop"].invoke
38
- end
39
- end
40
-
41
- desc "Stop the Redis server"
42
- task :stop do
43
- if File.exists?(REDIS_PID)
44
- Process.kill "INT", File.read(REDIS_PID).to_i
45
- FileUtils.rm REDIS_PID
46
- end
47
- end
48
-
49
- desc "Clean up testing artifacts"
50
- task :clean do
51
- FileUtils.rm_f(BINARY)
52
- FileUtils.rm_f(REDIS_CNF)
53
- end
54
-
55
- file BINARY do
56
- branch = ENV.fetch("REDIS_BRANCH")
57
-
58
- sh <<-SH
59
- mkdir -p tmp;
60
- cd tmp;
61
- rm -rf redis-#{branch};
62
- wget https://github.com/antirez/redis/archive/#{branch}.tar.gz -O #{branch}.tar.gz;
63
- tar xf #{branch}.tar.gz;
64
- cd redis-#{branch};
65
- make
66
- SH
67
- end
68
-
69
- file REDIS_CNF => [REDIS_CNF_TEMPLATE, __FILE__] do |t|
70
- require 'erb'
71
-
72
- erb = t.prerequisites[0]
73
- template = File.read(erb)
74
-
75
- File.open(REDIS_CNF, 'w') do |file|
76
- file.puts "\# This file was auto-generated at #{Time.now}",
77
- "\# from (#{erb})",
78
- "\#"
79
- conf = ERB.new(template).result
80
- file << conf
81
- end
82
- end
83
-
84
- Rake::TestTask.new do |t|
85
- t.options = "-v" if $VERBOSE
86
- t.test_files = FileList["test/*_test.rb"]
87
- end
@@ -1,71 +0,0 @@
1
- # Run with
2
- #
3
- # $ ruby -Ilib benchmarking/logging.rb
4
- #
5
-
6
- begin
7
- require "bench"
8
- rescue LoadError
9
- $stderr.puts "`gem install bench` and try again."
10
- exit 1
11
- end
12
-
13
- require "redis"
14
- require "logger"
15
-
16
- def log(level, namespace = nil)
17
- logger = (namespace || Kernel).const_get(:Logger).new("/dev/null")
18
- logger.level = (namespace || Logger).const_get(level)
19
- logger
20
- end
21
-
22
- def stress(redis)
23
- redis.flushdb
24
-
25
- n = (ARGV.shift || 2000).to_i
26
-
27
- n.times do |i|
28
- key = "foo:#{i}"
29
- redis.set key, i
30
- redis.get key
31
- end
32
- end
33
-
34
- default = Redis.new
35
-
36
- logging_redises = [
37
- Redis.new(:logger => log(:DEBUG)),
38
- Redis.new(:logger => log(:INFO)),
39
- ]
40
-
41
- begin
42
- require "log4r"
43
-
44
- logging_redises += [
45
- Redis.new(:logger => log(:DEBUG, Log4r)),
46
- Redis.new(:logger => log(:INFO, Log4r)),
47
- ]
48
- rescue LoadError
49
- $stderr.puts "Log4r not installed. `gem install log4r` if you want to compare it against Ruby's Logger (spoiler: it's much faster)."
50
- end
51
-
52
- benchmark "Default options (no logger)" do
53
- stress(default)
54
- end
55
-
56
- logging_redises.each do |redis|
57
- logger = redis.client.logger
58
-
59
- case logger
60
- when Logger
61
- level = Logger::SEV_LABEL[logger.level]
62
- when Log4r::Logger
63
- level = logger.levels[logger.level]
64
- end
65
-
66
- benchmark "#{logger.class} on #{level}" do
67
- stress(redis)
68
- end
69
- end
70
-
71
- run 10
@@ -1,51 +0,0 @@
1
- require "benchmark"
2
-
3
- $:.push File.join(File.dirname(__FILE__), 'lib')
4
-
5
- require 'redis'
6
-
7
- ITERATIONS = 10000
8
-
9
- @r = Redis.new
10
-
11
- Benchmark.bmbm do |benchmark|
12
- benchmark.report("set") do
13
- @r.flushdb
14
-
15
- ITERATIONS.times do |i|
16
- @r.set("foo#{i}", "Hello world!")
17
- @r.get("foo#{i}")
18
- end
19
- end
20
-
21
- benchmark.report("set (pipelined)") do
22
- @r.flushdb
23
-
24
- @r.pipelined do
25
- ITERATIONS.times do |i|
26
- @r.set("foo#{i}", "Hello world!")
27
- @r.get("foo#{i}")
28
- end
29
- end
30
- end
31
-
32
- benchmark.report("lpush+ltrim") do
33
- @r.flushdb
34
-
35
- ITERATIONS.times do |i|
36
- @r.lpush "lpush#{i}", i
37
- @r.ltrim "ltrim#{i}", 0, 30
38
- end
39
- end
40
-
41
- benchmark.report("lpush+ltrim (pipelined)") do
42
- @r.flushdb
43
-
44
- @r.pipelined do
45
- ITERATIONS.times do |i|
46
- @r.lpush "lpush#{i}", i
47
- @r.ltrim "ltrim#{i}", 0, 30
48
- end
49
- end
50
- end
51
- end
@@ -1,21 +0,0 @@
1
- # Run with
2
- #
3
- # $ ruby -Ilib benchmarking/speed.rb
4
- #
5
-
6
- require "benchmark"
7
- require "redis"
8
-
9
- r = Redis.new
10
- n = (ARGV.shift || 20000).to_i
11
-
12
- elapsed = Benchmark.realtime do
13
- # n sets, n gets
14
- n.times do |i|
15
- key = "foo#{i}"
16
- r[key] = key * 10
17
- r[key]
18
- end
19
- end
20
-
21
- puts '%.2f Kops' % (2 * n / 1000 / elapsed)