您现在的位置是 : 首页  >  时尚前沿  > 正文

每日消息!【Redis】常用命令介绍

日期:2023-05-08 04:58:11 来源:博客园
一、Redis常用基本命令

官方文档:https://redis.io/commands/

参考文档:http://redisdoc.com/


(相关资料图)

#可以使用help命令查看各redis命令用法[root@Client-Ubuntu-1804-250:~]# redis-cli -a redis --no-auth-warning helpredis-cli 5.0.14To get help about Redis commands type:      "help @" to get a list of commands in       "help " for help on       "help " to get a list of possible help topics      "quit" to exitTo set redis-cli preferences:      ":set hints" enable online hints      ":set nohints" disable online hintsSet your preferences in ~/.redisclirc
[root@Client-Ubuntu-1804-250:~]# redis-cli -a redis --no-auth-warning#查看info命令帮助127.0.0.1:6379> help info  INFO [section]  summary: Get information and statistics about the server  since: 1.0.0  group: server#查看set命令帮助127.0.0.1:6379> help set  SET key value [expiration EX seconds|PX milliseconds] [NX|XX]  summary: Set the string value of a key  since: 1.0.0  group: string127.0.0.1:6379> 
1、INFO

查看当前节点运行状态

127.0.0.1:6379> help info  INFO [section]  summary: Get information and statistics about the server  since: 1.0.0  group: server127.0.0.1:6379> info# Serverredis_version:5.0.14redis_git_sha1:00000000redis_git_dirty:0redis_build_id:5d32a2d9ed5f67d5redis_mode:standaloneos:Linux 4.15.0-210-generic x86_64arch_bits:64multiplexing_api:epollatomicvar_api:atomic-builtingcc_version:7.5.0process_id:6069run_id:0e67fcd27ff6ae2589ff90ac2516bd52269f2965tcp_port:6379uptime_in_seconds:924uptime_in_days:0hz:10configured_hz:10lru_clock:5745912executable:/app/redis/bin/redis-serverconfig_file:/app/redis/etc/redis_6379.conf# Clientsconnected_clients:1client_recent_max_input_buffer:2client_recent_max_output_buffer:0blocked_clients:0# Memoryused_memory:943496used_memory_human:921.38Kused_memory_rss:7237632used_memory_rss_human:6.90Mused_memory_peak:943496used_memory_peak_human:921.38Kused_memory_peak_perc:100.11%used_memory_overhead:898934used_memory_startup:791488used_memory_dataset:44562used_memory_dataset_perc:29.32%allocator_allocated:1129952allocator_active:1409024allocator_resident:14368768total_system_memory:1006243840total_system_memory_human:959.63Mused_memory_lua:37888used_memory_lua_human:37.00Kused_memory_scripts:0used_memory_scripts_human:0Bnumber_of_cached_scripts:0maxmemory:0maxmemory_human:0Bmaxmemory_policy:noevictionallocator_frag_ratio:1.25allocator_frag_bytes:279072allocator_rss_ratio:10.20allocator_rss_bytes:12959744rss_overhead_ratio:0.50rss_overhead_bytes:-7131136mem_fragmentation_ratio:8.03mem_fragmentation_bytes:6336128mem_not_counted_for_evict:1368mem_replication_backlog:0mem_clients_slaves:0mem_clients_normal:49694mem_aof_buffer:1368mem_allocator:jemalloc-5.1.0active_defrag_running:0lazyfree_pending_objects:0# Persistenceloading:0rdb_changes_since_last_save:658rdb_bgsave_in_progress:0rdb_last_save_time:1683467492rdb_last_bgsave_status:okrdb_last_bgsave_time_sec:0rdb_current_bgsave_time_sec:-1rdb_last_cow_size:233472aof_enabled:1aof_rewrite_in_progress:0aof_rewrite_scheduled:0aof_last_rewrite_time_sec:-1aof_current_rewrite_time_sec:-1aof_last_bgrewrite_status:okaof_last_write_status:okaof_last_cow_size:0aof_current_size:40803aof_base_size:0aof_pending_rewrite:0aof_buffer_length:0aof_rewrite_buffer_length:0aof_pending_bio_fsync:0aof_delayed_fsync:0# Statstotal_connections_received:12total_commands_processed:1019instantaneous_ops_per_sec:0total_net_input_bytes:41255total_net_output_bytes:46481instantaneous_input_kbps:0.00instantaneous_output_kbps:0.00rejected_connections:0sync_full:0sync_partial_ok:0sync_partial_err:0expired_keys:0expired_stale_perc:0.00expired_time_cap_reached_count:0evicted_keys:0keyspace_hits:0keyspace_misses:0pubsub_channels:0pubsub_patterns:0latest_fork_usec:523migrate_cached_sockets:0slave_expires_tracked_keys:0active_defrag_hits:0active_defrag_misses:0active_defrag_key_hits:0active_defrag_key_misses:0# Replicationrole:masterconnected_slaves:0master_replid:518de7012facc8a7fe780ed4eb5f4de015f01d56master_replid2:0000000000000000000000000000000000000000master_repl_offset:0second_repl_offset:-1repl_backlog_active:0repl_backlog_size:1048576repl_backlog_first_byte_offset:0repl_backlog_histlen:0# CPUused_cpu_sys:0.365552used_cpu_user:0.570244used_cpu_sys_children:0.000000used_cpu_user_children:0.001215# Clustercluster_enabled:0# Keyspacedb0:keys=1000,expires=0,avg_ttl=0
info

