Module: Valkey::Commands::ServerCommands
- Included in:
- Valkey::Commands
- Defined in:
- lib/valkey/commands/server_commands.rb
Overview
this module contains commands related to server management.
Instance Method Summary collapse
-
#acl(subcommand, *args) ⇒ Object
Control ACL configuration (convenience method).
-
#acl_cat(category = nil) ⇒ Array<String>
List the ACL categories or the commands inside a category.
-
#acl_deluser(*usernames) ⇒ Integer
Remove the specified ACL users.
-
#acl_dryrun(username, command, *args) ⇒ String
Simulate the execution of a command by a user without actually running it.
-
#acl_genpass(bits = nil) ⇒ String
Generate a random password.
-
#acl_getuser(username) ⇒ Array?
Get the rules for a specific ACL user.
-
#acl_list ⇒ Array<String>
List the current ACL rules in ACL config file format.
-
#acl_load ⇒ String
Reload the ACL rules from the configured ACL file.
-
#acl_log(count_or_reset = nil) ⇒ Array<Hash>, String
List latest ACL security events.
-
#acl_save ⇒ String
Save the current ACL rules to the configured ACL file.
-
#acl_setuser(username, *rules) ⇒ String
Modify or create ACL rules for a user.
-
#acl_users ⇒ Array<String>
List all configured ACL users.
-
#acl_whoami ⇒ String
Return the username of the current connection.
-
#bgrewriteaof(route: nil) ⇒ String
Asynchronously rewrite the append-only file.
-
#bgsave(route: nil) ⇒ String
Asynchronously save the dataset to disk.
-
#command(subcommand, *args) ⇒ Object
Send a generic COMMAND subcommand.
-
#command_ ⇒ Array
Return details about every Redis command.
-
#command_count ⇒ Integer
Return the total number of commands in the server.
-
#command_docs(*commands) ⇒ Array
Return documentary information about one or more commands.
-
#command_get_keys(*command) ⇒ Array
Extract keys from a full Redis command.
-
#command_get_keys_and_flags(*command) ⇒ Array
Extract keys and their flags from a full Redis command.
-
#command_info(*commands) ⇒ Array
Return information about one or more commands.
-
#command_list(filterby: nil, aclcat: nil, pattern: nil) ⇒ Array<String>
Return an array of command names.
-
#config(action, *args) ⇒ String, Hash
Get or set server configuration parameters.
-
#config_get(*args, route: nil) ⇒ Hash, String
Get server configuration parameters.
-
#config_resetstat(route: nil) ⇒ String
Reset the server's statistics.
-
#config_rewrite(route: nil) ⇒ String
Rewrite the server configuration file.
-
#config_set(*args, route: nil) ⇒ String
Set server configuration parameters.
-
#dbsize(route: nil) ⇒ Integer
Return the number of keys in the selected database.
-
#debug(*args) ⇒ Object
RequestType::DEBUG not exist.
-
#failover(to: nil, force: false, abort: false, timeout: nil) ⇒ String
Perform a manual failover of a master to one of its replicas.
-
#flushall(options = nil, route: nil) ⇒ String
Remove all keys from all databases.
-
#flushdb(options = nil, route: nil) ⇒ String
Remove all keys from the current database.
-
#info(cmd = nil, route: nil) ⇒ Hash
Get information and statistics about the server.
-
#lastsave(route: nil) ⇒ Integer
Get the UNIX time stamp of the last successful save to disk.
-
#latency_doctor ⇒ String
Return a human-readable latency analysis report.
-
#latency_graph(event) ⇒ String
Return an ASCII-art graph of the latency samples for the specified event.
-
#latency_histogram(*commands) ⇒ Array
Return a latency histogram for the specified commands.
-
#latency_history(event) ⇒ Array
Return the latency time series for the specified event.
-
#latency_latest ⇒ Array
Return the latest latency samples for all events.
-
#latency_reset(*events) ⇒ Integer
Reset latency data for all events or specific events.
-
#lolwut(version = nil, route: nil) ⇒ String
Display some computer art and the Valkey version.
-
#memory_doctor ⇒ String
Return a human-readable memory problems report.
-
#memory_malloc_stats ⇒ String
Return memory allocator statistics.
-
#memory_purge ⇒ String
Ask the allocator to release memory back to the operating system.
-
#memory_stats ⇒ Hash
Return memory usage statistics.
-
#memory_usage(key, samples: nil) ⇒ Integer?
Return the memory usage in bytes of a key and its value.
-
#monitor {|line| ... } ⇒ Object
Listen for all requests received by the server in real time.
-
#psync(replication_id, offset) ⇒ String
Internal command used for replication (partial resynchronization).
-
#replconf(*args) ⇒ String, Array
Internal command used for replication configuration.
-
#replicaof(host, port) ⇒ String
Make the server a replica of another instance, or promote it as master.
-
#restore_asking(key, ttl, serialized_value, replace: false, absttl: false, idletime: nil, freq: nil) ⇒ String
Internal command used in cluster mode for key migration with ASKING flag.
-
#role ⇒ Array
Return the role of the instance in the context of replication.
-
#save(route: nil) ⇒ String
Synchronously save the dataset to disk.
-
#shutdown ⇒ Object
Synchronously save the dataset to disk and then shut down the server.
-
#slaveof(host, port) ⇒ Object
Make the server a slave of another instance, or promote it as master.
-
#slowlog(subcommand, length = nil) ⇒ Array<String>, ...
Interact with the slowlog (get, len, reset).
-
#swapdb(index1, index2) ⇒ String
Swap two databases.
-
#sync ⇒ Object
Internal command used for replication.
-
#time(route: nil) ⇒ Array<Integer>
Return the server time.
Instance Method Details
#acl(subcommand, *args) ⇒ Object
Control ACL configuration (convenience method).
490 491 492 493 |
# File 'lib/valkey/commands/server_commands.rb', line 490 def acl(subcommand, *args) subcommand = subcommand.to_s.downcase send("acl_#{subcommand}", *args) end |
#acl_cat(category = nil) ⇒ Array<String>
List the ACL categories or the commands inside a category.
265 266 267 268 |
# File 'lib/valkey/commands/server_commands.rb', line 265 def acl_cat(category = nil) args = category ? [category] : [] send_command(RequestType::ACL_CAT, args) end |
#acl_deluser(*usernames) ⇒ Integer
Remove the specified ACL users.
283 284 285 |
# File 'lib/valkey/commands/server_commands.rb', line 283 def acl_deluser(*usernames) send_command(RequestType::ACL_DEL_USER, usernames) end |
#acl_dryrun(username, command, *args) ⇒ String
Simulate the execution of a command by a user without actually running it.
302 303 304 305 |
# File 'lib/valkey/commands/server_commands.rb', line 302 def acl_dryrun(username, command, *args) command_args = [username, command] + args send_command(RequestType::ACL_DRY_RUN, command_args) end |
#acl_genpass(bits = nil) ⇒ String
Generate a random password.
320 321 322 323 |
# File 'lib/valkey/commands/server_commands.rb', line 320 def acl_genpass(bits = nil) args = bits ? [bits] : [] send_command(RequestType::ACL_GEN_PASS, args) end |
#acl_getuser(username) ⇒ Array?
Get the rules for a specific ACL user.
335 336 337 |
# File 'lib/valkey/commands/server_commands.rb', line 335 def acl_getuser(username) send_command(RequestType::ACL_GET_USER, [username]) end |
#acl_list ⇒ Array<String>
List the current ACL rules in ACL config file format.
348 349 350 |
# File 'lib/valkey/commands/server_commands.rb', line 348 def acl_list send_command(RequestType::ACL_LIST) end |
#acl_load ⇒ String
Reload the ACL rules from the configured ACL file.
361 362 363 |
# File 'lib/valkey/commands/server_commands.rb', line 361 def acl_load send_command(RequestType::ACL_LOAD) end |
#acl_log(count_or_reset = nil) ⇒ Array<Hash>, String
List latest ACL security events.
381 382 383 384 |
# File 'lib/valkey/commands/server_commands.rb', line 381 def acl_log(count_or_reset = nil) args = count_or_reset ? [count_or_reset] : [] send_command(RequestType::ACL_LOG, args) end |
#acl_save ⇒ String
Save the current ACL rules to the configured ACL file.
395 396 397 |
# File 'lib/valkey/commands/server_commands.rb', line 395 def acl_save send_command(RequestType::ACL_SAVE) end |
#acl_setuser(username, *rules) ⇒ String
Modify or create ACL rules for a user.
416 417 418 419 |
# File 'lib/valkey/commands/server_commands.rb', line 416 def acl_setuser(username, *rules) command_args = [username] + rules send_command(RequestType::ACL_SET_USER, command_args) end |
#acl_users ⇒ Array<String>
List all configured ACL users.
430 431 432 |
# File 'lib/valkey/commands/server_commands.rb', line 430 def acl_users send_command(RequestType::ACL_USERS) end |
#acl_whoami ⇒ String
Return the username of the current connection.
443 444 445 |
# File 'lib/valkey/commands/server_commands.rb', line 443 def acl_whoami send_command(RequestType::ACL_WHOAMI) end |
#bgrewriteaof(route: nil) ⇒ String
Asynchronously rewrite the append-only file.
14 15 16 |
# File 'lib/valkey/commands/server_commands.rb', line 14 def bgrewriteaof(route: nil) send_command(RequestType::BG_REWRITE_AOF, [], route: route) end |
#bgsave(route: nil) ⇒ String
Asynchronously save the dataset to disk.
22 23 24 |
# File 'lib/valkey/commands/server_commands.rb', line 22 def bgsave(route: nil) send_command(RequestType::BG_SAVE, [], route: route) end |
#command(subcommand, *args) ⇒ Object
Send a generic COMMAND subcommand.
850 851 852 |
# File 'lib/valkey/commands/server_commands.rb', line 850 def command(subcommand, *args) send("command_#{subcommand.to_s.downcase}", *args) end |
#command_ ⇒ Array
Return details about every Redis command.
863 864 865 |
# File 'lib/valkey/commands/server_commands.rb', line 863 def command_ send_command(RequestType::COMMAND_) end |
#command_count ⇒ Integer
Return the total number of commands in the server.
876 877 878 |
# File 'lib/valkey/commands/server_commands.rb', line 876 def command_count send_command(RequestType::COMMAND_COUNT) end |
#command_docs(*commands) ⇒ Array
Return documentary information about one or more commands.
893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 |
# File 'lib/valkey/commands/server_commands.rb', line 893 def command_docs(*commands) args = commands.empty? ? [] : commands send_command(RequestType::COMMAND_DOCS, args) do |reply| if reply.is_a?(Array) # Convert array of arrays to array of hashes reply.map do |cmd_doc| if cmd_doc.is_a?(Array) Hash[*cmd_doc] else cmd_doc end end else reply end end end |
#command_get_keys(*command) ⇒ Array
Extract keys from a full Redis command.
923 924 925 |
# File 'lib/valkey/commands/server_commands.rb', line 923 def command_get_keys(*command) send_command(RequestType::COMMAND_GET_KEYS, command) end |
#command_get_keys_and_flags(*command) ⇒ Array
Extract keys and their flags from a full Redis command.
937 938 939 |
# File 'lib/valkey/commands/server_commands.rb', line 937 def command_get_keys_and_flags(*command) send_command(RequestType::COMMAND_GET_KEYS_AND_FLAGS, command) end |
#command_info(*commands) ⇒ Array
Return information about one or more commands.
954 955 956 957 |
# File 'lib/valkey/commands/server_commands.rb', line 954 def command_info(*commands) args = commands.empty? ? [] : commands send_command(RequestType::COMMAND_INFO, args) end |
#command_list(filterby: nil, aclcat: nil, pattern: nil) ⇒ Array<String>
Return an array of command names.
978 979 980 981 982 983 984 985 986 |
# File 'lib/valkey/commands/server_commands.rb', line 978 def command_list(filterby: nil, aclcat: nil, pattern: nil) args = [] if aclcat args << "FILTERBY" << "ACLCAT" << aclcat elsif filterby && pattern args << "FILTERBY" << filterby << pattern end send_command(RequestType::COMMAND_LIST, args) end |
#config(action, *args) ⇒ String, Hash
Get or set server configuration parameters.
31 32 33 |
# File 'lib/valkey/commands/server_commands.rb', line 31 def config(action, *args) send("config_#{action.to_s.downcase}", *args) end |
#config_get(*args, route: nil) ⇒ Hash, String
Get server configuration parameters.
Sends the CONFIG GET command with the given arguments.
48 49 50 51 52 53 54 55 56 |
# File 'lib/valkey/commands/server_commands.rb', line 48 def config_get(*args, route: nil) send_command(RequestType::CONFIG_GET, args, route: route) do |reply| if reply.is_a?(Array) Hash[*reply] else reply end end end |
#config_resetstat(route: nil) ⇒ String
Reset the server's statistics.
Sends the CONFIG RESETSTAT command.
81 82 83 |
# File 'lib/valkey/commands/server_commands.rb', line 81 def config_resetstat(route: nil) send_command(RequestType::CONFIG_RESET_STAT, [], route: route) end |
#config_rewrite(route: nil) ⇒ String
Rewrite the server configuration file.
Sends the CONFIG REWRITE command.
94 95 96 |
# File 'lib/valkey/commands/server_commands.rb', line 94 def config_rewrite(route: nil) send_command(RequestType::CONFIG_REWRITE, [], route: route) end |
#config_set(*args, route: nil) ⇒ String
Set server configuration parameters.
Sends the CONFIG SET command with the given key-value pairs.
68 69 70 |
# File 'lib/valkey/commands/server_commands.rb', line 68 def config_set(*args, route: nil) send_command(RequestType::CONFIG_SET, args, route: route) end |
#dbsize(route: nil) ⇒ Integer
Return the number of keys in the selected database.
102 103 104 |
# File 'lib/valkey/commands/server_commands.rb', line 102 def dbsize(route: nil) send_command(RequestType::DB_SIZE, [], route: route) end |
#debug(*args) ⇒ Object
RequestType::DEBUG not exist
246 247 248 |
# File 'lib/valkey/commands/server_commands.rb', line 246 def debug(*args) send_command(RequestType::DEBUG, args) end |
#failover(to: nil, force: false, abort: false, timeout: nil) ⇒ String
Perform a manual failover of a master to one of its replicas.
521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 |
# File 'lib/valkey/commands/server_commands.rb', line 521 def failover(to: nil, force: false, abort: false, timeout: nil) args = [] if abort # ABORT is mutually exclusive: cancels an ongoing failover and # ignores any other arguments (matches the core GLIDE clients). args << "ABORT" else if to host, port = to.split args << "TO" << host << port # FORCE is only valid in combination with TO. args << "FORCE" if force end args << "TIMEOUT" << timeout.to_s if timeout end send_command(RequestType::FAIL_OVER, args) end |
#flushall(options = nil, route: nil) ⇒ String
Remove all keys from all databases.
112 113 114 115 116 117 118 |
# File 'lib/valkey/commands/server_commands.rb', line 112 def flushall( = nil, route: nil) if && [:async] send_command(RequestType::FLUSH_ALL, ["async"], route: route) else send_command(RequestType::FLUSH_ALL, [], route: route) end end |
#flushdb(options = nil, route: nil) ⇒ String
Remove all keys from the current database.
126 127 128 129 130 131 132 |
# File 'lib/valkey/commands/server_commands.rb', line 126 def flushdb( = nil, route: nil) if && [:async] send_command(RequestType::FLUSH_DB, ["async"], route: route) else send_command(RequestType::FLUSH_DB, [], route: route) end end |
#info(cmd = nil, route: nil) ⇒ Hash
Get information and statistics about the server.
139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/valkey/commands/server_commands.rb', line 139 def info(cmd = nil, route: nil) send_command(RequestType::INFO, [cmd].compact, route: route) do |reply| if reply.is_a?(Hash) reply.transform_values { |v| parse_info_reply(v, cmd) } elsif reply.is_a?(String) parse_info_reply(reply, cmd) else reply end end end |
#lastsave(route: nil) ⇒ Integer
Get the UNIX time stamp of the last successful save to disk.
172 173 174 |
# File 'lib/valkey/commands/server_commands.rb', line 172 def lastsave(route: nil) send_command(RequestType::LAST_SAVE, [], route: route) end |
#latency_doctor ⇒ String
Return a human-readable latency analysis report.
679 680 681 |
# File 'lib/valkey/commands/server_commands.rb', line 679 def latency_doctor send_command(RequestType::LATENCY_DOCTOR) end |
#latency_graph(event) ⇒ String
Return an ASCII-art graph of the latency samples for the specified event.
693 694 695 |
# File 'lib/valkey/commands/server_commands.rb', line 693 def latency_graph(event) send_command(RequestType::LATENCY_GRAPH, [event]) end |
#latency_histogram(*commands) ⇒ Array
Return a latency histogram for the specified commands.
710 711 712 713 |
# File 'lib/valkey/commands/server_commands.rb', line 710 def latency_histogram(*commands) args = commands.empty? ? [] : commands send_command(RequestType::LATENCY_HISTOGRAM, args) end |
#latency_history(event) ⇒ Array
Return the latency time series for the specified event.
725 726 727 |
# File 'lib/valkey/commands/server_commands.rb', line 725 def latency_history(event) send_command(RequestType::LATENCY_HISTORY, [event]) end |
#latency_latest ⇒ Array
Return the latest latency samples for all events.
739 740 741 |
# File 'lib/valkey/commands/server_commands.rb', line 739 def latency_latest send_command(RequestType::LATENCY_LATEST) end |
#latency_reset(*events) ⇒ Integer
Reset latency data for all events or specific events.
757 758 759 760 |
# File 'lib/valkey/commands/server_commands.rb', line 757 def latency_reset(*events) args = events.empty? ? [] : events send_command(RequestType::LATENCY_RESET, args) end |
#lolwut(version = nil, route: nil) ⇒ String
Display some computer art and the Valkey version.
553 554 555 556 |
# File 'lib/valkey/commands/server_commands.rb', line 553 def lolwut(version = nil, route: nil) args = version ? ["VERSION", version.to_s] : [] send_command(RequestType::LOLWUT, args, route: route) end |
#memory_doctor ⇒ String
Return a human-readable memory problems report.
771 772 773 |
# File 'lib/valkey/commands/server_commands.rb', line 771 def memory_doctor send_command(RequestType::MEMORY_DOCTOR) end |
#memory_malloc_stats ⇒ String
Return memory allocator statistics.
784 785 786 |
# File 'lib/valkey/commands/server_commands.rb', line 784 def memory_malloc_stats send_command(RequestType::MEMORY_MALLOC_STATS) end |
#memory_purge ⇒ String
Ask the allocator to release memory back to the operating system.
797 798 799 |
# File 'lib/valkey/commands/server_commands.rb', line 797 def memory_purge send_command(RequestType::MEMORY_PURGE) end |
#memory_stats ⇒ Hash
Return memory usage statistics.
810 811 812 813 814 815 816 817 818 |
# File 'lib/valkey/commands/server_commands.rb', line 810 def memory_stats send_command(RequestType::MEMORY_STATS) do |reply| if reply.is_a?(Array) Hash[*reply] else reply end end end |
#memory_usage(key, samples: nil) ⇒ Integer?
Return the memory usage in bytes of a key and its value.
835 836 837 838 839 |
# File 'lib/valkey/commands/server_commands.rb', line 835 def memory_usage(key, samples: nil) args = [key] args << "SAMPLES" << samples.to_s if samples send_command(RequestType::MEMORY_USAGE, args) end |
#monitor {|line| ... } ⇒ Object
Listen for all requests received by the server in real time.
There is no way to interrupt this command.
182 183 184 185 186 187 188 189 190 |
# File 'lib/valkey/commands/server_commands.rb', line 182 def monitor synchronize do |client| client = client.pubsub client.call_v([:monitor]) loop do yield client.next_event end end end |
#psync(replication_id, offset) ⇒ String
Internal command used for replication (partial resynchronization).
569 570 571 |
# File 'lib/valkey/commands/server_commands.rb', line 569 def psync(replication_id, offset) send_command(RequestType::PSYNC, [replication_id, offset.to_s]) end |
#replconf(*args) ⇒ String, Array
Internal command used for replication configuration.
586 587 588 |
# File 'lib/valkey/commands/server_commands.rb', line 586 def replconf(*args) send_command(RequestType::REPL_CONF, args) end |
#replicaof(host, port) ⇒ String
Make the server a replica of another instance, or promote it as master.
604 605 606 |
# File 'lib/valkey/commands/server_commands.rb', line 604 def replicaof(host, port) send_command(RequestType::REPLICA_OF, [host, port.to_s]) end |
#restore_asking(key, ttl, serialized_value, replace: false, absttl: false, idletime: nil, freq: nil) ⇒ String
Internal command used in cluster mode for key migration with ASKING flag.
628 629 630 631 632 633 634 635 |
# File 'lib/valkey/commands/server_commands.rb', line 628 def restore_asking(key, ttl, serialized_value, replace: false, absttl: false, idletime: nil, freq: nil) args = [key, ttl.to_s, serialized_value] args << "REPLACE" if replace args << "ABSTTL" if absttl args << "IDLETIME" << idletime.to_s if idletime args << "FREQ" << freq.to_s if freq send_command(RequestType::RESTORE_ASKING, args) end |
#role ⇒ Array
Return the role of the instance in the context of replication.
651 652 653 |
# File 'lib/valkey/commands/server_commands.rb', line 651 def role send_command(RequestType::ROLE) end |
#save(route: nil) ⇒ String
Synchronously save the dataset to disk.
196 197 198 |
# File 'lib/valkey/commands/server_commands.rb', line 196 def save(route: nil) send_command(RequestType::SAVE, [], route: route) end |
#shutdown ⇒ Object
Synchronously save the dataset to disk and then shut down the server.
201 202 203 204 205 206 207 208 209 210 |
# File 'lib/valkey/commands/server_commands.rb', line 201 def shutdown synchronize do |client| client.disable_reconnection do client.call_v([:shutdown]) rescue ConnectionError # This means Redis has probably exited. nil end end end |
#slaveof(host, port) ⇒ Object
Make the server a slave of another instance, or promote it as master.
213 214 215 |
# File 'lib/valkey/commands/server_commands.rb', line 213 def slaveof(host, port) send_command(RequestType::SLAVE_OF, [host, port]) end |
#slowlog(subcommand, length = nil) ⇒ Array<String>, ...
Interact with the slowlog (get, len, reset)
222 223 224 225 226 |
# File 'lib/valkey/commands/server_commands.rb', line 222 def slowlog(subcommand, length = nil) args = [:slowlog, subcommand] args << Integer(length) if length send_command(args) end |
#swapdb(index1, index2) ⇒ String
Swap two databases.
666 667 668 |
# File 'lib/valkey/commands/server_commands.rb', line 666 def swapdb(index1, index2) send_command(RequestType::SWAP_DB, [index1.to_s, index2.to_s]) end |
#sync ⇒ Object
Internal command used for replication.
229 230 231 |
# File 'lib/valkey/commands/server_commands.rb', line 229 def sync send_command(RequestType::SYNC) end |
#time(route: nil) ⇒ Array<Integer>
Return the server time.
241 242 243 |
# File 'lib/valkey/commands/server_commands.rb', line 241 def time(route: nil) send_command(RequestType::TIME, [], route: route) end |