• 【Redis】常用命令介绍


    一、Redis常用基本命令

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

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

    复制代码
    #可以使用help命令查看各redis命令用法
    [root@Client-Ubuntu-1804-250:~]# redis-cli -a redis --no-auth-warning help redis-cli 5.0.14 To 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 exit To set redis-cli preferences: ":set hints" enable online hints ":set nohints" disable online hints Set 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: string
    
    127.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: server
    
    127.0.0.1:6379> info
    # Server
    redis_version:5.0.14
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:5d32a2d9ed5f67d5
    redis_mode:standalone
    os:Linux 4.15.0-210-generic x86_64
    arch_bits:64
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:7.5.0
    process_id:6069
    run_id:0e67fcd27ff6ae2589ff90ac2516bd52269f2965
    tcp_port:6379
    uptime_in_seconds:924
    uptime_in_days:0
    hz:10
    configured_hz:10
    lru_clock:5745912
    executable:/app/redis/bin/redis-server
    config_file:/app/redis/etc/redis_6379.conf
    
    # Clients
    connected_clients:1
    client_recent_max_input_buffer:2
    client_recent_max_output_buffer:0
    blocked_clients:0
    
    # Memory
    used_memory:943496
    used_memory_human:921.38K
    used_memory_rss:7237632
    used_memory_rss_human:6.90M
    used_memory_peak:943496
    used_memory_peak_human:921.38K
    used_memory_peak_perc:100.11%
    used_memory_overhead:898934
    used_memory_startup:791488
    used_memory_dataset:44562
    used_memory_dataset_perc:29.32%
    allocator_allocated:1129952
    allocator_active:1409024
    allocator_resident:14368768
    total_system_memory:1006243840
    total_system_memory_human:959.63M
    used_memory_lua:37888
    used_memory_lua_human:37.00K
    used_memory_scripts:0
    used_memory_scripts_human:0B
    number_of_cached_scripts:0
    maxmemory:0
    maxmemory_human:0B
    maxmemory_policy:noeviction
    allocator_frag_ratio:1.25
    allocator_frag_bytes:279072
    allocator_rss_ratio:10.20
    allocator_rss_bytes:12959744
    rss_overhead_ratio:0.50
    rss_overhead_bytes:-7131136
    mem_fragmentation_ratio:8.03
    mem_fragmentation_bytes:6336128
    mem_not_counted_for_evict:1368
    mem_replication_backlog:0
    mem_clients_slaves:0
    mem_clients_normal:49694
    mem_aof_buffer:1368
    mem_allocator:jemalloc-5.1.0
    active_defrag_running:0
    lazyfree_pending_objects:0
    
    # Persistence
    loading:0
    rdb_changes_since_last_save:658
    rdb_bgsave_in_progress:0
    rdb_last_save_time:1683467492
    rdb_last_bgsave_status:ok
    rdb_last_bgsave_time_sec:0
    rdb_current_bgsave_time_sec:-1
    rdb_last_cow_size:233472
    aof_enabled:1
    aof_rewrite_in_progress:0
    aof_rewrite_scheduled:0
    aof_last_rewrite_time_sec:-1
    aof_current_rewrite_time_sec:-1
    aof_last_bgrewrite_status:ok
    aof_last_write_status:ok
    aof_last_cow_size:0
    aof_current_size:40803
    aof_base_size:0
    aof_pending_rewrite:0
    aof_buffer_length:0
    aof_rewrite_buffer_length:0
    aof_pending_bio_fsync:0
    aof_delayed_fsync:0
    
    # Stats
    total_connections_received:12
    total_commands_processed:1019
    instantaneous_ops_per_sec:0
    total_net_input_bytes:41255
    total_net_output_bytes:46481
    instantaneous_input_kbps:0.00
    instantaneous_output_kbps:0.00
    rejected_connections:0
    sync_full:0
    sync_partial_ok:0
    sync_partial_err:0
    expired_keys:0
    expired_stale_perc:0.00
    expired_time_cap_reached_count:0
    evicted_keys:0
    keyspace_hits:0
    keyspace_misses:0
    pubsub_channels:0
    pubsub_patterns:0
    latest_fork_usec:523
    migrate_cached_sockets:0
    slave_expires_tracked_keys:0
    active_defrag_hits:0
    active_defrag_misses:0
    active_defrag_key_hits:0
    active_defrag_key_misses:0
    
    # Replication
    role:master
    connected_slaves:0
    master_replid:518de7012facc8a7fe780ed4eb5f4de015f01d56
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:0
    second_repl_offset:-1
    repl_backlog_active:0
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:0
    repl_backlog_histlen:0
    
    # CPU
    used_cpu_sys:0.365552
    used_cpu_user:0.570244
    used_cpu_sys_children:0.000000
    used_cpu_user_children:0.001215
    
    # Cluster
    cluster_enabled:0
    
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    info

    可以在INFO 后补充筛选内容

    复制代码
    #查看当前节点CPU信息
    127.0.0.1:6379> info CPU
    # CPU
    used_cpu_sys:0.508881
    used_cpu_user:0.848135
    used_cpu_sys_children:0.000000
    used_cpu_user_children:0.003046
    
    #查看当前节点Server信息
    127.0.0.1:6379> info Server
    # Server
    redis_version:5.0.14
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:5d32a2d9ed5f67d5
    redis_mode:standalone
    os:Linux 4.15.0-210-generic x86_64
    arch_bits:64
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:7.5.0
    process_id:6069
    run_id:0e67fcd27ff6ae2589ff90ac2516bd52269f2965
    tcp_port:6379
    uptime_in_seconds:1358
    uptime_in_days:0
    hz:10
    configured_hz:10
    lru_clock:5746346
    executable:/app/redis/bin/redis-server
    config_file:/app/redis/etc/redis_6379.conf
    复制代码

     

     2、SELECT

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

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

    10.0.0.20:6379> info cluster
    # Cluster
    cluster_enabled:1
    10.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: connection
    
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> select 2
    OK
    127.0.0.1:6379[2]> select 3
    OK
    127.0.0.1:6379[3]> 
    select

     

     3、KEYS

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

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

     

    复制代码
    127.0.0.1:6379> select 1
    OK
    127.0.0.1:6379[1]> keys *
    (empty list or set)
    127.0.0.1:6379[1]> info KeySpace
    # Keyspace
    db0: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"
    
    #展示当前数据库内的所有key
    127.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: server
    
    127.0.0.1:6379> bgsave
    Background 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: server
    
    127.0.0.1:6379> dbsize
    (integer) 1000
    127.0.0.1:6379> select 1
    OK
    127.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: server
    
    
    127.0.0.1:6379[1]> info KeySpace
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    db1:keys=4,expires=0,avg_ttl=0
    
    #清空db1中的所有键值,不会影响到db0中的数据
    127.0.0.1:6379[1]> flushdb
    OK
    127.0.0.1:6379[1]> info KeySpace
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    127.0.0.1:6379[1]> 
    复制代码

     

     7、FLUSHALL

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

    复制代码
    127.0.0.1:6379> info KeySpace
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    db1:keys=4,expires=0,avg_ttl=0
    127.0.0.1:6379> flushall
    OK
    127.0.0.1:6379> info KeySpace
    # Keyspace
    127.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: server
    
    127.0.0.1:6379> shutdown
    not connected> 
    not connected> 
    not connected> exit
    
    [root@Client-Ubuntu-1804-250:~]# ps -aux | grep redis | grep ^grep
    [root@Client-Ubuntu-1804-250:~]# ss -ntlp
    State      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 oO0OoO0OoO0Oo 6682:C 07 May 2023 23:20:57.411 # Redis version=5.0.14, bits=64, commit=00000000, modified=0, pid=6682, just started 6682:C 07 May 2023 23:20:57.411 # Configuration loaded 6682:C 07 May 2023 23:20:57.411 * supervised by systemd, will signal readiness 6682:M 07 May 2023 23:20:57.417 * Running mode=standalone, port=6379. 6682:M 07 May 2023 23:20:57.419 # Server initialized 6682: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
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    127.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
    # Keyspace
    db0:keys=1000,expires=0,avg_ttl=0
    127.0.0.1:6379> 
    127.0.0.1:6379> REMOVE-THIS-DATABASE
    OK
    127.0.0.1:6379> info keySpace
    # Keyspace
    127.0.0.1:6379> 
    复制代码

     

  • 相关阅读:
    CMakeLists编译前拷贝文件或目录
    从0到1学SpringCloud——12 gateway 动态配置网关路由规则
    漏洞复现 - - -Docker未授权访问漏洞
    IDEA中Docker相关操作的使用教程
    lc[链表]---203.移除链表元素
    Spring Boot整合OAuth2实现GitHub第三方登录
    Unity开发之C#基础-File文件读取
    JavaScript奇淫技巧:清理无效的垃圾代码
    iOS 新建本地数据库FMDB
    关于A level的习题答案
  • 原文地址:https://www.cnblogs.com/Janzen-q/p/17320421.html