可以在INFO 后补充筛选内容

#查看当前节点CPU信息127.0.0.1:6379> info CPU# CPUused_cpu_sys:0.508881used_cpu_user:0.848135used_cpu_sys_children:0.000000used_cpu_user_children:0.003046#查看当前节点Server信息127.0.0.1:6379> info Server# Serverredis_version:5.0.14redis_git_sha1:00000000redis_git_dirty:0redis_build_id:5d32a2d9ed5f67d5redis_mode:standaloneos:Linux 4.15.0-210-generic x86_64arch_bits:64multiplexing_api:epollatomicvar_api:atomic-builtingcc_version:7.5.0process_id:6069run_id:0e67fcd27ff6ae2589ff90ac2516bd52269f2965tcp_port:6379uptime_in_seconds:1358uptime_in_days:0hz:10configured_hz:10lru_clock:5746346executable:/app/redis/bin/redis-serverconfig_file:/app/redis/etc/redis_6379.conf
2、SELECT

切换数据库,类似于MySQL是 USE DATABASES;

在Cluster模式下不支持多DB模式,会出现以下错误提示

10.0.0.20:6379> info cluster# Clustercluster_enabled:110.0.0.20:6379> select 1(error) ERR SELECT is not allowed in cluster mode
127.0.0.1:6379> help select  SELECT index  summary: Change the selected database for the current connection  since: 1.0.0  group: connection127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> select 2OK127.0.0.1:6379[2]> select 3OK127.0.0.1:6379[3]> 
select3、KEYS

查看当前数据库下所有的key(数据量大时会对数据库造成巨大压力,此命令慎用)

此命令仅查询当前db下的数据

