@@ -37,13 +37,19 @@ func (f OpFlag) IsReadOnly() bool {
37
37
return (f & mask ) == 0
38
38
}
39
39
40
+ func (f OpFlag ) IsMasterOnly () bool {
41
+ const mask = FlagWrite | FlagMayWrite | FlagMasterOnly
42
+ return (f & mask ) == 0
43
+ }
44
+
40
45
type OpInfo struct {
41
46
Name string
42
47
Flag OpFlag
43
48
}
44
49
45
50
const (
46
51
FlagWrite = 1 << iota
52
+ FlagMasterOnly
47
53
FlagMayWrite
48
54
FlagNotAllow
49
55
)
@@ -104,7 +110,7 @@ func init() {
104
110
{"HLEN" , 0 },
105
111
{"HMGET" , 0 },
106
112
{"HMSET" , FlagWrite },
107
- {"HSCAN" , 0 },
113
+ {"HSCAN" , FlagMasterOnly },
108
114
{"HSET" , FlagWrite },
109
115
{"HSETNX" , FlagWrite },
110
116
{"HSTRLEN" , 0 },
@@ -166,7 +172,7 @@ func init() {
166
172
{"RPUSHX" , FlagWrite },
167
173
{"SADD" , FlagWrite },
168
174
{"SAVE" , FlagNotAllow },
169
- {"SCAN" , FlagNotAllow },
175
+ {"SCAN" , FlagMasterOnly | FlagNotAllow },
170
176
{"SCARD" , 0 },
171
177
{"SCRIPT" , FlagNotAllow },
172
178
{"SDIFF" , 0 },
@@ -185,7 +191,7 @@ func init() {
185
191
{"SLOTSCHECK" , FlagNotAllow },
186
192
{"SLOTSDEL" , FlagWrite | FlagNotAllow },
187
193
{"SLOTSHASHKEY" , 0 },
188
- {"SLOTSINFO" , 0 },
194
+ {"SLOTSINFO" , FlagMasterOnly },
189
195
{"SLOTSMAPPING" , 0 },
190
196
{"SLOTSMGRTONE" , FlagWrite | FlagNotAllow },
191
197
{"SLOTSMGRTSLOT" , FlagWrite | FlagNotAllow },
@@ -203,15 +209,15 @@ func init() {
203
209
{"SLOTSRESTORE-ASYNC" , FlagWrite | FlagNotAllow },
204
210
{"SLOTSRESTORE-ASYNC-AUTH" , FlagWrite | FlagNotAllow },
205
211
{"SLOTSRESTORE-ASYNC-ACK" , FlagWrite | FlagNotAllow },
206
- {"SLOTSSCAN" , 0 },
212
+ {"SLOTSSCAN" , FlagMasterOnly },
207
213
{"SLOWLOG" , FlagNotAllow },
208
214
{"SMEMBERS" , 0 },
209
215
{"SMOVE" , FlagWrite },
210
216
{"SORT" , FlagWrite },
211
217
{"SPOP" , FlagWrite },
212
218
{"SRANDMEMBER" , 0 },
213
219
{"SREM" , FlagWrite },
214
- {"SSCAN" , 0 },
220
+ {"SSCAN" , FlagMasterOnly },
215
221
{"STRLEN" , 0 },
216
222
{"SUBSCRIBE" , FlagNotAllow },
217
223
{"SUBSTR" , 0 },
@@ -244,7 +250,7 @@ func init() {
244
250
{"ZREVRANGEBYLEX" , 0 },
245
251
{"ZREVRANGEBYSCORE" , 0 },
246
252
{"ZREVRANK" , 0 },
247
- {"ZSCAN" , 0 },
253
+ {"ZSCAN" , FlagMasterOnly },
248
254
{"ZSCORE" , 0 },
249
255
{"ZUNIONSTORE" , FlagWrite },
250
256
} {
0 commit comments