INFO [section]

Redis Server Course Redis Technical Support Redis Enterprise Server

서버 정보

레디스 서버 정보와 통계값을 조회한다.   보여주는 정보는 다음과 같다.

info 명령을 실행하면 commandstats를 제외한 정보를 보여주고, info all 하면 모든 정보를 보여준다.
사용법: info, info all, info server 등 위에서 설명한 section을 입력한다.


SERVER

레디스 서버 버전, 모드, OS정보, 포트, conf 파일 위치 등을 보여준다.

  • redis_version:5.0.7
  • redis_git_sha1:00000000   -   Git SHA1  
  • redis_git_dirty:0   -   Git dirty flag  
  • redis_build_id:29f2aee9a9a0937b
  • redis_mode:standalone   -   레디스 모드 세 가지 중 standalone/sentinel/cluster 중 하나가 표시된다.  
  • os:Linux 3.10.0-229.el7.x86_64 x86_64   -   Operating system  
  • arch_bits:64   -   Architecture (32 or 64 bits)  
  • multiplexing_api:epoll   -   레디스가 사용하는 event loop mechanism  
  • gcc_version:4.8.3
  • process_id:45928
  • run_id:b4159b6a3960782f8250fca8e6db62bf31b21cbb   -   레디스 서버 ID: 클러스터와 센티널 모드에서 사용
  • tcp_port:5001   -   TCP/IP listen port  
  • uptime_in_seconds:830488   -   시작한 후 지난 시간(초)-운영시간  
  • uptime_in_days:9   -   시작한 후 지난 시간(일)-운영시간  
  • hz:10   -   이것은 timer interrupt이다.   이 값은 1초에 10번을 의미한다.   값의 범위는 1 ~ 500 이다.   의미는 각종 background 작업을 호출하는 주기다.   예를 들면 만료된 키를 삭제하는 작업, RDB 파일 쓰기와 AOF rewrite 작업을 시작하게 하는 작업, 복제 재연결 등을 1초에 10번 호출하는 것이다.
    다음은 redis.c 에 있는 설명이다.
    • Active expired keys collection (it is also performed in a lazy way on lookup).
    • Software watchdog.
    • Update some statistic.
    • Incremental rehashing of the DBs hash tables.
    • Triggering BGSAVE / AOF rewrite, and handling of terminated children.
    • Clients timeout of different kinds.
    • Replication reconnection.
    • Many more..
  • lru_clock:11989733   -   incrementing every minute, for LRU management  
  • executable:/redis/redis-server   -   3.2 추가  
  • config_file:/redis/5001/redis.conf

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.server;
결과> 0) key|value
1) arch_bits|64
2) atomicvar_api|atomic-builtin
3) config_file|/home/charlie/ent711/9261/redis.conf
4) configured_hz|10
5) databases|16
6) enterprise_version|7.1.1
7) executable|/home/charlie/ent711/src/redis-eserver
8) gcc_version|4.8.5
9) hz|10
10) multiplexing_api|epoll
11) os|Linux 3.10.0-957.5.1.el7.x86_64 x86_64
12) process_id|15548
13) redis_mode|enterprise
14) run_id|25a68eaadfae2ef2679fe36dc1f2ab0d6e26f69a
15) tcp_port|6000

SVR

간략한 서버 정보를 보여줍니다. 이 기능은 Enterpirse 서버에서 사용 가능합니다.

  • enterprise_version:6.0.0
  • redis_mode:master/replica/clone/cluster/sentinel
    startsync 명령을 실행했을 경우 clone으로 표시됩니다. 상대가 이 서버에 startsync 명령을 실행했을 경우에도 clone으로 표시됩니다.
  • process_id:31616
  • tcp_port:6000
  • uptime_in_days:1

CLIENTS

클라이언트 정보를 보여준다.

  • connected_clients:1   -   현재 접속해 있는 클라이언트의 수(슬레이브 노드 접속은 제외)  
  • client_longest_output_list:0   -   longest output list among current client connections   버전 4.x까지
  • client_biggest_input_buf:0   -   biggest input buffer among current client connections   버전 4.x까지
  • client_recent_max_input_buffer:2   -   최근 입력 버퍼 최대 사용량.   버전 5.0부터
  • client_recent_max_output_buffer:0   -   최근 출력 버퍼 최대 사용량.   버전 5.0부터
  • blocked_clients:0   -   BLPOP, BRPOP, BRPOPLPUSH, WAIT 명령으로 대기중인 클라이언트 수
  • tracking_clients:2   -   CLIENT tracking on을 실행해서 Client Side Caching 중인 클라이언트 수.   버전 6.0부터
  • clients_in_timeout_table:0   -   버전 6.0부터

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.client;
결과> 0) key|value
1) blocked_clients|0
2) client_recent_max_input_buffer|2
3) client_recent_max_output_buffer|0
4) connected_clients|1
5) maxclients|10000

Client list 조회

명령>select * from info.clients;
결과> 0) key|address|fd|name|age|idle|flags|dbnum|pubsub_cha|pubsub_pat|multi|
    querybuf_used|querybuf_avail|bufpos|reply|output_mem|events|last_command
