redis 4.0.1 → 4.1.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 (124) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +38 -0
  3. data/README.md +46 -1
  4. data/lib/redis/client.rb +29 -12
  5. data/lib/redis/cluster/command.rb +81 -0
  6. data/lib/redis/cluster/command_loader.rb +34 -0
  7. data/lib/redis/cluster/key_slot_converter.rb +72 -0
  8. data/lib/redis/cluster/node.rb +104 -0
  9. data/lib/redis/cluster/node_key.rb +35 -0
  10. data/lib/redis/cluster/node_loader.rb +37 -0
  11. data/lib/redis/cluster/option.rb +77 -0
  12. data/lib/redis/cluster/slot.rb +69 -0
  13. data/lib/redis/cluster/slot_loader.rb +49 -0
  14. data/lib/redis/cluster.rb +286 -0
  15. data/lib/redis/connection/ruby.rb +5 -2
  16. data/lib/redis/distributed.rb +13 -6
  17. data/lib/redis/errors.rb +46 -0
  18. data/lib/redis/pipeline.rb +9 -1
  19. data/lib/redis/version.rb +1 -1
  20. data/lib/redis.rb +692 -25
  21. metadata +27 -184
  22. data/.gitignore +0 -16
  23. data/.travis/Gemfile +0 -13
  24. data/.travis.yml +0 -73
  25. data/.yardopts +0 -3
  26. data/Gemfile +0 -3
  27. data/benchmarking/logging.rb +0 -71
  28. data/benchmarking/pipeline.rb +0 -51
  29. data/benchmarking/speed.rb +0 -21
  30. data/benchmarking/suite.rb +0 -24
  31. data/benchmarking/worker.rb +0 -71
  32. data/bors.toml +0 -14
  33. data/examples/basic.rb +0 -15
  34. data/examples/consistency.rb +0 -114
  35. data/examples/dist_redis.rb +0 -43
  36. data/examples/incr-decr.rb +0 -17
  37. data/examples/list.rb +0 -26
  38. data/examples/pubsub.rb +0 -37
  39. data/examples/sentinel/sentinel.conf +0 -9
  40. data/examples/sentinel/start +0 -49
  41. data/examples/sentinel.rb +0 -41
  42. data/examples/sets.rb +0 -36
  43. data/examples/unicorn/config.ru +0 -3
  44. data/examples/unicorn/unicorn.rb +0 -20
  45. data/makefile +0 -42
  46. data/redis.gemspec +0 -42
  47. data/test/bitpos_test.rb +0 -63
  48. data/test/blocking_commands_test.rb +0 -40
  49. data/test/client_test.rb +0 -59
  50. data/test/command_map_test.rb +0 -28
  51. data/test/commands_on_hashes_test.rb +0 -19
  52. data/test/commands_on_hyper_log_log_test.rb +0 -19
  53. data/test/commands_on_lists_test.rb +0 -18
  54. data/test/commands_on_sets_test.rb +0 -75
  55. data/test/commands_on_sorted_sets_test.rb +0 -150
  56. data/test/commands_on_strings_test.rb +0 -99
  57. data/test/commands_on_value_types_test.rb +0 -171
  58. data/test/connection_handling_test.rb +0 -275
  59. data/test/connection_test.rb +0 -57
  60. data/test/db/.gitkeep +0 -0
  61. data/test/distributed_blocking_commands_test.rb +0 -44
  62. data/test/distributed_commands_on_hashes_test.rb +0 -8
  63. data/test/distributed_commands_on_hyper_log_log_test.rb +0 -31
  64. data/test/distributed_commands_on_lists_test.rb +0 -20
  65. data/test/distributed_commands_on_sets_test.rb +0 -106
  66. data/test/distributed_commands_on_sorted_sets_test.rb +0 -16
  67. data/test/distributed_commands_on_strings_test.rb +0 -69
  68. data/test/distributed_commands_on_value_types_test.rb +0 -93
  69. data/test/distributed_commands_requiring_clustering_test.rb +0 -162
  70. data/test/distributed_connection_handling_test.rb +0 -21
  71. data/test/distributed_internals_test.rb +0 -68
  72. data/test/distributed_key_tags_test.rb +0 -50
  73. data/test/distributed_persistence_control_commands_test.rb +0 -24
  74. data/test/distributed_publish_subscribe_test.rb +0 -90
  75. data/test/distributed_remote_server_control_commands_test.rb +0 -64
  76. data/test/distributed_scripting_test.rb +0 -100
  77. data/test/distributed_sorting_test.rb +0 -18
  78. data/test/distributed_test.rb +0 -56
  79. data/test/distributed_transactions_test.rb +0 -30
  80. data/test/encoding_test.rb +0 -14
  81. data/test/error_replies_test.rb +0 -57
  82. data/test/fork_safety_test.rb +0 -60
  83. data/test/helper.rb +0 -201
  84. data/test/helper_test.rb +0 -22
  85. data/test/internals_test.rb +0 -389
  86. data/test/lint/blocking_commands.rb +0 -150
  87. data/test/lint/hashes.rb +0 -162
  88. data/test/lint/hyper_log_log.rb +0 -60
  89. data/test/lint/lists.rb +0 -143
  90. data/test/lint/sets.rb +0 -140
  91. data/test/lint/sorted_sets.rb +0 -316
  92. data/test/lint/strings.rb +0 -246
  93. data/test/lint/value_types.rb +0 -130
  94. data/test/persistence_control_commands_test.rb +0 -24
  95. data/test/pipelining_commands_test.rb +0 -238
  96. data/test/publish_subscribe_test.rb +0 -280
  97. data/test/remote_server_control_commands_test.rb +0 -175
  98. data/test/scanning_test.rb +0 -407
  99. data/test/scripting_test.rb +0 -76
  100. data/test/sentinel_command_test.rb +0 -78
  101. data/test/sentinel_test.rb +0 -253
  102. data/test/sorting_test.rb +0 -57
  103. data/test/ssl_test.rb +0 -69
  104. data/test/support/connection/hiredis.rb +0 -1
  105. data/test/support/connection/ruby.rb +0 -1
  106. data/test/support/connection/synchrony.rb +0 -17
  107. data/test/support/redis_mock.rb +0 -130
  108. data/test/support/ssl/gen_certs.sh +0 -31
  109. data/test/support/ssl/trusted-ca.crt +0 -25
  110. data/test/support/ssl/trusted-ca.key +0 -27
  111. data/test/support/ssl/trusted-cert.crt +0 -81
  112. data/test/support/ssl/trusted-cert.key +0 -28
  113. data/test/support/ssl/untrusted-ca.crt +0 -26
  114. data/test/support/ssl/untrusted-ca.key +0 -27
  115. data/test/support/ssl/untrusted-cert.crt +0 -82
  116. data/test/support/ssl/untrusted-cert.key +0 -28
  117. data/test/support/wire/synchrony.rb +0 -24
  118. data/test/support/wire/thread.rb +0 -5
  119. data/test/synchrony_driver.rb +0 -85
  120. data/test/test.conf.erb +0 -9
  121. data/test/thread_safety_test.rb +0 -60
  122. data/test/transactions_test.rb +0 -262
  123. data/test/unknown_commands_test.rb +0 -12
  124. data/test/url_param_test.rb +0 -136
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: 4.0.1
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ezra Zygmuntowicz
@@ -16,7 +16,7 @@ authors:
16
16
  autorequire:
