aof_commands
AOF Recorded Commands 기록 명령
Redis Server Course | Redis Technical Support | Redis Enterprise Server |
---|
AOF Recorded Commands 기록 명령
기본 설명
Redis Server 3.2 버전 기준으로 171개 명령이 있다.
이것은 내부 명령과 문서화되지 않은 명령을 포함한다.
이중 73개 명령이 AOF에 기록된다, 대게 '쓰기(w)' 명령이 기록되지만 그렇지 않은 것들도 있다.
여기서는 AOF에 기록되지 않는 명령을 포함해서 모든 명령을 리스트했다.
명령을 분류하면 크게 '쓰기', '읽기', '관리'로 나눌 수 있다.
이중 '쓰기' 명령이 AOF에 기록된다.
redisCommand 구조체의 4번째 필드 sflags에 '쓰기'는 'w', '읽기'는 'r', '관리'는 'a'로 구분되어 있다.
다른 구분도 있이만 여기서는 생략한다.
하지만 redisCommand 구조체의 이 sflags 필드를 직접 이용해서 AOF 기록 여부를 정하지는 않는다.
왜냐하면, 'w'가 아닌 exec, script 등도 AOF에 기록하기 때문이다.
AOF에 기록할 명령들은 소스 코드에 server.dirty 변수의 값을 증가하는 것으로 하드코딩되어 있고,
server.dirty가 0보다 크면 AOF에 기록한다.
주의할 사항은 입력한 명령 그대로 AOF에 기록하지 않는 명령들도 있다.
이것들은 적절히 변형되어 저장된다.
아래 "주의해서 볼 내용"에 표시했다.
주의해서 볼 내용
- 명령이 그대로 기록되지 않는 경우: Strings의 incrbyfloat 명령은 AOF에 SET 명령으로 기록되고, setex 명령도 SET 명령으로 기록되며, Common Keys의 expire 명령은 PEXPIREAT 명령으로 변경되어 기록된다.
- 한 명령이 여러 명령으로 구성되어 기록되는 경우: Strings의 setex 명령은 SET, PEXPIREAT 명령이 기록되고,
만료되면 DEL 명령이 기록된다. 즉, 2개 명령이 즉시 기록되고, 시간차를 두고 나머지 1개 명령이 기록된다.
여기서 레디스가 setex 명령을 처리할 때 AOF에 기록하기 위해 DEL 명령까지 변환하는 것은 아니다. DEL 명령 기록은 나중에 PEXPIREAT 명령 수행 결과로 기록되는 것이다. - 특이한 경우: blpop, brpop는 각각 LPOP, RPOP로 변경되어 기록되지만, brpoplpush는 변경되지 않고 그대로 기록된다.
- 대소문자 기록: 명령은 입력한 그대로 기록된다. 즉, 소문자로 입력했으면 소문자로 기록되고, 대문자로 입력했으면 대문자로 기록된다. 하지만 명령이 변경되어 기록되는 경우는 항상 대문자로 기록된다.
- 옵션에 따라 기록될 수도 있고 기록되지 않을 수도 있는 경우: sort 명령은 store 옵션을 사용하면 기록되고, 사용하지 않으면 기록되지 않는다.
- 문서화되어 있지 않은 명령: substr 명령은 문서화되어 있지 않지만 실행된다.
기능은 getrange 명령과 동일하고, 실제로 getrange 명령이 실행된다.
'읽기' 명령이므로 AOF에는 기록되지 않는다.
restore-asking 명령도 문서화되어 있지 않지만, restore 명령과 동일하고, 실제로 restore 명령이 실행된다. AOF에는 restore-asking 그대로 기록된다. - select 명령은 실행 즉시 기록되지 않는다. select 실행 후 SET 명령같은 '쓰기' 명령을 실행하면 그때 SET 명령 앞에 기록된다. select 1 실행 후 '읽기' 명령을 실행하고, select 0을 실행하면 이전의 select 1은 AOF에 기록되지 않는다.
- PubSub 관련 명령은 publish를 포함해서 어느 것도 AOF에 기록되지 않는다.
- Geo 관련 명령과 hstrlen 명령은 version 3.2에서 수행된다.
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Strings | set | w | set, set ex/px 버그 |
2 | Strings | setnx | w | setnx |
3 | Strings | setex | w | SET, PEXPIREAT, (DEL) |
4 | Strings | psetex | w | SET, PEXPIREAT, (DEL) |
5 | Strings | mset | w | mset |
6 | Strings | msetnx | w | msetnx |
7 | Strings | getset | w | getset |
8 | Strings | append | w | append |
9 | Strings | get | r | |
10 | Strings | mget | r | |
11 | Strings | strlen | r | |
12 | Strings | setrange | w | setrange |
13 | Strings | getrange | r | |
14 | Strings | substr | r | * getrange가 실행됨, Undoc |
15 | Strings | incr | w | incr |
16 | Strings | decr | w | decr |
17 | Strings | incrby | w | incrby |
18 | Strings | decrby | w | decrby |
19 | Strings | incrbyfloat | w | SET |
20 | Strings | setbit | w | setbit |
21 | Strings | getbit | r | |
22 | Strings | bitop | w | bitop |
23 | Strings | bitcount | r | |
24 | Strings | bitpos | r |
* SET EX/PX 버그: SET key value EX seconds or PX milliseconds 명령을 사용했을 경우
EX/PX option이 PEXPIREAT 명령으로 변환되지 않는 버그가 있다.
확인한 버전: 3.2.8 -> 이것은 2017년 7월 28일 발표된 3.2.10에서 수정되었다.
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Lists | rpush | w | rpush |
2 | Lists | lpush | w | lpush |
3 | Lists | rpushx | w | rpushx |
4 | Lists | lpushx | w | lpushx |
5 | Lists | linsert | w | linsert |
6 | Lists | lset | w | lset |
7 | Lists | rpop | w | rpop |
8 | Lists | lpop | w | lpop |
9 | Lists | rpoplpush | w | rpoplpush |
10 | Lists | ltrim | w | ltrim |
11 | Lists | lrem | w | lrem |
12 | Lists | brpop | w | RPOP |
13 | Lists | blpop | w | LPOP |
14 | Lists | brpoplpush | w | brpoplpush |
15 | Lists | llen | r | |
16 | Lists | lindex | r | |
17 | Lists | lrange | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Sets | sadd | w | sadd |
2 | Sets | srem | w | srem |
3 | Sets | smove | w | smove |
4 | Sets | spop | w | SREM |
5 | Sets | sinter | r | |
6 | Sets | sinterstore | w | sinterstore |
7 | Sets | sunion | r | |
8 | Sets | sunionstore | w | sunionstore |
9 | Sets | sdiff | r | |
10 | Sets | sdiffstore | w | sdiffstore |
11 | Sets | sismember | r | |
12 | Sets | srandmember | r | |
13 | Sets | scard | r | |
14 | Sets | smembers | r | |
15 | Sets | sscan | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Sorted Sets | zadd | w | zadd |
2 | Sorted Sets | zincrby | w | zincrby |
3 | Sorted Sets | zrem | w | zrem |
4 | Sorted Sets | zremrangebyscore | w | zremrangebyscore |
5 | Sorted Sets | zremrangebyrank | w | zremrangebyrank |
6 | Sorted Sets | zremrangebylex | w | zremrangebylex |
7 | Sorted Sets | zunionstore | w | zunionstore |
8 | Sorted Sets | zinterstore | w | zinterstore |
9 | Sorted Sets | zrange | r | |
10 | Sorted Sets | zrangebyscore | r | |
11 | Sorted Sets | zrevrangebyscore | r | |
12 | Sorted Sets | zrangebylex | r | |
13 | Sorted Sets | zrevrangebylex | r | |
14 | Sorted Sets | zcount | r | |
15 | Sorted Sets | zlexcount | r | |
16 | Sorted Sets | zrevrange | r | |
17 | Sorted Sets | zcard | r | |
18 | Sorted Sets | zscore | r | |
19 | Sorted Sets | zrank | r | |
20 | Sorted Sets | zrevrank | r | |
21 | Sorted Sets | zscan | r |
No | Catagory | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Hashes | hset | w | hset |
2 | Hashes | hsetnx | w | hsetnx |
4 | Hashes | hmset | w | hmset |
3 | Hashes | hget | r | |
5 | Hashes | hmget | r | |
6 | Hashes | hincrby | w | hincrby |
7 | Hashes | hincrbyfloat | w | HSET |
8 | Hashes | hdel | w | hdel |
9 | Hashes | hlen | r | |
10 | Hashes | hkeys | r | |
11 | Hashes | hvals | r | |
12 | Hashes | hgetall | r | |
13 | Hashes | hexists | r | |
14 | Hashes | hscan | r | |
15 | Hashes | hstrlen | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Keys | del | w | del |
2 | Keys | exists | r | |
3 | Keys | randomkey | r | |
4 | Keys | move | w | move |
5 | Keys | rename | w | rename |
6 | Keys | renamenx | w | renamenx |
7 | Keys | expire | w | PEXPIREAT, (DEL) |
8 | Keys | expireat | w | PEXPIREAT, (DEL) |
9 | Keys | pexpire | w | PEXPIREAT, (DEL) |
10 | Keys | pexpireat | w | PEXPIREAT, (DEL) |
11 | Keys | ttl | r | |
12 | Keys | pttl | r | |
13 | Keys | keys | r | |
14 | Keys | sort | w | sort, store option을 사용했을때 기록 |
15 | Keys | scan | r | |
16 | Keys | type | r | |
17 | Keys | persist | w | persist |
18 | Keys | restore | w | restore |
19 | Keys | restore-asking | w | restore-asking, restore 명령 수행, Undoc |
20 | Keys | migrate | w | migrate |
21 | Keys | dump | r | |
22 | Keys | object | r | |
23 | Keys | wait | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Server | save | a | |
2 | Server | bgsave | a | |
3 | Server | bgrewriteaof | a | |
4 | Server | shutdown | a | |
5 | Server | lastsave | r | |
6 | Server | sync | a | |
7 | Server | psync | a | 내부 명령 |
8 | Server | replconf | a | 내부 명령 |
9 | Server | flushdb | w | flushdb |
10 | Server | flushall | w | flushall |
11 | Server | info | r | |
12 | Server | monitor | a | |
13 | Server | latency | a | 내부 명령 |
14 | Server | slaveof | a | |
15 | Server | role | l | |
16 | Server | debug | a | |
17 | Server | config | a | |
18 | Server | slowlog | r | |
19 | Server | time | r | |
20 | Server | command | r | |
21 | Server | dbsize | r | |
22 | Server | client | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | PubSub | publish | p | |
2 | PubSub | subscribe | p | |
3 | PubSub | unsubscribe | p | |
4 | PubSub | psubscribe | p | |
5 | PubSub | punsubscribe | p | |
6 | PubSub | pubsub | p |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Geo | geoadd | w | ZADD |
2 | Geo | georadius | r | |
3 | Geo | georadiusbymember | r | |
4 | Geo | geohash | r | |
5 | Geo | geopos | r | |
6 | Geo | geodist | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Connection | auth | r | |
2 | Connection | ping | r | |
3 | Connection | echo | r | |
4 | Connection | quit | * r이 없는 이유: 커멘드 구조체에 없고 하드코딩되어 있음 | |
5 | Connection | select | r | SELECT, DB id가 바뀌었을때 기록됨 |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Transactions | multi | r | |
2 | Transactions | exec | s | exec |
3 | Transactions | discard | r | |
4 | Transactions | watch | r | |
5 | Transactions | unwatch | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Scripting | eval | s | |
2 | Scripting | evalsha | s | |
3 | Scripting | script | r | script |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | HyperLogLog | pfadd | w | pfadd |
2 | HyperLogLog | pfcount | r | |
3 | HyperLogLog | pfmerge | w | pfmerge |
4 | HyperLogLog | pfdebug | w | pfdebug |
5 | HyperLogLog | pfselftest | r |
No | Category | Name | 구분 | 기록되는 명령 Recorded Commands |
---|---|---|---|---|
1 | Cluster | cluster | a | |
2 | Cluster | readonly | r | |
3 | Cluster | readwrite | r | |
4 | Cluster | asking | r | 내부 명령 |
<< AOF Internal | AOF Recorded Commands | AOF Rewrite >> |
---|
조회수 :