1) 4|127.0.0.1:48090|10||434|0|N|0|0|0|-1|50|32718|0|0|0|r|select

MEMORY

서버 메모리 사용 정보를 보여줍니다.

  • used_memory:1943528   -   Bytes   (zmalloc_used), repl-backlog-size를 포함한다.
  • used_memory_human:1.85M   -   우리가 읽기 편한 단위(M/G)로 보여준다.   (hmem)
  • used_memory_rss:2838528   -   Resident Set Size. top이나 ps 명령에서 볼 수 있다.   실제 real memory를 차지하고 있는 양 (server.cron_malloc_stats.process_rss), PAGESIZE 배수입니다.
  • used_memory_rss_human:2.71M   -   3.2 추가   (used_memory_rss_hmem)
  • used_memory_peak:6023304   -   최대로 사용한 메모리(bytes)   (server.stat_peak_memory)
  • used_memory_peak_human:5.74M   -   (peak_hmem)
  • used_memory_peak_perc:32.27%   -   4.0 추가   used_memory / used_memory_peak 비율
    (mh->peak_perc)
  • used_memory_overhead:1924178   -   4.0 추가   (mh->overhead_total)
  • used_memory_startup:792016   -   4.0 추가   (mh->startup_allocated)
  • used_memory_dataset:19350   -   4.0 추가   used_memory - used_memory_overhead (mh->dataset)
  • used_memory_dataset_perc:1.68%   -   4.0 추가  
    (used_memory - used_memory_startup) / used_memory_dataset 비율 (mh->dataset_perc)
  • allocator_allocated:1935512   -   5.0 추가   (server.cron_malloc_stats.allocator_allocated)
  • allocator_active:2113536   -   5.0 추가   (server.cron_malloc_stats.allocator_active), PAGESIZE 배수
  • allocator_resident:4546560   -   5.0 추가   (server.cron_malloc_stats.allocator_resident), PAGESIZE 배수
  • total_system_memory:3976998912   -   3.2 추가   (total_system_mem)
  • total_system_memory_human:3.70G   -   3.2 추가   (total_system_hmem)
  • used_memory_lua:37888   -   루아 엔진에서 사용한 메모리   (memory_lua)
  • used_memory_lua_human:37.00K   -   3.2 추가   (used_memory_lua_hmem)
  • used_memory_scripts:0   -   5.0 추가   (mh->lua_caches)
  • used_memory_scripts_human:0B   -   5.0 추가   (used_memory_scripts_hmem)
  • number_of_cached_scripts:0   -   5.0 추가   (dictSize(server.lua_scripts))
  • maxmemory:0   -   3.2 추가   (server.maxmemory)
  • maxmemory_human:0B   -   3.2 추가   (maxmemory_hmem)
  • maxmemory_policy:noeviction   -   3.2 추가   (evict_policy)
  • allocator_frag_ratio:1.09   -   5.0 추가   (mh->allocator_frag)
  • allocator_frag_bytes:178024   -   5.0 추가   (mh->allocator_frag_bytes)
  • allocator_rss_ratio:2.15   -   5.0 추가   (mh->allocator_rss)
  • allocator_rss_bytes:2433024   -   5.0 추가   (mh->allocator_rss_bytes)
  • rss_overhead_ratio:0.62   -   5.0 추가   (mh->rss_extra)
  • rss_overhead_bytes:18446744073707843584   -   5.0 추가   (mh->rss_extra_bytes)
  • mem_fragmentation_ratio:1.49   -   used_memory와 used_memory_rss 비율   (mh->total_frag)
  • mem_fragmentation_bytes:935952   -   5.0 추가   (mh->total_frag_bytes)
  • mem_not_counted_for_evict:0   -   5.0 추가   (freeMemoryGetNotCountedMemory())
  • mem_replication_backlog:1048576   -   5.0 추가   (mh->repl_backlog)
  • mem_clients_slaves:16914   -   5.0 추가   (mh->clients_slaves)
  • mem_clients_normal:66600   -   5.0 추가   (mh->clients_normal)
  • mem_aof_buffer:0   -   5.0 추가   (mh->aof_buffer)
  • mem_allocator:jemalloc-5.1.0   -   컴파일 시 정한 메모리 할당자   (ZMALLOC_LIB)
  • active_defrag_running:0   -   4.0 추가   (server.active_defrag_running)
  • lazyfree_pending_objects:0   -   4.0 추가   (lazyfreeGetPendingObjectsCount())

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.memory;
결과> 0) key|value
1) active_defrag_running|0
2) allocator_active|385724416
3) allocator_allocated|383973304
4) allocator_frag_bytes|1751112
5) allocator_frag_ratio|1.0
6) allocator_resident|399560704
7) allocator_rss_bytes|13836288
8) allocator_rss_ratio|1.04
9) lazyfree_pending_objects|0
  중간 생략 ...
40) used_memory_startup|1232592

MEM

간략한 메모리 정보를 보여줍니다. 이 기능은 Enterpirse 서버에서 사용 가능합니다.

  • used_memory_human:10.84M
  • used_memory_rss_human:18.16M
  • total_system_memory_human:7.76G
  • maxmemory_human:0B

