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 <megabytes>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 verboseSentinel 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_version
• redis_git_sha1
• redis_git_dirty
• os
• arch_bits
• multiplexing_api
• gcc_version
• process_id
• run_id
• tcp_port
• uptime_in_seconds
• uptime_in_days
• lru_clock
  • clients
• connected_clients
• client_longest_output_list
• client_longest_input_buf
• blocked_clients
  • memory
• used_memory
• used_memory_human
• used_memory_rss : 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps
• used_memory_peak
• used_memory_peak_human
• used_memory_lua
• mem_fragmentation_ratio : used_memory_rss 和 used_memory
• mem_allocator
在理想情况下, used_memory_rss 的值应该只比 used_memory
当 rss > used
内存碎片的比率可以通过 mem_fragmentation_ratio
当 used > rss
Because Redis does not have control over how its allocations are mapped to memory pages, high used_memory_rss
当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。
如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory
查看 used_memory_peak
  • persistence : RDB 和 AOF
  • stats
  • replication
  • cpu
  • commandstats
  • cluster
  • keyspace : 数据库相关的统计信息

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

  • all
  • default

当不带参数直接调用 INFO 命令时,使用 default

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

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

 

3、Redis的“死键”问题

有效避免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> 返回给定 key 引用所储存的值的次数。此命令主要用于除错。
  • OBJECT ENCODING <key> 返回给定 key 锁储存的值所使用的内部表示(representation)。
  • OBJECT IDLETIME <key> 返回给定 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实时分析系统基本架构  

Redis集群方案,Codis安装测试  

 

5、参考文档:

redis sentinel 单机搭建测试环境   

redis info命令详解    

Redis主从集群的Sentinel配置