@@ -20,19 +20,19 @@ def initialize(client)
20
20
end
21
21
22
22
def call ( *command , **kwargs )
23
- node_key = @client . send ( :find_node_key , command , primary_only : true )
23
+ node_key = @client . send ( :find_node_key , * command , primary_only : true )
24
24
@grouped [ node_key ] += [ [ @size , :call , command , kwargs ] ]
25
25
@size += 1
26
26
end
27
27
28
28
def call_once ( *command , **kwargs )
29
- node_key = @client . send ( :find_node_key , command , primary_only : true )
29
+ node_key = @client . send ( :find_node_key , * command , primary_only : true )
30
30
@grouped [ node_key ] += [ [ @size , :call_once , command , kwargs ] ]
31
31
@size += 1
32
32
end
33
33
34
34
def blocking_call ( timeout , *command , **kwargs )
35
- node_key = @client . send ( :find_node_key , command , primary_only : true )
35
+ node_key = @client . send ( :find_node_key , * command , primary_only : true )
36
36
@grouped [ node_key ] += [ [ @size , :blocking_call , timeout , command , kwargs ] ]
37
37
@size += 1
38
38
end
@@ -66,6 +66,14 @@ def execute # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Met
66
66
end
67
67
68
68
ZERO_CURSOR_FOR_SCAN = '0'
69
+ CMD_SCAN = 'SCAN'
70
+ CMD_SSCAN = 'SSCAN'
71
+ CMD_HSCAN = 'HSCAN'
72
+ CMD_ZSCAN = 'ZSCAN'
73
+ CMD_ASKING = 'ASKING'
74
+ REPLY_OK = 'OK'
75
+ REPLY_MOVED = 'MOVED'
76
+ REPLY_ASK = 'ASK'
69
77
70
78
def initialize ( config , pool : nil , **kwargs )
71
79
@config = config . dup
@@ -97,35 +105,27 @@ def scan(*args, **kwargs, &block)
97
105
98
106
cursor = ZERO_CURSOR_FOR_SCAN
99
107
loop do
100
- cursor , keys = _scan ( 'SCAN' , cursor , *args , **kwargs )
108
+ cursor , keys = _scan ( CMD_SCAN , cursor , *args , **kwargs )
101
109
keys . each ( &block )
102
110
break if cursor == ZERO_CURSOR_FOR_SCAN
103
111
end
104
112
end
105
113
106
114
def sscan ( key , *args , **kwargs , &block )
107
- node = assign_node ( 'SSCAN' , key )
115
+ node = assign_node ( CMD_SSCAN , key )
108
116
try_send ( node , :sscan , key , *args , **kwargs , &block )
109
117
end
110
118
111
119
def hscan ( key , *args , **kwargs , &block )
112
- node = assign_node ( 'HSCAN' , key )
120
+ node = assign_node ( CMD_HSCAN , key )
113
121
try_send ( node , :hscan , key , *args , **kwargs , &block )
114
122
end
115
123
116
124
def zscan ( key , *args , **kwargs , &block )
117
- node = assign_node ( 'ZSCAN' , key )
125
+ node = assign_node ( CMD_ZSCAN , key )
118
126
try_send ( node , :zscan , key , *args , **kwargs , &block )
119
127
end
120
128
121
- def mset
122
- # TODO: impl
123
- end
124
-
125
- def mget
126
- # TODO: impl
127
- end
128
-
129
129
def pipelined
130
130
pipeline = ::RedisClient ::Cluster ::Pipeline . new ( self )
131
131
yield pipeline
@@ -138,15 +138,6 @@ def pubsub
138
138
# TODO: impl
139
139
end
140
140
141
- def size
142
- # TODO: impl
143
- end
144
-
145
- def with ( options = { } )
146
- # TODO: impl
147
- end
148
- alias then with
149
-
150
141
def close
151
142
@node . each ( &:close )
152
143
nil
@@ -253,17 +244,17 @@ def send_pubsub_command(method, *command, **kwargs, &block) # rubocop:disable Me
253
244
def try_send ( node , method , *args , retry_count : 3 , **kwargs , &block ) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
254
245
node . send ( method , *args , **kwargs , &block )
255
246
rescue ::RedisClient ::CommandError => e
256
- if e . message . start_with? ( 'MOVED' )
247
+ if e . message . start_with? ( REPLY_MOVED )
257
248
raise if retry_count <= 0
258
249
259
250
node = assign_redirection_node ( e . message )
260
251
retry_count -= 1
261
252
retry
262
- elsif e . message . start_with? ( 'ASK' )
253
+ elsif e . message . start_with? ( REPLY_ASK )
263
254
raise if retry_count <= 0
264
255
265
256
node = assign_asking_node ( e . message )
266
- node . call ( 'ASKING' )
257
+ node . call ( CMD_ASKING )
267
258
retry_count -= 1
268
259
retry
269
260
else
@@ -309,11 +300,11 @@ def assign_asking_node(err_msg)
309
300
end
310
301
311
302
def assign_node ( *command )
312
- node_key = find_node_key ( command )
303
+ node_key = find_node_key ( * command )
313
304
find_node ( node_key )
314
305
end
315
306
316
- def find_node_key ( command , primary_only : false )
307
+ def find_node_key ( * command , primary_only : false )
317
308
key = @command . extract_first_key ( command )
318
309
return if key . empty?
319
310
0 commit comments