• 【2023】Redis服务器与客户端操作


    Redis命令的大致运行流程是,由客户端向服务器发起命令,在服务器运行该命令,得到结果后再把结果返回给客户端。
    在实际项目的场景里,一方面可能会通过各种命令观察服务器的配置和运行状态,以此排查和分析实际的问题,另一方面还有可能通过修改各种配置来实现调优的效果。此外,客户端和服务器的对应关系更有可能是一对多的,即多个客户端同时连到一台服务器上。在本文里,将围绕上述实践要点给出Redis服务器和客户端的常用命令以及实践技能。

    1.Redis服务器管理客户端命令

    1.1.获取和设置客户端名字

    可以通过client getname命令来获取客户端的名字,也可以通过client setname命令来设置客户端的名字。

    127.0.0.1:6379> client getname
    (nil)
    127.0.0.1:6379> client setname redis01
    OK
    127.0.0.1:6379> client getname
    "redis01"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    1.2.查看客户端信息

    通过client list命令能看到当前所有连接到服务器的客户端信息

    127.0.0.1:6379> client list
    id=3 addr=127.0.0.1:47312 laddr=127.0.0.1:6379 fd=9 name=redis01 age=24364 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=40928 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 events=r cmd=client user=default redir=-1
    
    • 1
    • 2
    • id表示客户端编号
    • addr表示客户端地址
    • age表示客户端连接时长,单位为秒
    • idle表示客户端空闲时长,单位为秒
    • db表示客户端用到的服务器的数据库索引号,默认每个Redis服务器有16个数据库,而且默认会使用0号数据库。
    • cmd表示客户端最新执行的命令
    • user表示登录服务器用到的用户名

    1.3.暂停客户端

    如果当前Redis服务器负载过大,就可以通过client pause命令暂停执行来自客户端的命令

    client pause timeout
    
    • 1

    timeout表示暂停的时间,单位为毫秒

    1.4.中断客户端连接

    client kill [ip:port]
    
    • 1

    使用时可先使用client list查看客户端ip及端口

    1.5.关闭服务器及客户端

    shutdown命令会终止服务器上的所有客户端连接,并终止服务器。

    127.0.0.1:6379> shutdown
    
    • 1

    2.查看服务器信息

    通过本节给出的info等命令,大家不仅能查看服务器的详细信息,还能观察到服务器所包含命令的详细信息。遇到问题时,可以先用info命令查看客户端、CPU和内存等的相关数据,这样或许能看到一些问题的线索。

    2.1.查看服务器信息

    通过info命令能查看当前服务器server部分的相关信息

    127.0.0.1:6379> info
    # Server
    redis_version:6.2.12
    redis_git_sha1:00000000
    redis_git_dirty:0
    redis_build_id:65331e5b3926860f
    redis_mode:standalone
    os:Linux 4.19.12-1.el7.elrepo.x86_64 x86_64
    arch_bits:64
    monotonic_clock:POSIX clock_gettime
    multiplexing_api:epoll
    atomicvar_api:atomic-builtin
    gcc_version:4.8.5
    process_id:1364
    process_supervised:no
    run_id:f8d152a7d5084861b459def410600788c6f1f653
    tcp_port:6379
    server_time_usec:1687343636684564
    uptime_in_seconds:27619
    uptime_in_days:0
    hz:10
    configured_hz:10
    lru_clock:9622036
    executable:/root/redis-6.2.12/redis-server
    config_file:/root/redis-6.2.12/redis.conf
    io_threads_active:0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    2.2.查看客户端连接情况

    在info后面加上Clients参数就能看到客户端的连接状况

    127.0.0.1:6379> info Clients
    # Clients
    connected_clients:1
    cluster_connections:0
    maxclients:10000
    client_recent_max_input_buffer:24
    client_recent_max_output_buffer:0
    blocked_clients:0
    tracking_clients:0
    clients_in_timeout_table:0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    connected_clients:1表示正在连接的客户端数量

    2.3.观察最大连接数

    运行info Stat命令,在返回结果里有一项rejected_connections,表示因超过最大连接数而被拒绝的客户端连接次数,如果该数值很大,就说明有大量的客户端无法连接上,这可能会影响性能。

    127.0.0.1:6379> info Stats
    
    • 1

    可以增大"maxclients"参数
    可通过config get maxclients查看最大连接数

    127.0.0.1:6379> config get maxclients
    1) "maxclients"
    2) "10000"
    
    • 1
    • 2
    • 3

    2.4.查看每秒执行多少指令

    127.0.0.1:6379> info Stats
    
    instantaneous_ops_per_sec:0
    
    • 1
    • 2
    • 3

    返回结果里有一项表示当前每秒执行多少指令的instantaneous_ops_per_sec参数

    2.5.观察内存用量

    可以通过info memory命令观察当前Redis服务器的内存使用情况

    127.0.0.1:6379> info memory
    
    used_memory_human:858.02K
    used_memory_peak_human:912.77K
    used_memory_lua_human:30.00K
    used_memory_scripts_human:0B
    mem_clients_slaves:0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • used_memory_human,该参数表示操作系统分配给Redis多少内存。
    • used_memory_peak_human,该参数表示Redis服务器用到的内存峰值。
    • used_memory_lua_human,该参数表示lua脚本所占用的内存用量。
    • used_memory_scripts_human,该参数表示脚本所占用的内存用量。
    • mem_clients_slaves,该参数表示因客户端主从复制而使用的内存用量。

    2.6.查看Redis命令

    command命令会返回Redis命令的信息

    127.0.0.1:6379> command -
    
    • 1

    统计当前Redis服务器命令个数

    127.0.0.1:6379> command count
    
    • 1

    2.7.查看指定命令详细信息

    可以通过command info命令查看指定命令的详细信息

    command info key [key...]
    
    • 1
    127.0.0.1:6379> COMMAND INFO set
    1) 1) "set"
       2) (integer) -3
       3) 1) write
          2) denyoom
       4) (integer) 1
       5) (integer) 1
       6) (integer) 1
       7) 1) @write
          2) @string
          3) @slow
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.8.获得指定命令所有键

    通过command getkeys命令能获取指定命令的所有键

    127.0.0.1:6379> COMMAND GETKEYS mset name004 004 age004 400
    1) "name004"
    2) "age004"
    127.0.0.1:6379> COMMAND GETKEYS set name005 005
    1) "name005"
    
    • 1
    • 2
    • 3
    • 4
    • 5

    3.查看并修改服务器常用配置

    之前在启动Redis服务器时用到的都是默认的配置,所以连接密码和端口等参数都是默认的。除此之外,还能通过命令来修改服务器的配置,从而实现基于项目的定制化效果。

    3.1.查看服务器配置

    可以通过config get命令来查看服务器的配置

    config get *
    config get p*
    
    • 1
    • 2

    第一行是查看所有配置
    第二行是查看以p开头的配置

    3.2.设置密码

    通过config set命令能修改服务器的配置

    127.0.0.1:6379> CONFIG SET requirepass 123456
    
    • 1

    通过命令修改无需重启即可生效,但会在重启后失效

    登陆后输入auth 123456即可操作

    3.3.改写Redis配置文件

    config set命令修改的配置项会在Redis服务器重启后失效,如果想让修改后的配置项一直生效,则需要在config set命令后运行config rewrite命令

    127.0.0.1:6379> config set requirepass 123456
    OK
    127.0.0.1:6379> config rewrite
    
    • 1
    • 2
    • 3

    4.多个客户端连接远端服务器

    在之前的范例中,Redis服务器和客户端是在同一个Docker容器中的,即用本地的Redis客户端连接本地的Redis服务器。在实际的项目里,作为Redis客户端的应用程序往往会连接到远端(非本地)的Redis服务器上,而且一个Redis服务器上会有多个Redis客户端连接。

    连接远端服务器:

    redis-cli -h > -p > -P > -u > -p >
    
    • 1
    • host:服务器IP地址
    • port:服务器端口
    • db:服务器数据库号
    • username、password:使用者身份验证
  • 相关阅读:
    Qt 程序打包发布-windeployqt工具
    第十一周周报
    Thread线程启动的多种方式
    9月30日计算机视觉基础学习笔记——优化算法
    高可用集群HA、LVS+Keepalived、健康检测
    基于Prometheus+Grafana搭建可视化监控服务 (一) Prometheus监控
    SpringBoot+Vue项目多文件上传同时上传其他参数
    云联盟 零信任实战框架 学习记录
    Vue3 + TypeSciprt+Vant 项目框架构建
    [HNOI2010]弹飞绵羊【LCT】
  • 原文地址:https://blog.csdn.net/qq_42527269/article/details/131332124