MEM2

Enterpirse server에서는 각 datatype별로 키를 별도로 ZSet(dict, skiplist)에 보관합니다.
각 datatype별 키와 slot 개수를 보여줍니다.
이 기능은 Enterpirse 서버이고 redis.conf use-sql yes 일 경우에 사용 가능합니다.
> info mem2
  # Memory2
  db0:keys=732045,slots=1048576,string=732041/1048576,list=1/4,set=1/4,zset=1/4,hash=1/4
  db1:keys=1,slots=4,string=1/4,list=0/0,set=0/0,zset=0/0,hash=0/0,stream=0/0

MEM3

Enterpirse server에서는 각 datatype별로 키를 별도로 ZSet(dict, skiplist)에 보관합니다.
각 datatype별 키와 dict이 사용하는 메모리를 보여줍니다.
이 기능은 Enterpirse 서버이고 redis.conf use-sql yes 일 경우에 사용 가능합니다.
> info mem3
  # Memory3
  db0:keys=732045,memory=72.76M,string=732041/76287992,list=1/920,set=1/912,zset=1/912
  db1:keys=1,memory=5.64K,string=1/928,list=0/808,set=0/808,zset=0/808,hash=0/808,stream=0/808
  info17:keys=4,memory=1192


PERSISTENCE

RDB와 AOF에 대한 정보를 보여준다.

  • loading:0   -   레디스 서버 시작 시 RDB 또는 AOF 파일을 읽어들이는 동안 1이다.  
    redis.io에 마치 dump 파일을 읽어들이는 동안만 1로 표시되는 것처럼 되어 있으나 AOF 파일을 읽어들일때도 1로 표시된다.   RDB/AOF 파일을 로딩하는 동안 SET 명령같은 것들을 실행하면 "(error) LOADING Redis is loading the dataset in memory" 이런 에러를 내보내지만 info 명령은 실행된다.   따라서 info 명령으로 로딩중인지 확인할 수 있다.
여기서 부터 RDB 파일 관련 정보 ------------------------
  • rdb_changes_since_last_save:3   -   RDB 파일을 마지막으로 저정한 이후로 입력된 데이터 건수이다.  
  • rdb_bgsave_in_progress:0   -   RDB 파일 background save가 진행중일때 1로 표시된다.  
    redis.conf 파일의 save 옵션 또는 BGSAVE 명령을 실행해서 자식 프로세스가 RDB파일을 저장중일때이다.   SAVE 명령은 레디스 프로세스가 직접 처리하므로 info 명령도 SAVE 명령이 완료되어야 표시된다.
  • rdb_last_save_time:1438064972   -   마지막 성공적으로 RDB 파일을 저장한 시간  
  • rdb_last_bgsave_status:ok   -   마지막 백그라운드 RDB 파일 저장 상태: ok/err  
  • rdb_last_bgsave_time_sec:13   -   마지막 백그라운드 RDB 파일 저장 소요 시간(초)  
    -1이면 아직 RDB 파일을 한번도 저장하지 않은 상태임.
  • rdb_current_bgsave_time_sec:-1   -   현재 백그라운드로 RDB 파일을 저장중이라면 저장 시작부터 현재까지 소요된 시간.  
    완료되면 이 시간이 위 파라미터에 기록된다. -1은 현재 저장중이 아니라는 것.
여기서 부터 AOF 파일 관련 정보 ------------------------
  • aof_enabled:1   -   redis.conf 에 appendonly yes 이면 1, no 면 0이다.  
    yes일때는 레디스 서버 시작 시 appendonly.aof 을 읽고, no 면 dump.rdb 파일을 읽는다. 어느 한 쪽이 없다고 다른 파일을 읽지는 않는다.
  • aof_rewrite_in_progress:0   -   현재 AOF 파일을 백그라운드로 저장 중이면 1로 표시된다.  
  • aof_rewrite_scheduled:0   -   AOF rewrite를 할 것으로 예정되어 있으면 1.  
    RDB 파일을 저장 중이면 동시에 AOF 파일을 저장할 수 없다. 즉, 자식 프로세스를 하나만 실행할 수 있게 되어 있다.   그러므로 RDB 파일 저장 중이면 예정(scheduled:1)해 놓고, 저장이 완료되면 AOF rewrite를 시작한다.
  • aof_last_rewrite_time_sec:13   -   마지막 AOF rewrite 소요 시간(초)  
  • aof_current_rewrite_time_sec:-1   -   현재 AOF rewrite가 진행중이면 시작부터 현재까지 시간(초)가 표시된다.  
    완료되면 이 시간이 위 파라미터에 저장되고, 여기는 -1로 변경된다.
  • aof_last_bgrewrite_status:ok   -   마지막 AOF background rewrite 상태: ok/err   버전 2.6.0-RC7에서 추가
  • aof_last_write_status:ok   -   마지막 AOF write 상태: ok/err  
    AOF 파일을 삭제하고 데스트했는데, ok로 나온다. 레디스는 AOF 파일 존재 여부를 확인하지 않는 것으로 보인다.