17
17
  bindir: bin
18
18
  cert_chain: []
19
- date: 2017-09-28 00:00:00.000000000 Z
19
+ date: 2018-12-13 00:00:00.000000000 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: test-unit
@@ -32,6 +32,20 @@ dependencies:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: 3.1.5
35
+ - !ruby/object:Gem::Dependency
36
+ name: mocha
37
+ requirement: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: '0'
42
+ type: :development
43
+ prerelease: false
44
+ version_requirements: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
35
49
  - !ruby/object:Gem::Dependency
36
50
  name: hiredis
37
51
  requirement: !ruby/object:Gem::Requirement
@@ -69,34 +83,21 @@ executables: []
69
83
  extensions: []
70
84
  extra_rdoc_files: []
71
85
  files:
72
- - ".gitignore"
73
- - ".travis.yml"
74
- - ".travis/Gemfile"
75
- - ".yardopts"
76
86
  - CHANGELOG.md
77
- - Gemfile
78
87
  - LICENSE
79
88
  - README.md
80
- - benchmarking/logging.rb
81
- - benchmarking/pipeline.rb
82
- - benchmarking/speed.rb
83
- - benchmarking/suite.rb
84
- - benchmarking/worker.rb
85
- - bors.toml
86
- - examples/basic.rb
87
- - examples/consistency.rb
88
- - examples/dist_redis.rb
89
- - examples/incr-decr.rb
90
- - examples/list.rb
91
- - examples/pubsub.rb
92
- - examples/sentinel.rb
93
- - examples/sentinel/sentinel.conf
94
- - examples/sentinel/start
95
- - examples/sets.rb
96
- - examples/unicorn/config.ru
97
- - examples/unicorn/unicorn.rb
98
89
  - lib/redis.rb
