@@ -37,13 +37,19 @@ func (f OpFlag) IsReadOnly() bool {
3737 return (f & mask ) == 0
3838}
3939
40+ func (f OpFlag ) IsMasterOnly () bool {
41+ const mask = FlagWrite | FlagMayWrite | FlagMasterOnly
42+ return (f & mask ) == 0
43+ }
44+
4045type OpInfo struct {
4146 Name string
4247 Flag OpFlag
4348}
4449
4550const (
4651 FlagWrite = 1 << iota
52+ FlagMasterOnly
4753 FlagMayWrite
4854 FlagNotAllow
4955)
@@ -104,7 +110,7 @@ func init() {
104110 {"HLEN" , 0 },
105111 {"HMGET" , 0 },
106112 {"HMSET" , FlagWrite },
107- {"HSCAN" , 0 },
113+ {"HSCAN" , FlagMasterOnly },
108114 {"HSET" , FlagWrite },
109115 {"HSETNX" , FlagWrite },
110116 {"HSTRLEN" , 0 },
@@ -166,7 +172,7 @@ func init() {
166172 {"RPUSHX" , FlagWrite },
167173 {"SADD" , FlagWrite },
168174 {"SAVE" , FlagNotAllow },
169- {"SCAN" , FlagNotAllow },
175+ {"SCAN" , FlagMasterOnly | FlagNotAllow },
170176 {"SCARD" , 0 },
171177 {"SCRIPT" , FlagNotAllow },
172178 {"SDIFF" , 0 },
@@ -185,7 +191,7 @@ func init() {
185191 {"SLOTSCHECK" , FlagNotAllow },
186192 {"SLOTSDEL" , FlagWrite | FlagNotAllow },
187193 {"SLOTSHASHKEY" , 0 },
188- {"SLOTSINFO" , 0 },
194+ {"SLOTSINFO" , FlagMasterOnly },
189195 {"SLOTSMAPPING" , 0 },
190196 {"SLOTSMGRTONE" , FlagWrite | FlagNotAllow },
191197 {"SLOTSMGRTSLOT" , FlagWrite | FlagNotAllow },
@@ -203,15 +209,15 @@ func init() {
203209 {"SLOTSRESTORE-ASYNC" , FlagWrite | FlagNotAllow },
204210 {"SLOTSRESTORE-ASYNC-AUTH" , FlagWrite | FlagNotAllow },
205211 {"SLOTSRESTORE-ASYNC-ACK" , FlagWrite | FlagNotAllow },
206- {"SLOTSSCAN" , 0 },
212+ {"SLOTSSCAN" , FlagMasterOnly },
207213 {"SLOWLOG" , FlagNotAllow },
208214 {"SMEMBERS" , 0 },
209215 {"SMOVE" , FlagWrite },
210216 {"SORT" , FlagWrite },
211217 {"SPOP" , FlagWrite },
212218 {"SRANDMEMBER" , 0 },
213219 {"SREM" , FlagWrite },
214- {"SSCAN" , 0 },
220+ {"SSCAN" , FlagMasterOnly },
215221 {"STRLEN" , 0 },
216222 {"SUBSCRIBE" , FlagNotAllow },
217223 {"SUBSTR" , 0 },
@@ -244,7 +250,7 @@ func init() {
244250 {"ZREVRANGEBYLEX" , 0 },
245251 {"ZREVRANGEBYSCORE" , 0 },
246252 {"ZREVRANK" , 0 },
247- {"ZSCAN" , 0 },
253+ {"ZSCAN" , FlagMasterOnly },
248254 {"ZSCORE" , 0 },
249255 {"ZUNIONSTORE" , FlagWrite },
250256 } {
0 commit comments