loading:1 일때 나오는 정보 ------------------------
  • loading_start_time:1438065655   -   로딩 시작 시간  
  • loading_total_bytes:2872474649   -   RDB 또는 AOF 파일 사이즈(바이트)  
  • loading_loaded_bytes:772905051   -   로딩한 바이트  
  • loading_loaded_perc:26.91   -   로딩 퍼센트, 100까지 증가한다.  
  • loading_eta_seconds:10   -   남은 로딩 시간(예상), 0으로 줄어든다.  
loading:0 일때 나오는 정보 ------------------------
  • aof_current_size:2872474649   -   현재 AOF 파일 사이즈(바이트)  
  • aof_base_size:2872474649   -   시작했을때 또는 마지막 rewrite 했을때 사이즈(바이트)  
    auto-aof-rewrite-percentage 100일때 current_size가 base_size보다 2배이면 rewrite를 시작한다.
  • aof_pending_rewrite:0   -   RDB 파일을 저장중이기 때문에 AOF rewrite를 할 수 없어 기다리는 경우 1  
  • aof_buffer_length:0   -   AOF 버퍼 길이  
  • aof_rewrite_buffer_length:0   -   rewrite 버퍼 길이  
  • aof_pending_bio_fsync:0   -   appendfsync를 everysec로 설정했을 때 디스크 쓰기(fsync)는 별도 쓰레드가 처리한다.   I/O 부하가 심해서 현재 처리하지 못하고 I/O 큐(queue)에 대기(pending) 중인 잡(job)의 수를 보여준다.   아래 항목과 연결되어 있으니 같이 보세요.
  • aof_delayed_fsync:0   -   appendfsync를 everysec로 설정했을 때 aof buffer를 매 초마다 디스크에 써야되는데,   I/O 부하가 심해(현재 pending된 잡이 있어) 2초 이상 쓰지 못했을 경우 서버 로그에 "Asynchronous AOF fsync is taking too long (disk is busy?). Writing the AOF buffer without waiting for fsync to complete, this may slow down Redis." 메시지를 남기고, 이 항목을 1 증가시킨다.   이 때 서버는 write 지연으로 멈춤 현상이 발생할 수 있다.
    이에 대한 자세한 내용과 해결 방안은 AOF fsync is taking too long을 보세요.

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)   단축어: persist

명령>select * from info.persistence;
결과> 0) key|value
1) aof_base_size|118845413
2) aof_buffer_length|0
3) aof_current_rewrite_time_sec|-1
4) aof_current_size|118845480
5) aof_delayed_fsync|0
6) aof_enabled|1
7) aof_last_bgrewrite_status|ok
8) aof_last_cow_size|0
9) aof_last_rewrite_time_sec|-1
10) aof_last_write_status|ok
11) aof_pending_bio_fsync|0
12) aof_pending_rewrite|0
13) aof_rewrite_buffer_length|0
14) aof_rewrite_in_progress|0
15) aof_rewrite_scheduled|0
16) loading|0
17) rdb_bgsave_in_progress|0
18) rdb_changes_since_last_save|177
19) rdb_current_bgsave_time_sec|-1
20) rdb_last_bgsave_status|ok
21) rdb_last_bgsave_time_sec|-1
22) rdb_last_cow_size|0
23) rdb_last_save_time|1609908461

AOF 정보

appendonly, appendfsync, appendfilename, aof_use_rdb_preamble 항목을 추가했습니다.

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.aof;
결과> 0) key|value
1) aof_base_size|2304
2) aof_buffer_length|0
3) aof_current_rewrite_time_sec|-1
4) aof_current_size|2304
5) aof_delayed_fsync|0
6) aof_last_bgrewrite_status|ok
7) aof_last_cow_size|606208
8) aof_last_rewrite_time_sec|1
9) aof_last_write_status|ok
10) aof_pending_bio_fsync|0
11) aof_pending_rewrite|0
12) aof_rewrite_buffer_length|0
13) aof_rewrite_in_progress|0
14) aof_rewrite_scheduled|0
15) aof_use_rdb_preamble|yes
16) appendfilename|./data/appendonly.aof
17) appendfsync|everysec
18) appendonly|yes

RDB 정보

save, rdb_filename, rdbcompression 항목을 추가했습니다.

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.rdb;
결과> 0) key|value
1) rdb_bgsave_in_progress|0
2) rdb_changes_since_last_save|0
3) rdb_current_bgsave_time_sec|-1
4) rdb_filename|./data/dump.rdb
5) rdb_last_bgsave_status|ok
6) rdb_last_bgsave_time_sec|-1
7) rdb_last_cow_size|0
8) rdb_last_save_time|1610092800
9) rdbcompression|yes
10) save|90 1,300 10,60 10000

LOADING

Loading 중인지 여부와 loading 중 일 경우 로딩 정보를 조회합니다.
이 기능은 Enterpirse 버전에서 사용 가능합니다.

  • loading:1
  • aof_enabled:1
  • start_time:2020-07-03 01:30:51
  • total_bytes:609.83M
  • loaded_bytes:510.00M
  • loaded_perc:83.63%
  • eta_seconds:4

STATS