99
90
  - lib/redis/client.rb
91
+ - lib/redis/cluster.rb
92
+ - lib/redis/cluster/command.rb
93
+ - lib/redis/cluster/command_loader.rb
94
+ - lib/redis/cluster/key_slot_converter.rb
95
+ - lib/redis/cluster/node.rb
96
+ - lib/redis/cluster/node_key.rb
97
+ - lib/redis/cluster/node_loader.rb
98
+ - lib/redis/cluster/option.rb
99
+ - lib/redis/cluster/slot.rb
100
+ - lib/redis/cluster/slot_loader.rb
100
101
  - lib/redis/connection.rb
101
102
  - lib/redis/connection/command_helper.rb
102
103
  - lib/redis/connection/hiredis.rb
@@ -109,86 +110,6 @@ files:
109
110
  - lib/redis/pipeline.rb
110
111
  - lib/redis/subscribe.rb
111
112
  - lib/redis/version.rb
112
- - makefile
113
- - redis.gemspec
114
- - test/bitpos_test.rb
115
- - test/blocking_commands_test.rb
116
- - test/client_test.rb
117
- - test/command_map_test.rb
118
- - test/commands_on_hashes_test.rb
119
- - test/commands_on_hyper_log_log_test.rb
120
- - test/commands_on_lists_test.rb
121
- - test/commands_on_sets_test.rb
122
- - test/commands_on_sorted_sets_test.rb
123
- - test/commands_on_strings_test.rb
124
- - test/commands_on_value_types_test.rb
125
- - test/connection_handling_test.rb
126
- - test/connection_test.rb
127
- - test/db/.gitkeep
128
- - test/distributed_blocking_commands_test.rb
129
- - test/distributed_commands_on_hashes_test.rb
130
- - test/distributed_commands_on_hyper_log_log_test.rb
131
- - test/distributed_commands_on_lists_test.rb
132
- - test/distributed_commands_on_sets_test.rb
133
- - test/distributed_commands_on_sorted_sets_test.rb
134
- - test/distributed_commands_on_strings_test.rb
135
- - test/distributed_commands_on_value_types_test.rb
136
- - test/distributed_commands_requiring_clustering_test.rb
137
- - test/distributed_connection_handling_test.rb
138
- - test/distributed_internals_test.rb
139
- - test/distributed_key_tags_test.rb
140
- - test/distributed_persistence_control_commands_test.rb
141
- - test/distributed_publish_subscribe_test.rb
142
- - test/distributed_remote_server_control_commands_test.rb
143
- - test/distributed_scripting_test.rb
144
- - test/distributed_sorting_test.rb
145
- - test/distributed_test.rb
146
- - test/distributed_transactions_test.rb
147
- - test/encoding_test.rb
148
- - test/error_replies_test.rb
149
- - test/fork_safety_test.rb
150
- - test/helper.rb
151
- - test/helper_test.rb
152
- - test/internals_test.rb
153
- - test/lint/blocking_commands.rb
154
- - test/lint/hashes.rb
155
- - test/lint/hyper_log_log.rb
156
- - test/lint/lists.rb
157
- - test/lint/sets.rb
158
- - test/lint/sorted_sets.rb
159
- - test/lint/strings.rb
160
- - test/lint/value_types.rb
161
- - test/persistence_control_commands_test.rb
162
- - test/pipelining_commands_test.rb
163
- - test/publish_subscribe_test.rb
164
- - test/remote_server_control_commands_test.rb
165
- - test/scanning_test.rb
166
- - test/scripting_test.rb
167
- - test/sentinel_command_test.rb
168
- - test/sentinel_test.rb
169
- - test/sorting_test.rb
170
- - test/ssl_test.rb
171
- - test/support/connection/hiredis.rb
172
- - test/support/connection/ruby.rb
173
- - test/support/connection/synchrony.rb
174
- - test/support/redis_mock.rb
175
- - test/support/ssl/gen_certs.sh
176
- - test/support/ssl/trusted-ca.crt
177
- - test/support/ssl/trusted-ca.key
178
- - test/support/ssl/trusted-cert.crt
179
- - test/support/ssl/trusted-cert.key
180
- - test/support/ssl/untrusted-ca.crt
181
- - test/support/ssl/untrusted-ca.key
182
- - test/support/ssl/untrusted-cert.crt
183
- - test/support/ssl/untrusted-cert.key
184
- - test/support/wire/synchrony.rb
185
- - test/support/wire/thread.rb
186
- - test/synchrony_driver.rb
187
- - test/test.conf.erb
188
- - test/thread_safety_test.rb
189
- - test/transactions_test.rb
190
- - test/unknown_commands_test.rb
191
- - test/url_param_test.rb
192
113
  homepage: https://github.com/redis/redis-rb