127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> keys *(empty list or set)127.0.0.1:6379[1]> info KeySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0
127.0.0.1:6379> help keys  KEYS pattern  summary: Find all keys matching the given pattern  since: 1.0.0  group: generic#? 占位符127.0.0.1:6379> keys key_? 1) "key_8" 2) "key_5" 3) "key_4" 4) "key_9" 5) "key_0" 6) "key_2" 7) "key_1" 8) "key_3" 9) "key_6"10) "key_7"127.0.0.1:6379> keys key_2? 1) "key_27" 2) "key_28" 3) "key_22" 4) "key_26" 5) "key_21" 6) "key_20" 7) "key_25" 8) "key_23" 9) "key_24"10) "key_29"#* 通配#127.0.0.1:6379> keys key_9*  1) "key_995"  2) "key_957"  3) "key_988"  4) "key_98"  5) "key_990"  6) "key_959"  7) "key_949"  8) "key_984"  9) "key_999" 10) "key_950" 11) "key_976" 12) "key_912" 13) "key_991" 14) "key_944" 15) "key_987" 16) "key_954" 17) "key_981" 18) "key_951" 19) "key_998" 20) "key_916" 21) "key_986" 22) "key_933" 23) "key_996" 24) "key_918" 25) "key_942" 26) "key_906" 27) "key_925" 28) "key_965" 29) "key_964" 30) "key_917" 31) "key_9" 32) "key_95" 33) "key_994" 34) "key_94" 35) "key_961" 36) "key_901" 37) "key_962" 38) "key_909" 39) "key_971" 40) "key_966" 41) "key_968" 42) "key_913" 43) "key_960" 44) "key_937" 45) "key_977" 46) "key_90" 47) "key_926" 48) "key_93" 49) "key_955" 50) "key_970" 51) "key_939" 52) "key_908" 53) "key_929" 54) "key_972" 55) "key_902" 56) "key_948" 57) "key_956" 58) "key_930" 59) "key_978" 60) "key_99" 61) "key_924" 62) "key_915" 63) "key_943" 64) "key_932" 65) "key_928" 66) "key_914" 67) "key_982" 68) "key_905" 69) "key_974" 70) "key_979" 71) "key_940" 72) "key_941" 73) "key_958" 74) "key_997" 75) "key_993" 76) "key_922" 77) "key_92" 78) "key_980" 79) "key_934" 80) "key_911" 81) "key_946" 82) "key_923" 83) "key_945" 84) "key_992" 85) "key_969" 86) "key_921" 87) "key_910" 88) "key_936" 89) "key_983" 90) "key_903" 91) "key_989" 92) "key_931" 93) "key_919" 94) "key_953" 95) "key_947" 96) "key_96" 97) "key_935" 98) "key_91" 99) "key_907"100) "key_952"101) "key_927"102) "key_967"103) "key_904"104) "key_900"105) "key_938"106) "key_973"107) "key_97"108) "key_920"109) "key_985"110) "key_963"111) "key_975"#展示当前数据库内的所有key127.0.0.1:6379> keys * ...... 987) "key_172" 988) "key_64" 989) "key_79" 990) "key_801" 991) "key_502" 992) "key_144" 993) "key_514" 994) "key_615" 995) "key_197" 996) "key_84" 997) "key_681" 998) "key_572" 999) "key_656"1000) "key_805"
4、BGSAVE

手动触发后台执行save操作

127.0.0.1:6379> 127.0.0.1:6379> help bgsave  BGSAVE -  summary: Asynchronously save the dataset to disk  since: 1.0.0  group: server127.0.0.1:6379> bgsaveBackground saving started
5、DBSIZE

返回当前数据库下的所有key数量

127.0.0.1:6379> help dbsize  DBSIZE -  summary: Return the number of keys in the selected database  since: 1.0.0  group: server127.0.0.1:6379> dbsize(integer) 1000127.0.0.1:6379> select 1OK127.0.0.1:6379[1]> dbsize(integer) 0
6、FLUSHDB

强制清空当前数据库中的所有key,不会影响其他db中的数据,谨慎使用

127.0.0.1:6379> help flushdb  FLUSHDB [ASYNC]  summary: Remove all keys from the current database  since: 1.0.0  group: server127.0.0.1:6379[1]> info KeySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0db1:keys=4,expires=0,avg_ttl=0#清空db1中的所有键值,不会影响到db0中的数据127.0.0.1:6379[1]> flushdbOK127.0.0.1:6379[1]> info KeySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0127.0.0.1:6379[1]> 
7、FLUSHALL

强制清空当前redis节点上所有数据库中的所有key,即删除当前节点所有数据,谨慎使用,必要情况建议禁用此命令

127.0.0.1:6379> info KeySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0db1:keys=4,expires=0,avg_ttl=0127.0.0.1:6379> flushallOK127.0.0.1:6379> info KeySpace# Keyspace127.0.0.1:6379> 
8、SHUTDOWN