총 접속수, 총 처리 명령 수 등 통계 정보를 보여준다.

  • total_connections_received:22658   -   서버 시작 후 총 접속 수  
  • total_commands_processed:553430   -   서버 시작 후 처리한 총 명령 수(저장,조회 모두)  
  • instantaneous_ops_per_sec:1   -   현재 초당 처리한 명령 수, 현재 상황을 나타냄.  
    이 값으로 현재 초당 몇 건씩 처리하고 있는지 알 수 있음.
  • total_net_input_bytes:2996372500   -   서버 시작 후 총 입력 바이트  
  • total_net_output_bytes:1927242928   -   서버 시작 후 총 출력 바이트  
  • instantaneous_input_kbps:0.05   -   현재 입력 kbps  
  • instantaneous_output_kbps:0.01   -   현재 출력 kbps  
  • rejected_connections:0   -   maxclients 제한으로 거부된 접속 수  
  • sync_full:2   -   마스터 노드일때 슬레이브 노드와 full sync 횟수  
  • sync_partial_ok:0   -   마스터 노드일때 슬레이브 노드와 partial sync ok 횟수  
  • sync_partial_err:0   -   마스터 노드일때 슬레이브 노드와 partial sync err 횟수  
  • expired_keys:15   -   expire 명령(그런 종류)으로 삭제된 키 수  
  • evicted_keys:0   -   maxmemory 제한에 의해 퇴출된 키 수  
  • keyspace_hits:119035   -   get key해서 값이 나오면 1 증가  
  • keyspace_misses:5980   -   get key해서 nil 이 나오면 1 증가  
  • pubsub_channels:5   -   pub/sub channel로 연결된 channel 수  
  • pubsub_patterns:7   -   pub/sub pattern로 연결된 pattrn channel 수  
  • latest_fork_usec:68721   -   마지막 fork()하는데 걸린 시간(microsecond)  
  • migrate_cached_sockets:0   -   클러스터 migrate 관련 값  
  • slave_expires_tracked_keys:0   -  
  • active_defrag_hits:0   -  
  • active_defrag_misses:0   -  
  • active_defrag_key_hits:0   -  
  • active_defrag_key_misses:0   -  
  • tracking_total_keys:2   -   현재 client가 캐시하고 있는 키 개수를 보여준다. Client가 키를 조회(캐싱)하면 증가하고, 해당 키가 변경되어 메시지가 보내면 감소한다.   버전 6.0부터
  • tracking_total_items:2   -  
  • unexpected_error_replies:0   -   마스터와 복제 노드간, AOF 로딩 중 에러가 발생하면 증가한다.
    버전 6.0부터  redis.log에 아래와 같은 로그가 남는다.
    "== CRITICAL == This from is sending an error to its to: 'errMsg' after processing the command 'cmdname'"
    fromto는 아래와 같이 쌍으로 이루어진다.
    master -> replica
    replica -> master
    AOF-loading-client -> server

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.stats;
결과> 0) key|value
1) active_defrag_hits|0
2) active_defrag_key_hits|0
3) active_defrag_key_misses|0
4) active_defrag_misses|0
5) evicted_keys|0
6) expired_keys|0
7) expired_stale_perc|0.0
8) expired_time_cap_reached_count|0
9) instantaneous_input_kbps|0.0
10) instantaneous_ops_per_sec|0
11) instantaneous_output_kbps|0.0
12) keyspace_hits|32
13) keyspace_misses|0
14) latest_fork_usec|0
15) migrate_cached_sockets|0
16) pubsub_channels|0
17) pubsub_patterns|0
18) rejected_connections|0
19) slave_expires_tracked_keys|0
20) sync_full|0
21) sync_partial_err|0
22) sync_partial_ok|0
23) total_commands_processed|176
24) total_connections_received|2
25) total_net_input_bytes|1156
26) total_net_output_bytes|31850

MON

서버 모니터링을 위한 정보를 보여줍니다.
서버 모니터링을 위해서 redis-cli --mon로 실행하면 이 info mon이 수행됩니다.
redis-cli --stat보다 5배 이상 빠르게 실행됩니다.
이 기능은 Enterpirse 버전에서 사용 가능합니다.

  • mode:standard/cluster/clone -> Enterprise 버전에 Active로 운영할 경우 clone으로 표시됩니다.
  • role:master/replica
  • ip:127.0.0.1
  • port:6379
  • keys:1328626
  • mem:449.18M
  • clients:1 -> 현재 접속한 클라이언트 수
  • commands:1 -> 명령 실행 횟수(누적된 총 횟수이다)
  • from:0 -> 클론일 경우 표시된다.
  • to:0 -> 클론일 경우 표시된다.
  • replicas:0 -> 복제 서버 대수가 표시된다.
  • child:LOAD/SAVE/AOF -> LOAD는 rdb 또는 AOF 파일 로드 시, SAVE는 rdb 파일 저장 시, AOF는 AOF 파일 rewrite 시 표시된다.

REPLICATION

마스터/슬레이브 복제에 대한 정보를 보여준다.
Enterpirse 버전에서는 repl만 해도 됩니다.

  • role:master   -   master/slave 중 하나, slave지만 다른 slave의 master인 경우 slave로 표시된다.  