193
114
  licenses:
194
115
  - MIT
@@ -213,82 +134,4 @@ rubygems_version: 2.5.1
213
134
  signing_key:
214
135
  specification_version: 4
215
136
  summary: A Ruby client library for Redis
216
- test_files:
217
- - test/bitpos_test.rb
218
- - test/blocking_commands_test.rb
219
- - test/client_test.rb
220
- - test/command_map_test.rb
221
- - test/commands_on_hashes_test.rb
222
- - test/commands_on_hyper_log_log_test.rb
223
- - test/commands_on_lists_test.rb
224
- - test/commands_on_sets_test.rb
225
- - test/commands_on_sorted_sets_test.rb
226
- - test/commands_on_strings_test.rb
227
- - test/commands_on_value_types_test.rb
228
- - test/connection_handling_test.rb
229
- - test/connection_test.rb
230
- - test/db/.gitkeep
231
- - test/distributed_blocking_commands_test.rb
232
- - test/distributed_commands_on_hashes_test.rb
233
- - test/distributed_commands_on_hyper_log_log_test.rb
234
- - test/distributed_commands_on_lists_test.rb
235
- - test/distributed_commands_on_sets_test.rb
236
- - test/distributed_commands_on_sorted_sets_test.rb
237
- - test/distributed_commands_on_strings_test.rb
238
- - test/distributed_commands_on_value_types_test.rb
239
- - test/distributed_commands_requiring_clustering_test.rb
240
- - test/distributed_connection_handling_test.rb
241
- - test/distributed_internals_test.rb
242
- - test/distributed_key_tags_test.rb
243
- - test/distributed_persistence_control_commands_test.rb
244
- - test/distributed_publish_subscribe_test.rb
245
- - test/distributed_remote_server_control_commands_test.rb
246
- - test/distributed_scripting_test.rb
247
- - test/distributed_sorting_test.rb
248
- - test/distributed_test.rb
249
- - test/distributed_transactions_test.rb
250
- - test/encoding_test.rb
251
- - test/error_replies_test.rb
252
- - test/fork_safety_test.rb
253
- - test/helper.rb
254
- - test/helper_test.rb
255
- - test/internals_test.rb
256
- - test/lint/blocking_commands.rb
257
- - test/lint/hashes.rb
258
- - test/lint/hyper_log_log.rb
259
- - test/lint/lists.rb
260
- - test/lint/sets.rb
261
- - test/lint/sorted_sets.rb
262
- - test/lint/strings.rb
263
- - test/lint/value_types.rb
264
- - test/persistence_control_commands_test.rb
265
- - test/pipelining_commands_test.rb
266
- - test/publish_subscribe_test.rb
267
- - test/remote_server_control_commands_test.rb
268
- - test/scanning_test.rb
269
- - test/scripting_test.rb
270
- - test/sentinel_command_test.rb
271
- - test/sentinel_test.rb
272
- - test/sorting_test.rb
273
- - test/ssl_test.rb
274
- - test/support/connection/hiredis.rb
275
- - test/support/connection/ruby.rb
276
- - test/support/connection/synchrony.rb
277
- - test/support/redis_mock.rb
278
- - test/support/ssl/gen_certs.sh
279
- - test/support/ssl/trusted-ca.crt
280
- - test/support/ssl/trusted-ca.key
281
- - test/support/ssl/trusted-cert.crt
282
- - test/support/ssl/trusted-cert.key
283
- - test/support/ssl/untrusted-ca.crt
284
- - test/support/ssl/untrusted-ca.key
285
- - test/support/ssl/untrusted-cert.crt
286
- - test/support/ssl/untrusted-cert.key
287
- - test/support/wire/synchrony.rb
288
- - test/support/wire/thread.rb
289
- - test/synchrony_driver.rb
290
- - test/test.conf.erb
291
- - test/thread_safety_test.rb
292
- - test/transactions_test.rb
293
- - test/unknown_commands_test.rb
294
- - test/url_param_test.rb
137
+ 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,13 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gemspec :path => "../"
4
-
5
- case ENV["DRIVER"]
6
- when "hiredis"
7
- gem "hiredis"
8
- when "synchrony"
9
- gem "hiredis"
10
- gem "em-synchrony"
11
- end
12
-
13
- gem 'test-unit', '>= 3.2.5'
data/.travis.yml DELETED
@@ -1,73 +0,0 @@
1
- language: ruby
2
-
3
- script: make test
4
-
5
- rvm:
6
- - 2.2.2
7
- - 2.3.3
8
- - 2.4.1
9
- - jruby-9
10
- - rbx-3
11
-
12
- gemfile: ".travis/Gemfile"
13
-
14
- sudo: false
15
-
16
- before_script:
17
- - if (ruby -e "exit RUBY_VERSION.to_f >= 2.4"); then export RUBYOPT="--enable-frozen-string-literal"; fi; echo $RUBYOPT
18
-
19
- env:
20
- global:
21
- - VERBOSE=true
22
- - TIMEOUT=1
23
- matrix:
24
- - DRIVER=ruby REDIS_BRANCH=3.0
25
- - DRIVER=ruby REDIS_BRANCH=3.2
26
- - DRIVER=hiredis REDIS_BRANCH=3.0
27
- - DRIVER=hiredis REDIS_BRANCH=3.2
28
- - DRIVER=synchrony REDIS_BRANCH=3.0
29
- - DRIVER=synchrony REDIS_BRANCH=3.2
30
- - DRIVER=ruby REDIS_BRANCH=unstable
31
-
32
- branches:
33
- only:
34
- - staging
35
- - trying
36
- - master
37
-
38
- matrix:
39
- exclude:
40
- # hiredis
41
- - rvm: jruby-9
42
- gemfile: .travis/Gemfile
43
- env: DRIVER=hiredis REDIS_BRANCH=3.0
44
- - rvm: jruby-9
45
- gemfile: .travis/Gemfile
46
- env: DRIVER=hiredis REDIS_BRANCH=3.2
47
- - rvm: jruby-9
48
- gemfile: .travis/Gemfile
49
- env: DRIVER=hiredis REDIS_BRANCH=3.0
50
- - rvm: jruby-9
51
- gemfile: .travis/Gemfile
52
- env: DRIVER=hiredis REDIS_BRANCH=3.2
53
-
54
- # synchrony
55
- - rvm: jruby-9
56
- gemfile: .travis/Gemfile
57
- env: DRIVER=synchrony REDIS_BRANCH=3.0
58
- - rvm: jruby-9
59
- gemfile: .travis/Gemfile
60
- env: DRIVER=synchrony REDIS_BRANCH=3.2
61
- - rvm: jruby-9
62
- gemfile: .travis/Gemfile
63
- env: DRIVER=synchrony REDIS_BRANCH=3.0
64
- - rvm: jruby-9
65
- gemfile: .travis/Gemfile
66
- env: DRIVER=synchrony REDIS_BRANCH=3.2
67
- allow_failures:
68
- - rvm: rbx-3
69
-
70
- notifications:
71
- irc:
72
- - irc.freenode.net#redis-rb
73
- email: false
data/.yardopts DELETED
@@ -1,3 +0,0 @@
1
- --exclude redis/connection
2
- --exclude redis/compat
3
- --markup markdown
data/Gemfile DELETED
@@ -1,3 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
@@ -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)
@@ -1,24 +0,0 @@
1
- require 'fileutils'
2
-
3
- def run_in_background(command)
4
- fork { system command }
5
- end
6
-
7
- def with_all_segments(&block)
8
- 0.upto(9) do |segment_number|
9
- block_size = 100000
10
- start_index = segment_number * block_size
11
- end_index = start_index + block_size - 1
12
- block.call(start_index, end_index)
13
- end
14
- end
15
-
16
- #with_all_segments do |start_index, end_index|
17
- # puts "Initializing keys from #{start_index} to #{end_index}"
18
- # system "ruby worker.rb initialize #{start_index} #{end_index} 0"
19
- #end
20
-
21
- with_all_segments do |start_index, end_index|
22
- run_in_background "ruby worker.rb write #{start_index} #{end_index} 10"
23
- run_in_background "ruby worker.rb read #{start_index} #{end_index} 1"
24
- end
@@ -1,71 +0,0 @@
1
- BENCHMARK_ROOT = File.dirname(__FILE__)
2
- REDIS_ROOT = File.join(BENCHMARK_ROOT, "..", "lib")
3
-
4
- $: << REDIS_ROOT
5
- require 'redis'
6
- require 'benchmark'
7
-
8
- def show_usage
9
- puts <<-EOL
10
- Usage: worker.rb [read:write] <start_index> <end_index> <sleep_msec>
11
- EOL
12
- end
13
-
14
- def shift_from_argv
15
- value = ARGV.shift
16
- unless value
17
- show_usage
18
- exit -1
19
- end
20
- value
21
- end
22
-
23
- operation = shift_from_argv.to_sym
24
- start_index = shift_from_argv.to_i
25
- end_index = shift_from_argv.to_i
26
- sleep_msec = shift_from_argv.to_i
27
- sleep_duration = sleep_msec/1000.0
28
-
29
- redis = Redis.new
30
-
31
- case operation
32
- when :initialize
33
-
34
- start_index.upto(end_index) do |i|
35
- redis[i] = 0
36
- end
37
-
38
- when :clear
39
-
40
- start_index.upto(end_index) do |i|
41
- redis.delete(i)
42
- end
43
-
44
- when :read, :write
45
-
46
- puts "Starting to #{operation} at segment #{end_index + 1}"
47
-
48
- loop do
49
- t1 = Time.now
50
- start_index.upto(end_index) do |i|
51
- case operation
52
- when :read
53
- redis.get(i)
54
- when :write
55
- redis.incr(i)
56
- else
57
- raise "Unknown operation: #{operation}"
58
- end
59
- sleep sleep_duration
60
- end
61
- t2 = Time.now
62
-
63
- requests_processed = end_index - start_index
64
- time = t2 - t1
65
- puts "#{t2.strftime("%H:%M")} [segment #{end_index + 1}] : Processed #{requests_processed} requests in #{time} seconds - #{(requests_processed/time).round} requests/sec"
66
- end
67
-
68
- else
69
- raise "Unknown operation: #{operation}"
70
- end
71
-
data/bors.toml DELETED
@@ -1,14 +0,0 @@
1
- # Gate on Travis CI
2
- status = ["continuous-integration/travis-ci/push"]
3
-
4
- # Set bors's timeout to 6 hours
5
- #
6
- # bors's timeout should always be twice a long as the test suite takes.
7
- # This is to allow Travis to fast-fail a test; if one of the builders
8
- # immediately reports a failure, then bors will move on to the next batch,
9
- # leaving the slower builders to work through the already-doomed run and
10
- # the next one.
11
- #
12
- # At the time it was written, a run had taken 3 hours.
13
- # bors's default timeout is 4 hours.
14
- timeout_sec = 14400
data/examples/basic.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'redis'
2
-
3
- r = Redis.new
4
-
5
- r.del('foo')
6
-
7
- puts
8
-
9
- p'set foo to "bar"'
10
- r['foo'] = 'bar'
11
-
12
- puts
13
-
14
- p 'value of foo'
15
- p r['foo']