zoukankan      html  css  js  c++  java
  • redis redis常用命令及内存分析总结(附RedisClient工具简介

    redis常用命令及内存分析总结(RedisClient工具简介

    by:授客 QQ1033553122

     

    redis-cli工具

    查看帮助

    连接redis数据库

    常用命令

    exists key

    set key value

    get key

    mget key1, key2, key3,……

    del key

    keys * 

    flushdb

    quit

    info

    内存分析

    客户端连接分析

    RedisClient简介

     

     

    redis-cli工具

     

    客户端,用于连接redis,位于 redis_install_home/bin/目录下

     

    $ cd /app/redis/bin/

    $ ls

    redis-benchmark  redis-check-aof  redis-check-dump  redis-cli  redis-sentinel  redis-server

     

     

    查看帮助

    ./redis-cli –h 

     

    连接redis数据库

    ./redis-cli -h 10.202.40.105 -p 8080

     

    ./redis-cli -h 10.202.40.105 -p 8080 -a admin435

     

    说明:

    -h 主机ip,默认是127.0.0.1

    -p 端口,默认是6379

    -a 密码  如果redis需要认证,但是连接时,没使用密码参数选项,即 –a <</font>密码>,进行一些操作时可能会提示需要授权认证,形如以下:

    10.202.40.105:8080> info

    (error) NOAUTH Authentication required.  

     

    解决方法:先执行auth命令,再执行目标操作

    10.202.40.105:8080> auth "your_redis_password"

    10.202.40.105:8080> info

     

     

    常用命令

    exists key

    判断key是否存在

     

    .判断key shouke是否存在

    10.202.40.105:8080> exists shouke

    (integer) 0

     

    说明:0,代表此key不存在;1代表存在。

     

    set key value

    设置key值为指定值valuekey是否存在不影响命令的执行

     

    .设置key redistest3230的值为testvalue

    10.202.40.105:8080> set redistest3230 testvalue

     

    get key

    获取键对应的值

     

    获取key redistest3230的值

    10.202.40.105:8080> get redistest3230

     

    mget key1, key2, key3,……

    一次性获取多个键对应的值

     

    .一次获取redistest3230redistest3231对应的值

    10.202.40.105:8080> mget redistest3230 redistest3231

    1) "xacxedx00x05srx00x13java.util.ArrayListxx81xd2x1dx99xc7ax9dx03x00x01Ix00x04sizexpx00x00x00x00wx04x00x00x00x00x"

    2) "xacxedx00x05srx00x13java.util.ArrayListxx81xd2x1dx99xc7ax9dx03x00x01Ix00x04sizexpx00x00x00x00wx04x00x00x00x00x"

     

    del key

    删除键及对应的值

     

    删除键redistest3230及对应值

    10.202.40.105:8080> del redistest3230 

     

    keys * 

    获取所有键

    10.202.40.105:8080> keys *

    1) "ddt:pf:msg:pushed:186176"

    2) "ddt:industry:pfce:190339:1"

    3) "ddt:pf:msg:pushed:190109"

    4) "ddt:pf:msg:pushed:189437"

     

    flushdb

    命令用于清空当前数据库中的所有 key

    10.202.40.105:8080> flushdb

    OK

     

    quit

    退出

    10.202.40.105:8080> quit

     

    info

    查看redis相关的一些统计信息,如cpu,内存信息等

     

    10.202.40.105:8080> info

    # Server

    redis_version:2.8.19

    redis_git_sha1:00000000

    redis_git_dirty:0

    redis_build_id:227b3426abec2acc

    redis_mode:standalone

    os:Linux 2.6.32-504.el6.x86_64 x86_64

    arch_bits:64

    multiplexing_api:epoll

    gcc_version:4.4.7

    process_id:32916

    run_id:d62082b420aa1f25f137b31d9adbfe4c09f0147f

    tcp_port:8080

    uptime_in_seconds:267069

    uptime_in_days:3

    hz:10

    lru_clock:1923941

    config_file:/app/redis/conf/DDT_CORE_CNSZ22_REDIS_CACHE_SVR_01.conf

     

    # Clients

    connected_clients:15

    client_longest_output_list:0

    client_biggest_input_buf:0

    blocked_clients:0

     

    # Memory

    used_memory:12499240

    used_memory_human:11.92M

    used_memory_rss:21557248

    used_memory_peak:31953152

    used_memory_peak_human:30.47M

    used_memory_lua:35840

    mem_fragmentation_ratio:1.72

    mem_allocator:jemalloc-3.6.0

     

    # Persistence

    loading:0

    rdb_changes_since_last_save:553

    rdb_bgsave_in_progress:0

    rdb_last_save_time:1495096122

    rdb_last_bgsave_status:ok

    rdb_last_bgsave_time_sec:0

    rdb_current_bgsave_time_sec:-1

    aof_enabled:0

    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

     

    # Stats

    total_connections_received:1136

    total_commands_processed:2337688

    instantaneous_ops_per_sec:41

    total_net_input_bytes:270205795

    total_net_output_bytes:849151967

    instantaneous_input_kbps:7.80

    instantaneous_output_kbps:17.89

    rejected_connections:0

    sync_full:1

    sync_partial_ok:0

    sync_partial_err:0

    expired_keys:13924

    evicted_keys:0

    keyspace_hits:111573

    keyspace_misses:210756

    pubsub_channels:1

    pubsub_patterns:0

    latest_fork_usec:864

     

    # Replication

    role:master

    connected_slaves:1

    slave0:ip=10.202.40.107,port=8080,state=online,offset=222468069,lag=1

    master_repl_offset:222474508

    repl_backlog_active:1

    ‭‭ 2017/5/18 21:00:01

    repl_backlog_size:1048576

    repl_backlog_first_byte_offset:221425933

    repl_backlog_histlen:1048576

     

    # CPU

    used_cpu_sys:197.87

    used_cpu_user:158.20

    used_cpu_sys_children:3.28

    used_cpu_user_children:13.11

     

    # Keyspace

    db0:keys=13332,expires=13332,avg_ttl=82839728

    10.202.40.105:8080>

     

    内存分析

    # Memory

    used_memory:30644632  //redis分配器分配的,数据占用的内存大小(字节为单位),网上说是Redis实例中所有key及其value占用的内存大小,即个人理解,应该说主要是实例中所有key及其value占用的内存大小,因为即便执行flushdb命令,该参数仍不为0

     

    used_memory_human:29.22M //used_memory,使用M为单位,更易读

     

    used_memory_rss:38871040 // 操作系统分配给redis物理内存大小(字节为单位,包括内存碎片),这个值和 top  ps 等命令的输出一致。

     

    used_memory_peak:30774512 //redis使用的内存峰值(字节为单位,包括虚拟内存)

     

    used_memory_peak_human:29.35M //used_memory_peak,使用M为单位,更易读

     

    used_memory_lua:35840  // Lua 引擎所使用的内存大小(以字节为单位)

     

    mem_fragmentation_ratio:1.27 //内存碎片比率:used_memory_rss/ used_memory mem_fragmentation_ratio小于1,表示redis已使用swap分区

     

    mem_allocator:jemalloc-3.6.0 //在编译时指定的, Redis 所使用的内存分配器。可以是 libc  jemalloc 或者 tcmalloc

     

    总的来说

    1  used_memory_rss 的值通常会比 used_memory 稍微高一点,因为有内存碎片。

     

    2) 当used_memory_rss > used_memory_peak,且两者的值相差较大时,表示存在内存碎片。

     

    3) 当used_memory_rss < used_memory_peak,表示操作系统给redis分配的物理内存不足,redis使用了交换内存

     

    客户端连接分析

    # Clients

    connected_clients:15 //已连接客户端的数量(不包括通过从属服务器连接的客户端)

     

    client_longest_output_list:0 //当前连接的客户端当中,最长的输出列表

     

    client_biggest_input_buf:0  //当前连接的客户端当中,最大输入缓存

     

    blocked_clients:0 //正在等待阻塞命令(BLPOPBRPOPBRPOPLPUSH)的客户端的数量

     

    RedisClient简介

    如图 Server –> Add,填写redis数据库用户名,主机,端口,密码

    结果如下

    redis <wbr>redis常用命令及内存分析总结(附RedisClient工具简介

     

     

     

  • 相关阅读:
    通过WebService跨平台上传大文件到服务器
    C# 委托、Lambda表达式和事件——学习总结
    WIN8、WIN7访问Windows Server 2003服务器的数据库速度很慢、远程速度很慢的解决方法
    C#中接口与抽象类的区别
    DataGridView重查后,返回原来所在行
    需要开拓的领域
    FTP使用心得
    VS的几个实用快捷键
    C#中窗体、MDI的使用心得
    水晶报表使用心得
  • 原文地址:https://www.cnblogs.com/shouke/p/10157579.html
Copyright © 2011-2022 走看看