redis服务日常维护命令

1、redis服务启动命令

./redis-server --help
Usage: ./redis-server [/path/to/redis.conf] [options]
       ./redis-server - (read config from stdin)
       ./redis-server -v or --version
       ./redis-server -h or --help
       ./redis-server --test-memory

Examples:
       ./redis-server (run the server with default conf)
       ./redis-server /etc/redis/6379.conf
       ./redis-server --port 7777
       ./redis-server --port 7777 --slaveof 127.0.0.1 8888
       ./redis-server /etc/myredis.conf --loglevel verbose

Sentinel mode:
       ./redis-server /etc/sentinel.conf –sentinel

 

2、Redis-cli命令最新总结

连接操作相关的命令

  • 默认直接连接  远程连接-h 192.168.1.20 -p 6379
  • ping:测试连接是否存活如果正常会返回pong
  • echo:打印
  • select:切换到指定的数据库,数据库索引号 index 用数字值指定,以 0 作为起始索引值
  • quit:关闭连接(connection)
  • auth:简单密码认证

服务端相关命令

  • time:返回当前服务器时间
  • client list: 返回所有连接到服务器的客户端信息和统计数据  参见http://redisdoc.com/server/client_list.html
  • client kill ip:port:关闭地址为 ip:port 的客户端
  • save:将数据同步保存到磁盘
  • bgsave:将数据异步保存到磁盘
  • lastsave:返回上次成功将数据保存到磁盘的Unix时戳
  • shundown:将数据同步保存到磁盘,然后关闭服务
  • info:提供服务器的信息和统计 ,常见info命令
  • config resetstat:重置info命令中的某些统计数据
  • config get:获取配置文件信息
  • config set:动态地调整 Redis 服务器的配置(configuration)而无须重启,可以修改的配置参数可以使用命令 CONFIG GET * 来列出
  • config rewrite:Redis 服务器时所指定的 redis.conf 文件进行改写
  • monitor:实时转储收到的请求
  • slaveof:改变复制策略设置

 

INFO详解

以一种易于解释(parse)且易于阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。

通过给定可选的参数 section ,可以让命令只返回某一部分的信息:

  • server : 一般 Redis 服务器信息,包含以下域:

    • redis_version : Redis 服务器版本
    • redis_git_sha1 : Git SHA1
    • redis_git_dirty : Git dirty flag
    • os : Redis 服务器的宿主操作系统
    • arch_bits : 架构(32 或 64 位)
    • multiplexing_api : Redis 所使用的事件处理机制
    • gcc_version : 编译 Redis 时所使用的 GCC 版本
    • process_id : 服务器进程的 PID
    • run_id : Redis 服务器的随机标识符(用于 Sentinel 和集群)
    • tcp_port : TCP/IP 监听端口
    • uptime_in_seconds : 自 Redis 服务器启动以来,经过的秒数
    • uptime_in_days : 自 Redis 服务器启动以来,经过的天数
    • lru_clock : 以分钟为单位进行自增的时钟,用于 LRU 管理
  • clients : 已连接客户端信息,包含以下域:

    • connected_clients : 已连接客户端的数量(不包括通过从属服务器连接的客户端)
    • client_longest_output_list : 当前连接的客户端当中,最长的输出列表
    • client_longest_input_buf : 当前连接的客户端当中,最大输入缓存
    • blocked_clients : 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
  • memory : 内存信息,包含以下域:

    • used_memory : 由 Redis 分配器分配的内存总量,以字节(byte)为单位
    • used_memory_human : 以人类可读的格式返回 Redis 分配的内存总量
    • used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 topps 等命令的输出一致。
    • used_memory_peak : Redis 的内存消耗峰值(以字节为单位)
    • used_memory_peak_human : 以人类可读的格式返回 Redis 的内存消耗峰值
    • used_memory_lua : Lua 引擎所使用的内存大小(以字节为单位)
    • mem_fragmentation_ratio : used_memory_rssused_memory 之间的比率
    • mem_allocator : 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。

    在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。

    rss > used ,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。

    内存碎片的比率可以通过 mem_fragmentation_ratio 的值看出。

    used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟。

    Because Redis does not have control over how its allocations are mapped to memory pages, high used_memory_rss is often the result of a spike in memory usage.

    当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。

    如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。

    查看 used_memory_peak 的值可以验证这种情况是否发生。

  • persistence : RDBAOF 的相关信息

  • stats : 一般统计信息

  • replication : 主/从复制信息

  • cpu : CPU 计算量统计信息

  • commandstats : Redis 命令统计信息

  • cluster : Redis 集群信息

  • keyspace : 数据库相关的统计信息