master 일때 나오는 정보 ------------------------
  • connected_slaves:1   -   마스터일 경우 연결된 슬레이브 수  
  • slave0:ip=127.0.0.1,port=5002,state=online,offset=1818050955,lag=0   -   연결된 슬레이브 정보  
    슬레이브 수 만큼 표시된다.
항상 나오는 정보 ------------------------
  • master_repl_offset:1818050955   -    
  • repl_backlog_active:1   -   마스터일경우 1이고 슬레이브는 0이다.  
  • repl_backlog_size:1048576   -   redis.conf 파일에 repl-backlog-size 설정값이다.   보이는 값은 1mb일때이다. 1mb가 기본값이다. 0으로 설정할 수 없다. 0으로 하면 레디스 시작시 에러를 내고 시작되지 않는다.   슬레이브와 연결이 끊어졌을때 입력되는 데이터를 backlog-buffer에 저장했다가 다시 붙었을때 전체 데이터를 다시 주고 받을 필요없이 backlog-buffer의 데이터를 슬레이브에 보내서 동기화한다. repl_backlog_size는 이 buffer 사이즈이다.   이것을 부분 싱크(partial resynchronization)라고 한다.   입력되는 데이터가 Buffer size를 초과하면 Full Sync를 한다.
  • repl_backlog_first_byte_offset:1817002380   -    
  • repl_backlog_histlen:1048576   -    
slave 일때 추가로 나오는 정보 ------------------------
  • master_host:127.0.0.1   -   마스터 노드 IP  
  • master_port:5001   -   마스터 노드 포트  
  • master_link_status:up   -   마스터 노드와 연결 상태 정상 up, 비정상 down  
    주위: 슬레이브 노드를 시작한 후 AOF/RDB 파일을 로딩하는 동안, 마스터와 Full Sync 하는 동안 down으로 표시된다.   Full Sync가 완료되면 up으로 표시된다.
  • master_link_down_since_seconds:2   -   링크가 다운된 후 경과 시간을 초로 보여준다.   위 항목이 down일때 표시된다.   레디스 서버 시작 후 마스터와 연결이 완료되기 전까지는 1970년 부터 유닉스 타임을 보여준다.   예) 1438132897
  • master_last_io_seconds_ago:4   -   디폴트로 10초에 한번씩 ping 확인을 하므로 0~10사이의 값이다.   마스터 데이터가 변경되어 해당 데이터를 받으면 0으로 setting 된다.   이 값이 10보다 크면 마스터와 통신을 하지 못하는 상태가 지속되는 것이다.   마스터 서버가 다운되었든지, 네트워크가 끊어졌든지 등의 상태인 것이다.   예를 들어 마스터에서 debug sleep 20을 실행하면 20초 동안 sleep 상태이므로 본 항목 값은 20이상 증가한다.   master_link_status:down 이면 -1로 표시된다.
  • master_sync_in_progress:0   -   마스터 노드와 Sync 중이면 1로 표시된다.   Sync 중인 동안 다음 2개 항목이 추가로 표시된다.
  • master_sync_left_bytes:1276656530   -   Sync를 완료할때까지 남아있는 바이트, 슬레이브 입장에서는 받아야할 바이드임.   이 값은 줄어들어 0이 된다.
  • master_sync_last_io_seconds_ago:0   -   Sync동안 마지막으로 데이터를 받은 이후 시간(초), 위 항목인 left_bytes가 0 이 되면 이 값은 증가하기 시작한다.   이 값이 증가하는 동안이 받은 RDB 파일을 로딩하는 중이다.
  • slave_repl_offset:86090   -    
  • slave_priority:100   -   슬레이브가 마스터로 선정되는 우선 순위를 나타낸다. redis.conf에 설정된다. 기본값이 100 이다. 적을 수록 우선순위가 높다. 하지만 마스터로 선정되지 못하게 할때는 0을 setting한다.  
  • slave_read_only:1   -   슬레이브에 저장/변경/삭제 명령을 실행하지 못하도록 한다. 조회명령은 수행가능하다.   0이면 저장/변경/삭제명령 수행이 가능하다.   redis.conf 파일에 slave-read-only yes/no 로 설정한다.   이 항목은 버전 2.6.0에 추가되었다.

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)   단축어: repl

명령>select * from info.replication;
결과> 0) key|value
1) connected_slaves|0
2) master_link_down_since_seconds|1609915405
3) master_repl_offset|0
4) master_replid|ef3f6fe2f32826efcc92e0e6eccf6e706295f027
5) master_replid2|0
6) repl_backlog_active|0
7) repl_backlog_first_byte_offset|0
8) repl_backlog_histlen|0
9) repl_backlog_size|67108864
10) role|master
11) second_repl_offset|-1
12) slave_priority|100
13) slave_read_only|1

CPU