时间复杂度:O(N) N为需要保存的数据库键数量

SHUTDOWN执行过程:

停止所有客户端连接如果至少有一个保存节点在等待,执行SAVE操作如果AOF开启,更新AOF内容关闭 Redis Server

如果开启了持久化配置,SHUTDOWN命令可以保障服务器正常关闭而数据不丢失

如果单纯执行SAVE之后,执行 QUIT 命令,则无法保证数据不丢失,SAVE执行完成后,执行 QUIT 命令的过程中,服务器可能依旧存在与客户端的访问连接,会造成这期间数据的丢失。

127.0.0.1:6379> help shutdown  SHUTDOWN [NOSAVE|SAVE]  summary: Synchronously save the dataset to disk and then shut down the server  since: 1.0.0  group: server127.0.0.1:6379> shutdownnot connected> not connected> not connected> exit[root@Client-Ubuntu-1804-250:~]# ps -aux | grep redis | grep ^grep[root@Client-Ubuntu-1804-250:~]# ss -ntlpState      Recv-Q      Send-Q             Local Address:Port             Peer Address:Port                                                      LISTEN     0           128                127.0.0.53%lo:53                    0.0.0.0:*          users:(("systemd-resolve",pid=867,fd=13))      LISTEN     0           128                      0.0.0.0:22                    0.0.0.0:*          users:(("sshd",pid=978,fd=3))                  LISTEN     0           128                    127.0.0.1:6010                  0.0.0.0:*          users:(("sshd",pid=1661,fd=10))                LISTEN     0           128                    127.0.0.1:6011                  0.0.0.0:*          users:(("sshd",pid=1661,fd=15))                LISTEN     0           128                         [::]:22                       [::]:*          users:(("sshd",pid=978,fd=4))                  LISTEN     0           128                        [::1]:6010                     [::]:*          users:(("sshd",pid=1661,fd=9))                 LISTEN     0           128                        [::1]:6011                     [::]:*          users:(("sshd",pid=1661,fd=12)) 
禁用Redis命令(rename配置)

可通过配置文件中的 rename-comand "" 对原有命令进行重命名(通常用于对高危命令进行管控)

#在启用aof情况下,禁用或重命名命令可能会导致redis服务无法启动,是因为实例在之前执行被重命名的命令,导致加载aof时,命令执行失败6682:C 07 May 2023 23:20:57.411 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo6682:C 07 May 2023 23:20:57.411 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=6682, just started6682:C 07 May 2023 23:20:57.411 # Configuration loaded6682:C 07 May 2023 23:20:57.411 * supervised by systemd, will signal readiness6682:M 07 May 2023 23:20:57.417 * Running mode=standalone, port=6379.6682:M 07 May 2023 23:20:57.419 # Server initialized6682:M 07 May 2023 23:20:57.420 # Unknown command "flushdb" reading the append only file

解决方案:

1、禁用aof选项

2、修改配置重启服务之前,执行 bgrewriteaof 重新生成aof内容

# Command renaming.## It is possible to change the name of dangerous commands in a shared# environment. For instance the CONFIG command may be renamed into something# hard to guess so that it will still be available for internal-use tools# but not available for general clients.## Example:## rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52## It is also possible to completely kill a command by renaming it into# an empty string:## rename-command CONFIG ""## Please note that changing the name of commands that are logged into the# AOF file or transmitted to replicas may cause problems.renmae-comand FLUSHALL ""rename-comand FULSHDB "REMOVE-THIS-DATABASE"
127.0.0.1:6379> info keySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0127.0.0.1:6379> flushall(error) ERR unknown command `flushall`, with args beginning with: 127.0.0.1:6379> flushdb(error) ERR unknown command `flushdb`, with args beginning with: 127.0.0.1:6379> info keySpace# Keyspacedb0:keys=1000,expires=0,avg_ttl=0127.0.0.1:6379> 127.0.0.1:6379> REMOVE-THIS-DATABASEOK127.0.0.1:6379> info keySpace# Keyspace127.0.0.1:6379> 

标签:

推荐