除上面给出的这些值以外,参数还可以是下面这两个:

  • all : 返回所有信息
  • default : 返回默认选择的信息

当不带参数直接调用 INFO 命令时,使用 default 作为默认参数。

不同版本的 Redis 可能对返回的一些域进行了增加或删减。

因此,一个健壮的客户端程序在对 INFO 命令的输出进行分析时,应该能够跳过不认识的域,并且妥善地处理丢失不见的域。

 

3、Redis的“死键”问题

摘录自:https://zhuoroger.github.io/2016/08/05/redis-useless-keys/

有效避免Redis过期键堆积,从两个方面解决: 降低过期键产生的速度和加快定期删除的速度

  • 业务设计键的过期时长时,是否考虑过期键生成的速度;能否加大过期键的生存时间。
  • 如天气缓存集群,大量的键要求1分钟过期,从产品需求角度,能否设置更大。
  • 尽量避免使用大实例,控制Redis单实例的键个数(如1kw),可有效控制单个实例过期键产生的速度;拆分为更多的分片,加大集群定期删除的速度
  • 适当调大hz的值,增大每秒定期删除的次数;建议调整60,官方建议小100;
  • 因调用serverCron除了过期删除动作外,还有很多其他操作,可能占用过多的CPU时间片,影响业务请求。
  • 我们测试hz从默认10调整到100时,清理过期键的速度从20个升高到140个。
  • 主动触发Redis”惰性删除策略”,通过scan命令扫描整个实例的键,Redis会删除所有已过期的键。
  • 如果通过业务优化,扩容实例和调整hz都不能解决,可考虑定期使用这个大招。

 

涉及到相关的命令,请参考:http://redisdoc.com/key/index.html

命令 解释 时间复杂度 返回值
KEYS 查找所有符合给定模式 patternkey

时间复杂度:O(N), N 为数据库中 key 的数量。

返回值:符合给定模式的 key 列表。

OBJECT 命令允许从内部察看给定 key 的 Redis 对象。

OBJECT 命令有多个子命令:

  • OBJECT REFCOUNT 返回给定 key 引用所储存的值的次数。此命令主要用于除错。
  • OBJECT ENCODING 返回给定 key 锁储存的值所使用的内部表示(representation)。
  • OBJECT IDLETIME 返回给定 key 自储存以来的空闲时间(idle, 没有被读取也没有被写入),以秒为单位。
O(1)

REFCOUNTIDLETIME 返回数字。

ENCODING 返回相应的编码类型。

SCAN SCAN 命令及其相关的 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都用于增量地迭代(incrementally iterate)一集元素(a collection of elements)
  • SCAN 命令用于迭代当前数据库中的数据库键。
  • SSCAN 命令用于迭代集合键中的元素。
  • HSCAN 命令用于迭代哈希键中的键值对。
  • ZSCAN 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

增量式迭代命令每次执行的复杂度为 O(1) , 对数据集进行一次完整迭代的复杂度为 O(N) , 其中 N 为数据集中的元素数量。

SCAN 命令、 SSCAN 命令、 HSCAN 命令和 ZSCAN 命令都返回一个包含两个元素的 multi-bulk 回复: 回复的第一个元素是字符串表示的无符号 64 位整数(游标), 回复的第二个元素是另一个 multi-bulk 回复, 这个 multi-bulk 回复包含了本次被迭代的元素。

 

4、常用架构

Flume+Kafka+Storm+Redis实时分析系统基本架构   http://lib.csdn.net/article/redis/37709?knId=1007

Redis集群方案,Codis安装测试   http://blog.csdn.net/freewebsys/article/details/44100919

 

5、参考文档:

redis sentinel 单机搭建测试环境    http://blog.csdn.net/zishan007/article/details/50379647

redis info命令详解   http://blog.csdn.net/lang_man_xing/article/details/38539057 

Redis3.x安装配置,Sentinel部署   http://code727.iteye.com/blog/2251399

Redis主从集群的Sentinel配置  http://www.cnblogs.com/LiZhiW/p/4851631.html#_label2

你可能感兴趣的:(--nosql,大数据架构与服务程序设计)