CPU 사용량 통계 정보를 보여준다.

  • used_cpu_sys:362.65   -   시스템 모드에서 사용한 CPU 시간(초)  
  • used_cpu_user:163.98   -   사용자 모드에서 사용한 CPU 시간(초)  
  • used_cpu_sys_children:23.06   -   RDB/AOF 파일 저장 시 자식 프로세스가 시스템 모드에서 사용한 CPU 시간(초)  
  • used_cpu_user_children:51.17   -   RDB/AOF 파일 저장 시 자식 프로세스가 사용자 모드에서 사용한 CPU 시간(초)  

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from info.cpu;
결과> 0) key|value
1) used_cpu_sys|6.884693
2) used_cpu_sys_children|0.0
3) used_cpu_user|13.174814
4) used_cpu_user_children|0.0

COMMANDSTATS

레디스 명령 통계 정보를 보여준다. "Info all"해도 나옵니다.

  • calls: 명령 실행 횟수
  • usec: 실행 시간(microsecond)
  • usec_per_call: 한 번 실행하는데 걸린 평균 시간(microsecond)
    usec_per_call = usec / calls
  • rejected_calls: 인수(argv) 잘못 입력으로 명령을 실행할 수 없을 경우, Redis 6.2.0에서 추가
    일반적인 에러 메시지: "wrong number of arguments for xxx"
    예) set key -> value를 입력하지 않았을 경우
        set key value ex -> ex 다음에 숫자를 입력하지 않았을 경우: ERR syntax error
    이 경우 rejected_calls이 증가하고, 명령이 실행되지 않았으므로 calls(명령 실행 횟수)는 증가하지 않습니다.
    server.c
        processCommand()에서 call()이 실행되기 전에 check해서 reject한다.
        그러므로 rejected_calls는 calls를 증가시키지 않는다.
        관련 function: rejectCommand(), rejectCommandFormat()
  • failed_calls: 명령 실행 중 에러 발생 시 증가, Redis 6.2.0에서 추가
    예) set key value ex AAA -> ERR value is not an integer or out of range
        SQL문에서 failed_calls 발생은 syntax error, no such key 등에서 발생한다.
    failed_calls 발생은 명령 실행 중 발생한 것이므로 calls가 증가한다.
    networking.c
    관련 function: addReplyError(), addReplyErrorObject(), addReplyErrorSds(), addReplyErrorFormat()

실행 예

  • cmdstat_get:calls=100853,usec=33168,usec_per_call=0.33   -   get 실행하는데 평균 0.33 microsecond가 걸렸다.
  • cmdstat_set:calls=100000,usec=39056,usec_per_call=0.39   -   set 실행하는데 평균 0.39 microsecond가 걸렸다.

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)   단축어: cmds

명령>select * from info.commandstats;
결과> 0) key|calls|total|per|rejected|failed
1) command|2|5185|2592.5|0|0
2) info|2|86|43.0|0|0
3) lpush|1|34|34.0|0|0
4) select|23|962985|41868.91|0|0

CMD

명령이름(command name)을 지정합니다. 지정한 명령에 대한 통계정보를 보여줍니다. 여러 개 명령을 지정할 수 있습니다.
사용 예) info cmd get set
이 기능은 Enterpirse 버전에서 사용 가능합니다.

  • get:calls=100853,usec=33168,usec_per_call=0.33,rejected_calls=0,failed_calls=0
  • set:calls=100000,usec=39056,usec_per_call=0.39,rejected_calls=0,failed_calls=0

CLEAR

레디스 명령 통계 정보를 지웁니다.
Config resetstat 명령과 동일하게 작동합니다.


CLUSTER

클러스터 여부를 보여준다.

  • cluster_enabled:0   -   클러스터가 활성화되어 있으면 1, 아니면 0 이다.  

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from cluster.info;
결과> 0) key|value
1) cluster_current_epoch|5
2) cluster_known_nodes|6
3) cluster_size|3
4) cluster_slots_assigned|16384
5) cluster_slots_fail|0
6) cluster_slots_ok|16384
7) cluster_slots_pfail|0
8) cluster_state|ok
9) cluster_stats_messages_received|66
10) cluster_stats_messages_sent|4637

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)

명령>select * from cluster.nodes;
결과> 0) key|node_id|cluster_bus_port|flags|master_node_id|ping_sent_time|pong_received_time|
    config_epoch|link_state|slots|migrating_or_importing_slots
1) 127.0.0.1:7000|a54a1fab4ce615215f247de22a67f1490aa1ba0b|17000|myself,master|
-|0|1609916838000|1|connected|1-4,6-5460|
2) 127.0.0.1:7001|e46f0afedffd4e9bf5f1acd9a40017ed82472916|17001|master|
-|0|1609916842708|4|connected|0,5,5461-10922|
3) 127.0.0.1:7002|857f3addef8c49040feb9cb0dd56e7b1fc887872|17002|master|
-|0|1609916843000|3|connected|10923-16383|
4) 127.0.0.1:7003|549b0a6bde8d34f6dbbf881d1728225382af40c0|17003|slave|
a54a1fab4ce615215f247de22a67f1490aa1ba0b|0|1609916841649|1|connected||
5) 127.0.0.1:7004|5320a335128235b049a5eb1695a8c80325f8151d|17004|slave|
e46f0afedffd4e9bf5f1acd9a40017ed82472916|0|1609916843764|4|connected||
6) 127.0.0.1:7005|2bdfeddf65efb29495b79e81bf90d81c17ad6af0|17005|slave|
857f3addef8c49040feb9cb0dd56e7b1fc887872|0|1609916840596|5|connected||

