Skip to content

Commit cfab744

Browse files
max-frankalicebob
authored andcommitted
Mark all readonly commands
The readonly command list is based on the JSON data in https://github.com/redis/redis/tree/acbcaae530035aab5480756e8e29e075398ea931/src/commands A command was deemed as readonly if the field contained Signed-off-by: Maximilian Frank <1375575+max-frank@users.noreply.github.com>
1 parent 3aea2d9 commit cfab744

File tree

10 files changed

+70
-70
lines changed

10 files changed

+70
-70
lines changed

cmd_generic.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,28 +32,28 @@ func inMilliSeconds(t time.Time) int {
3232
func commandsGeneric(m *Miniredis) {
3333
m.srv.Register("COPY", m.cmdCopy)
3434
m.srv.Register("DEL", m.cmdDel)
35-
m.srv.Register("DUMP", m.cmdDump)
36-
m.srv.Register("EXISTS", m.cmdExists)
35+
m.srv.RegisterWithOptions("DUMP", m.cmdDump, server.ReadOnlyOption())
36+
m.srv.RegisterWithOptions("EXISTS", m.cmdExists, server.ReadOnlyOption())
3737
m.srv.Register("EXPIRE", makeCmdExpire(m, false, time.Second))
3838
m.srv.Register("EXPIREAT", makeCmdExpire(m, true, time.Second))
39-
m.srv.Register("EXPIRETIME", m.makeCmdExpireTime(inSeconds))
40-
m.srv.Register("PEXPIRETIME", m.makeCmdExpireTime(inMilliSeconds))
41-
m.srv.Register("KEYS", m.cmdKeys)
39+
m.srv.RegisterWithOptions("EXPIRETIME", m.makeCmdExpireTime(inSeconds), server.ReadOnlyOption())
40+
m.srv.RegisterWithOptions("PEXPIRETIME", m.makeCmdExpireTime(inMilliSeconds), server.ReadOnlyOption())
41+
m.srv.RegisterWithOptions("KEYS", m.cmdKeys, server.ReadOnlyOption())
4242
// MIGRATE
4343
m.srv.Register("MOVE", m.cmdMove)
4444
// OBJECT
4545
m.srv.Register("PERSIST", m.cmdPersist)
4646
m.srv.Register("PEXPIRE", makeCmdExpire(m, false, time.Millisecond))
4747
m.srv.Register("PEXPIREAT", makeCmdExpire(m, true, time.Millisecond))
48-
m.srv.Register("PTTL", m.cmdPTTL)
49-
m.srv.Register("RANDOMKEY", m.cmdRandomkey)
48+
m.srv.RegisterWithOptions("PTTL", m.cmdPTTL, server.ReadOnlyOption())
49+
m.srv.RegisterWithOptions("RANDOMKEY", m.cmdRandomkey, server.ReadOnlyOption())
5050
m.srv.Register("RENAME", m.cmdRename)
5151
m.srv.Register("RENAMENX", m.cmdRenamenx)
5252
m.srv.Register("RESTORE", m.cmdRestore)
53-
m.srv.Register("TOUCH", m.cmdTouch)
54-
m.srv.Register("TTL", m.cmdTTL)
55-
m.srv.Register("TYPE", m.cmdType)
56-
m.srv.Register("SCAN", m.cmdScan)
53+
m.srv.RegisterWithOptions("TOUCH", m.cmdTouch, server.ReadOnlyOption())
54+
m.srv.RegisterWithOptions("TTL", m.cmdTTL, server.ReadOnlyOption())
55+
m.srv.RegisterWithOptions("TYPE", m.cmdType, server.ReadOnlyOption())
56+
m.srv.RegisterWithOptions("SCAN", m.cmdScan, server.ReadOnlyOption())
5757
// SORT
5858
m.srv.Register("UNLINK", m.cmdDel)
5959
}

cmd_geo.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ import (
1414
// commandsGeo handles GEOADD, GEORADIUS etc.
1515
func commandsGeo(m *Miniredis) {
1616
m.srv.Register("GEOADD", m.cmdGeoadd)
17-
m.srv.Register("GEODIST", m.cmdGeodist)
18-
m.srv.Register("GEOPOS", m.cmdGeopos)
17+
m.srv.RegisterWithOptions("GEODIST", m.cmdGeodist, server.ReadOnlyOption())
18+
m.srv.RegisterWithOptions("GEOPOS", m.cmdGeopos, server.ReadOnlyOption())
1919
m.srv.Register("GEORADIUS", m.cmdGeoradius)
20-
m.srv.Register("GEORADIUS_RO", m.cmdGeoradius)
20+
m.srv.RegisterWithOptions("GEORADIUS_RO", m.cmdGeoradius, server.ReadOnlyOption())
2121
m.srv.Register("GEORADIUSBYMEMBER", m.cmdGeoradiusbymember)
22-
m.srv.Register("GEORADIUSBYMEMBER_RO", m.cmdGeoradiusbymember)
22+
m.srv.RegisterWithOptions("GEORADIUSBYMEMBER_RO", m.cmdGeoradiusbymember, server.ReadOnlyOption())
2323
}
2424

2525
// GEOADD

cmd_hash.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,21 @@ import (
1313
// commandsHash handles all hash value operations.
1414
func commandsHash(m *Miniredis) {
1515
m.srv.Register("HDEL", m.cmdHdel)
16-
m.srv.Register("HEXISTS", m.cmdHexists)
17-
m.srv.Register("HGET", m.cmdHget)
18-
m.srv.Register("HGETALL", m.cmdHgetall)
16+
m.srv.RegisterWithOptions("HEXISTS", m.cmdHexists, server.ReadOnlyOption())
17+
m.srv.RegisterWithOptions("HGET", m.cmdHget, server.ReadOnlyOption())
18+
m.srv.RegisterWithOptions("HGETALL", m.cmdHgetall, server.ReadOnlyOption())
1919
m.srv.Register("HINCRBY", m.cmdHincrby)
2020
m.srv.Register("HINCRBYFLOAT", m.cmdHincrbyfloat)
21-
m.srv.Register("HKEYS", m.cmdHkeys)
22-
m.srv.Register("HLEN", m.cmdHlen)
23-
m.srv.Register("HMGET", m.cmdHmget)
21+
m.srv.RegisterWithOptions("HKEYS", m.cmdHkeys, server.ReadOnlyOption())
22+
m.srv.RegisterWithOptions("HLEN", m.cmdHlen, server.ReadOnlyOption())
23+
m.srv.RegisterWithOptions("HMGET", m.cmdHmget, server.ReadOnlyOption())
2424
m.srv.Register("HMSET", m.cmdHmset)
2525
m.srv.Register("HSET", m.cmdHset)
2626
m.srv.Register("HSETNX", m.cmdHsetnx)
27-
m.srv.Register("HSTRLEN", m.cmdHstrlen)
28-
m.srv.Register("HVALS", m.cmdHvals)
29-
m.srv.Register("HSCAN", m.cmdHscan)
30-
m.srv.Register("HRANDFIELD", m.cmdHrandfield)
27+
m.srv.RegisterWithOptions("HSTRLEN", m.cmdHstrlen, server.ReadOnlyOption())
28+
m.srv.RegisterWithOptions("HVALS", m.cmdHvals, server.ReadOnlyOption())
29+
m.srv.RegisterWithOptions("HSCAN", m.cmdHscan, server.ReadOnlyOption())
30+
m.srv.RegisterWithOptions("HRANDFIELD", m.cmdHrandfield, server.ReadOnlyOption())
3131
}
3232

3333
// HSET

cmd_hll.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import "github.com/alicebob/miniredis/v2/server"
55
// commandsHll handles all hll related operations.
66
func commandsHll(m *Miniredis) {
77
m.srv.Register("PFADD", m.cmdPfadd)
8-
m.srv.Register("PFCOUNT", m.cmdPfcount)
8+
m.srv.RegisterWithOptions("PFCOUNT", m.cmdPfcount, server.ReadOnlyOption())
99
m.srv.Register("PFMERGE", m.cmdPfmerge)
1010
}
1111

cmd_list.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,14 +22,14 @@ func commandsList(m *Miniredis) {
2222
m.srv.Register("BLPOP", m.cmdBlpop)
2323
m.srv.Register("BRPOP", m.cmdBrpop)
2424
m.srv.Register("BRPOPLPUSH", m.cmdBrpoplpush)
25-
m.srv.Register("LINDEX", m.cmdLindex)
26-
m.srv.Register("LPOS", m.cmdLpos)
25+
m.srv.RegisterWithOptions("LINDEX", m.cmdLindex, server.ReadOnlyOption())
26+
m.srv.RegisterWithOptions("LPOS", m.cmdLpos, server.ReadOnlyOption())
2727
m.srv.Register("LINSERT", m.cmdLinsert)
28-
m.srv.Register("LLEN", m.cmdLlen)
28+
m.srv.RegisterWithOptions("LLEN", m.cmdLlen, server.ReadOnlyOption())
2929
m.srv.Register("LPOP", m.cmdLpop)
3030
m.srv.Register("LPUSH", m.cmdLpush)
3131
m.srv.Register("LPUSHX", m.cmdLpushx)
32-
m.srv.Register("LRANGE", m.cmdLrange)
32+
m.srv.RegisterWithOptions("LRANGE", m.cmdLrange, server.ReadOnlyOption())
3333
m.srv.Register("LREM", m.cmdLrem)
3434
m.srv.Register("LSET", m.cmdLset)
3535
m.srv.Register("LTRIM", m.cmdLtrim)

cmd_server.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
func commandsServer(m *Miniredis) {
1515
m.srv.Register("COMMAND", m.cmdCommand)
16-
m.srv.Register("DBSIZE", m.cmdDbsize)
16+
m.srv.RegisterWithOptions("DBSIZE", m.cmdDbsize, server.ReadOnlyOption())
1717
m.srv.Register("FLUSHALL", m.cmdFlushall)
1818
m.srv.Register("FLUSHDB", m.cmdFlushdb)
1919
m.srv.Register("INFO", m.cmdInfo)

cmd_set.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,22 @@ import (
1313
// commandsSet handles all set value operations.
1414
func commandsSet(m *Miniredis) {
1515
m.srv.Register("SADD", m.cmdSadd)
16-
m.srv.Register("SCARD", m.cmdScard)
17-
m.srv.Register("SDIFF", m.cmdSdiff)
16+
m.srv.RegisterWithOptions("SCARD", m.cmdScard, server.ReadOnlyOption())
17+
m.srv.RegisterWithOptions("SDIFF", m.cmdSdiff, server.ReadOnlyOption())
1818
m.srv.Register("SDIFFSTORE", m.cmdSdiffstore)
19-
m.srv.Register("SINTERCARD", m.cmdSintercard)
20-
m.srv.Register("SINTER", m.cmdSinter)
19+
m.srv.RegisterWithOptions("SINTERCARD", m.cmdSintercard, server.ReadOnlyOption())
20+
m.srv.RegisterWithOptions("SINTER", m.cmdSinter, server.ReadOnlyOption())
2121
m.srv.Register("SINTERSTORE", m.cmdSinterstore)
22-
m.srv.Register("SISMEMBER", m.cmdSismember)
23-
m.srv.Register("SMEMBERS", m.cmdSmembers)
24-
m.srv.Register("SMISMEMBER", m.cmdSmismember)
22+
m.srv.RegisterWithOptions("SISMEMBER", m.cmdSismember, server.ReadOnlyOption())
23+
m.srv.RegisterWithOptions("SMEMBERS", m.cmdSmembers, server.ReadOnlyOption())
24+
m.srv.RegisterWithOptions("SMISMEMBER", m.cmdSmismember, server.ReadOnlyOption())
2525
m.srv.Register("SMOVE", m.cmdSmove)
2626
m.srv.Register("SPOP", m.cmdSpop)
27-
m.srv.Register("SRANDMEMBER", m.cmdSrandmember)
27+
m.srv.RegisterWithOptions("SRANDMEMBER", m.cmdSrandmember, server.ReadOnlyOption())
2828
m.srv.Register("SREM", m.cmdSrem)
29-
m.srv.Register("SUNION", m.cmdSunion)
29+
m.srv.RegisterWithOptions("SUNION", m.cmdSunion, server.ReadOnlyOption())
3030
m.srv.Register("SUNIONSTORE", m.cmdSunionstore)
31-
m.srv.Register("SSCAN", m.cmdSscan)
31+
m.srv.RegisterWithOptions("SSCAN", m.cmdSscan, server.ReadOnlyOption())
3232
}
3333

3434
// SADD

cmd_sorted_set.go

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,32 @@ import (
1616
// commandsSortedSet handles all sorted set operations.
1717
func commandsSortedSet(m *Miniredis) {
1818
m.srv.Register("ZADD", m.cmdZadd)
19-
m.srv.Register("ZCARD", m.cmdZcard)
20-
m.srv.Register("ZCOUNT", m.cmdZcount)
19+
m.srv.RegisterWithOptions("ZCARD", m.cmdZcard, server.ReadOnlyOption())
20+
m.srv.RegisterWithOptions("ZCOUNT", m.cmdZcount, server.ReadOnlyOption())
2121
m.srv.Register("ZINCRBY", m.cmdZincrby)
22-
m.srv.Register("ZINTER", m.makeCmdZinter(false))
22+
m.srv.RegisterWithOptions("ZINTER", m.makeCmdZinter(false), server.ReadOnlyOption())
2323
m.srv.Register("ZINTERSTORE", m.makeCmdZinter(true))
24-
m.srv.Register("ZLEXCOUNT", m.cmdZlexcount)
25-
m.srv.Register("ZRANGE", m.cmdZrange)
26-
m.srv.Register("ZRANGEBYLEX", m.makeCmdZrangebylex(false))
27-
m.srv.Register("ZRANGEBYSCORE", m.makeCmdZrangebyscore(false))
28-
m.srv.Register("ZRANK", m.makeCmdZrank(false))
24+
m.srv.RegisterWithOptions("ZLEXCOUNT", m.cmdZlexcount, server.ReadOnlyOption())
25+
m.srv.RegisterWithOptions("ZRANGE", m.cmdZrange, server.ReadOnlyOption())
26+
m.srv.RegisterWithOptions("ZRANGEBYLEX", m.makeCmdZrangebylex(false), server.ReadOnlyOption())
27+
m.srv.RegisterWithOptions("ZRANGEBYSCORE", m.makeCmdZrangebyscore(false), server.ReadOnlyOption())
28+
m.srv.RegisterWithOptions("ZRANK", m.makeCmdZrank(false), server.ReadOnlyOption())
2929
m.srv.Register("ZREM", m.cmdZrem)
3030
m.srv.Register("ZREMRANGEBYLEX", m.cmdZremrangebylex)
3131
m.srv.Register("ZREMRANGEBYRANK", m.cmdZremrangebyrank)
3232
m.srv.Register("ZREMRANGEBYSCORE", m.cmdZremrangebyscore)
33-
m.srv.Register("ZREVRANGE", m.cmdZrevrange)
34-
m.srv.Register("ZREVRANGEBYLEX", m.makeCmdZrangebylex(true))
35-
m.srv.Register("ZREVRANGEBYSCORE", m.makeCmdZrangebyscore(true))
36-
m.srv.Register("ZREVRANK", m.makeCmdZrank(true))
37-
m.srv.Register("ZSCORE", m.cmdZscore)
38-
m.srv.Register("ZMSCORE", m.cmdZMscore)
39-
m.srv.Register("ZUNION", m.cmdZunion)
33+
m.srv.RegisterWithOptions("ZREVRANGE", m.cmdZrevrange, server.ReadOnlyOption())
34+
m.srv.RegisterWithOptions("ZREVRANGEBYLEX", m.makeCmdZrangebylex(true), server.ReadOnlyOption())
35+
m.srv.RegisterWithOptions("ZREVRANGEBYSCORE", m.makeCmdZrangebyscore(true), server.ReadOnlyOption())
36+
m.srv.RegisterWithOptions("ZREVRANK", m.makeCmdZrank(true), server.ReadOnlyOption())
37+
m.srv.RegisterWithOptions("ZSCORE", m.cmdZscore, server.ReadOnlyOption())
38+
m.srv.RegisterWithOptions("ZMSCORE", m.cmdZMscore, server.ReadOnlyOption())
39+
m.srv.RegisterWithOptions("ZUNION", m.cmdZunion, server.ReadOnlyOption())
4040
m.srv.Register("ZUNIONSTORE", m.cmdZunionstore)
41-
m.srv.Register("ZSCAN", m.cmdZscan)
41+
m.srv.RegisterWithOptions("ZSCAN", m.cmdZscan, server.ReadOnlyOption())
4242
m.srv.Register("ZPOPMAX", m.cmdZpopmax(true))
4343
m.srv.Register("ZPOPMIN", m.cmdZpopmax(false))
44-
m.srv.Register("ZRANDMEMBER", m.cmdZrandmember)
44+
m.srv.RegisterWithOptions("ZRANDMEMBER", m.cmdZrandmember, server.ReadOnlyOption())
4545
}
4646

4747
// ZADD

cmd_stream.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,16 @@ import (
1616
// commandsStream handles all stream operations.
1717
func commandsStream(m *Miniredis) {
1818
m.srv.Register("XADD", m.cmdXadd)
19-
m.srv.Register("XLEN", m.cmdXlen)
20-
m.srv.Register("XREAD", m.cmdXread)
21-
m.srv.Register("XRANGE", m.makeCmdXrange(false))
22-
m.srv.Register("XREVRANGE", m.makeCmdXrange(true))
19+
m.srv.RegisterWithOptions("XLEN", m.cmdXlen, server.ReadOnlyOption())
20+
m.srv.RegisterWithOptions("XREAD", m.cmdXread, server.ReadOnlyOption())
21+
m.srv.RegisterWithOptions("XRANGE", m.makeCmdXrange(false), server.ReadOnlyOption())
22+
m.srv.RegisterWithOptions("XREVRANGE", m.makeCmdXrange(true), server.ReadOnlyOption())
2323
m.srv.Register("XGROUP", m.cmdXgroup)
2424
m.srv.Register("XINFO", m.cmdXinfo)
2525
m.srv.Register("XREADGROUP", m.cmdXreadgroup)
2626
m.srv.Register("XACK", m.cmdXack)
2727
m.srv.Register("XDEL", m.cmdXdel)
28-
m.srv.Register("XPENDING", m.cmdXpending)
28+
m.srv.RegisterWithOptions("XPENDING", m.cmdXpending, server.ReadOnlyOption())
2929
m.srv.Register("XTRIM", m.cmdXtrim)
3030
m.srv.Register("XAUTOCLAIM", m.cmdXautoclaim)
3131
m.srv.Register("XCLAIM", m.cmdXclaim)

cmd_string.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,21 +14,21 @@ import (
1414
// commandsString handles all string value operations.
1515
func commandsString(m *Miniredis) {
1616
m.srv.Register("APPEND", m.cmdAppend)
17-
m.srv.Register("BITCOUNT", m.cmdBitcount)
17+
m.srv.RegisterWithOptions("BITCOUNT", m.cmdBitcount, server.ReadOnlyOption())
1818
m.srv.Register("BITOP", m.cmdBitop)
19-
m.srv.Register("BITPOS", m.cmdBitpos)
19+
m.srv.RegisterWithOptions("BITPOS", m.cmdBitpos, server.ReadOnlyOption())
2020
m.srv.Register("DECRBY", m.cmdDecrby)
2121
m.srv.Register("DECR", m.cmdDecr)
22-
m.srv.Register("GETBIT", m.cmdGetbit)
23-
m.srv.Register("GET", m.cmdGet)
22+
m.srv.RegisterWithOptions("GETBIT", m.cmdGetbit, server.ReadOnlyOption())
23+
m.srv.RegisterWithOptions("GET", m.cmdGet, server.ReadOnlyOption())
2424
m.srv.Register("GETEX", m.cmdGetex)
25-
m.srv.Register("GETRANGE", m.cmdGetrange)
25+
m.srv.RegisterWithOptions("GETRANGE", m.cmdGetrange, server.ReadOnlyOption())
2626
m.srv.Register("GETSET", m.cmdGetset)
2727
m.srv.Register("GETDEL", m.cmdGetdel)
2828
m.srv.Register("INCRBYFLOAT", m.cmdIncrbyfloat)
2929
m.srv.Register("INCRBY", m.cmdIncrby)
3030
m.srv.Register("INCR", m.cmdIncr)
31-
m.srv.Register("MGET", m.cmdMget)
31+
m.srv.RegisterWithOptions("MGET", m.cmdMget, server.ReadOnlyOption())
3232
m.srv.Register("MSET", m.cmdMset)
3333
m.srv.Register("MSETNX", m.cmdMsetnx)
3434
m.srv.Register("PSETEX", m.cmdPsetex)
@@ -37,7 +37,7 @@ func commandsString(m *Miniredis) {
3737
m.srv.Register("SET", m.cmdSet)
3838
m.srv.Register("SETNX", m.cmdSetnx)
3939
m.srv.Register("SETRANGE", m.cmdSetrange)
40-
m.srv.Register("STRLEN", m.cmdStrlen)
40+
m.srv.RegisterWithOptions("STRLEN", m.cmdStrlen, server.ReadOnlyOption())
4141
}
4242

4343
// SET

0 commit comments

Comments
 (0)