CLONES

클론 정보를 보여줍니다. StartSync 했을때 클론이라고 합니다. 이 기능은 Enterpirse 서버에서 사용 가능합니다.

  • clone_enabled:1   -   클론 여부 표시
  • clone_loading:0   -   StartSync 명령을 실행해서 FullSync 중 rdb 파일을 로딩할 때 1로 표시됩니다.
  • clone_backlog_active:1   -   clone_backlog에 메모리가 할당되어 있으면 1로 표시됩니다.
  • clone_backlog_size:10485760   -   clone_backlog size를 보여줍니다. 메모리 할당 여부와 상관없습니다.
  • clone_backlog_first_byte_offset:1643680793
  • clone_backlog_histlen:10485760
  • clone_backlog_idx:7902232
  • master_clone_offset:1654166552
  • from_clones:1   -   StartSync 서버 대수를 표시합니다. 자세한 정보는 아래 from_clone, client에 있습니다.
  • to_clones:1   -   데이터를 보내는 서버 대수입니다. 다른 서버가 이 서버에 StartSync를 했을때 증가합니다.
  • pending_clones:0   -   StartSync 명령을 실행하면 먼저 pending_clones에 등록됩니다. 바로 대상 서버와 Sync를 시도해서 성공하면 from_clones로 이동합니다. 대상 서버가 아직 준비되어 있지 않을 경우 pending_clones에 있고 1초마다 연결 시도합니다.
  • cached_clones:0   -   부분동기화(Partial Sync) 테스트용으로 사용됩니다. Loglevel이 debug 일때 EndSync를 하면 from_clones에 있던 서버와 연결을 끊고 cached_clones로 이동합니다. 이후 StartSync를 하면 대상 서버와 부분동기화를 시도합니다. 부분동기화가 실패하면 전체동기화(Full Sync)를 합니다.
  • from_clone1:ip=redisgate,port=6001,stat=Connected,replid=17faffc2984a61ba59c883d757fe429bc7240133,
    transfer_size=29336,date=2019-12-05_18:00:04,socket=10,fd=11
  • client:id=904,fd=10,peerid=(null),lastact=2019-12-05_23:57:15,flags=Master_Clone,reploff=166929
  • to_clone1:ip=127.0.0.1,port=6001,peerid=127.0.0.1:33048,id=2707,fd=8,replstate=online,lastact=2019-12-05_23:57:21,flags=Clone,repl_ack_off=165217

CLONE

클론 정보를 간략히 보여줍니다. 이 기능은 Enterpirse 서버에서 사용 가능합니다.

  • clone_enabled:1
  • from_clones:1
  • to_clones:1
  • pending_clones:0

KEYSPACE

키 정보를 보여준다.
db0: DB 번호
keys=4677733: key 개수, dbsize 명령 결과와 같다.
expires=1: expire될 key 개수, 예를 들어 expire key 10 하면 하나 증가하고 해당 키가 만료되면 하나 감소한다.
avg_ttl=10395: 남아있는 시간(millisecond), 이 경우 해당 키는 10.395초 후에 삭제될 것이다.   이 정보는 버전 2.8.0에서 추가되었습니다.

  • db0:keys=4677733,expires=1,avg_ttl=10395

SQL 조회   (이 기능은 Enterpirse 버전에서 SQL 사용이 가능합니다)   단축어: keys

명령>select * from info.keyspace;
결과> 0) key|total_keys|string|list|set|zset|hash|stream|module|expire_keys|expire_members
1) db0|7500|194|3|6|7018|279|0|0|0|0
2) db1|4591|28|0|0|4507|56|0|0|0|0
3) db2|4530|2|0|0|4513|15|0|0|0|0

DB0

DB번호를 지정합니다. 지정한 DB번호에 대한 정보만 조회합니다. 여러 개 DB를 지정할 수 있습니다.
사용 예) info db0 db1 or info db
이 기능은 Enterpirse 버전에서 사용 가능합니다.
db만 입력하면 0번 db 정보를 조회합니다.

  • db0:keys=100000,expires=1,avg_ttl=10395
  • db1:keys=500000,expires=0,avg_ttl=0


명령문

INFO [section]

  • 이 명령은 version 1.0.0 부터 사용할 수 있다.
  • Clones, cmd, db0 등은 Enterprise 버전에서 사용 가능합니다.
  • 논리적 처리 소요시간은 O(1)입니다.
SQL Select Redis Enterprise Server를 사용하시면 SELECT를 사용해보세요.
Clients for C Hiredis

<< ROLE INFO DEBUG >>

조회수 :

Email 답글이 올라오면 이메일로 알려드리겠습니다.

혹시 처음이세요?
레디스게이트에는 레디스에 대한 많은 정보가 있습니다.
레디스 소개, 명령어, SQL, 클라이언트, 서버, 센티널, 클러스터 등이 있습니다.
혹시 필요한 정보를 찾기 어려우시면 redisgate@gmail.com로 메일 주세요.
제가 찾아서 알려드리겠습니다.
 
close
IP를 기반으로 보여집니다.