Redis 集群服务信息与性能指标详解
Redis集群Redis-cluster搭建及故障、性能测试

Redis集群Redis-cluster搭建及故障、性能测试⼀、Redis集群部署三台物理机:172.20.0.17、172.20.0.18、172.20.0.19⼆、安装Redis下载安装redis压缩包解压压缩包,进⼊redis-5.0.2⽂件夹,运⾏命令./make install安装redismv redis-5.0.2 /usr/local/redis/三、修改配置⽂件node1--17服务器:1、创建redis_cluster/700X的⽬录mkdir -p /usr/local/redis/redis_cluster/7001mkdir -p /usr/local/redis/redis_cluster/70022、修改Redis.conf的端⼝cp redis.conf /usr/local/redis/redis_cluster/7001修改端⼝为7001cp redis.conf /usr/local/redis/redis_cluster/7002修改端⼝为70023、同时将修改后的Redis.conf复制到另外两个节点(18、19)4、将redis-server复制到节点⽬录下,⽅便操作cp /usr/local/bin/redis-server /usr/local/redis/redis-5.0.2/redis_cluster/7001/5、开启redis-cluster配置,配置做以下改造#配置yes开启redis-clustercluster-enabled yes#配置节点之间超时时间cluster-node-timeout 15000#这个配置很重要,cluster开启必须重命名指定cluster-config-file,不能与别的节点相同,否则会启动失败,最好按主机+端⼝命名cluster-config-file nodes-17-7001.conf四、启动各节点17、18、19Rediscd /usr/local/redis/redis-5.0.2/redis_cluster/7001./redis-server redis.confcd /usr/local/redis/redis-5.0.2/redis_cluster/7002./redis-server redis.conf五、创建集群命令cd /usr/local/bin./redis-cli --cluster create 172.20.0.17:7001 172.20.0.18:7001 172.20.0.19:7001 172.20.0.17:7002 172.20.0.18:7002 172.20.0.19:7002 --cluster-replicas 1(replicas1 表⽰我们希望为集群中的每个主节点创建⼀个从节点。
redis 监控指标

redis 监控指标
一些常见的Redis监控指标包括:1. 内存使用情况:用来监控Redis实例的内存使用情况,包括内存分配、内存使用率等。
2. 连接数:监控Redis实例当前的连接数,包括客户端连接和集群节点间的连接。
3. 命中率:监控Redis实例对于读取命令的缓存命中率,用来评估缓存的有效性。
4. 响应时间:监控Redis 实例对于不同类型命令的平均响应时间,用来评估Redis的性能。
5. 运行状态:监控Redis实例的运行状态,包括是否存活、是否正常执行命令等。
6. 数据持久性:监控Redis实例的数据持久性,包括持久化方式、持久化命令执行情况等。
7. 客户端状态:监控Redis实例当前连接的客户端的状态,包括客户端数、客户端IP等。
8. 主从同步延迟:监控Redis主从节点之间的同步延迟,用来评估主从复制的可靠性。
9. 键空间:监控Redis实例的键空间信息,包括键的数量、过期键的数量等。
10. 日志记录:监控Redis实例的日志记录情况,用来追踪异常情况和故障排查。
这些指标可以通过Redis自身提供的命令、工具和API进行获取和监控,也可以通过第三方的监控工具进行监控。
redis cluster参数

Redis Cluster参数引言Redis是一个开源的内存数据结构存储系统,可以用作数据库,缓存和消息传递代理。
Redis Cluster是Redis的一种分布式解决方案,它将数据分布在多个节点上,提供高可用性和横向扩展。
本文将深入探讨Redis Cluster的参数设置,以帮助读者了解并优化其性能。
一、Redis Cluster简介1.什么是Redis Cluster? Redis Cluster是Redis的分布式解决方案,它将数据分为多个哈希槽,并将哈希槽分布在不同的节点上。
每个节点负责处理一部分哈希槽的读写请求。
2.Redis Cluster的优势–高可用性:Redis Cluster支持主从复制和故障自动转移,当节点故障时可以自动将其替换为新的节点。
–横向扩展:通过增加节点来扩展Redis Cluster的容量和吞吐量。
–基于哈希槽的数据分布:Redis Cluster将数据分为16384个哈希槽,并将哈希槽均匀地分布在多个节点上,确保负载均衡和数据的高可用性。
二、Redis Cluster参数配置1.Redis Cluster的配置文件 Redis Cluster的配置文件名称为redis.conf,默认位于Redis安装目录下。
可以通过编辑该配置文件来修改RedisCluster的参数设置。
2.常用的Redis Cluster参数–bind:指定Redis Cluster绑定的IP地址,默认为127.0.0.1,表示只能本地访问。
如果要允许外部访问,可以将bind设置为0.0.0.0。
–port:指定Redis Cluster监听的端口,默认为6379。
–cluster-enabled:指定是否启用Redis Cluster,默认为no。
要启用Redis Cluster,需要将cluster-enabled设置为yes。
–cluster-config-file:指定Redis Cluster的配置文件,默认为nodes.conf。
Redis集群性能测试分析

Redis集群性能测试分析柳皓亮;王丽;周阳辰【摘要】Redis是一个非关系型数据库,属于内存级数据库。
但是由于数据量的不断增大,单机的Redis物理内存远远无法满足大数据的需要,因此需要搭建分布式的Redis,可以动态扩展内存,弥补单机Redis物理内存不够的缺点。
本次测试旨在对Redis各方面性能有深入的了解,为今后的工作打好基础。
本次实验的目的主要是搭建Redis Cluster和TwemProxy Redis两种集群,分别对其进行性能测试,测试出集群性能的拐点,找出性能的瓶颈有哪些,并对两套集群进行比较,以便于在不同业务场景下择优选择。
%Redis is a non-relational database, which belongs to the memory database. However, with the amount of data increasing quickly, the single Redis is unable to meet the needs of the large data. So we need to build a distributed Redis, which can extend memory dynamicly and make up the faults that the single Redis doesn’ t have enough physical memory. In order to have a good design for the Redis Cluster and play a Redis high throughput characteristics of Redis Cluster, we make the experiment about this. In this experiment, we build two clusters, which are Redis Cluster and TwemProxy Cluster. We make experiment one by one to test out the clustering performance of inflection point, meanwhile, find out what are the performance bottlenecks. So we can make a good choice under different business scenarios.【期刊名称】《微型机与应用》【年(卷),期】2016(035)010【总页数】3页(P70-71,78)【关键词】Redis Cluster;TwemProxy Redis;性能测试【作者】柳皓亮;王丽;周阳辰【作者单位】中国科学院电子学研究所苏州研究院存储计算组,江苏苏州215123;中国科学院电子学研究所苏州研究院存储计算组,江苏苏州215123;中国科学院电子学研究所苏州研究院存储计算组,江苏苏州215123【正文语种】中文【中图分类】TP23本次存储测试是用Java程序调用Jedis提供的API向集群里面灌入数据。
Redis缓存的监控与性能调优

Redis缓存的监控与性能调优Redis是一种常用的内存缓存数据库,通过将数据存储在内存中,提供了快速的读写能力,从而提高了应用程序的性能。
然而,为了确保Redis缓存的稳定性和高效性,我们需要进行监控和性能调优。
监控Redis缓存的性能是保证应用程序运行顺利的关键。
下面是一些重要的监控指标和方法。
1. 内存使用情况监控使用Redis的INFO命令可以获取到Redis实例的内存使用情况。
关注以下指标:- used_memory:Redis实例当前使用的内存大小- used_memory_peak:Redis实例占用内存的峰值- used_memory_lua:Lua脚本占用的内存- used_memory_rss:Redis进程实际占用的内存大小通过监控这些指标,我们可以及时发现内存泄漏或超出预期的内存使用情况,并采取相应的措施。
2. 命中率监控命中率是衡量Redis缓存效果的重要指标之一。
通过监控key的命中率,我们可以了解缓存的使用情况,并进行优化。
使用Redis的INFO命令获取以下指标:- keyspace_hits:Redis实例已成功找到了在主库中的键请求次数- keyspace_misses:Redis实例再次在主存中找不到键被请求的次数计算命中率的公式为:(keyspace_hits / (keyspace_hits +keyspace_misses)) * 100%。
3. 连接数监控Redis的连接数对性能有重要影响。
过多的连接可能导致Redis实例负载过高,影响缓存的读写能力。
使用Redis的INFO命令获取以下指标:- connected_clients:当前连接到Redis实例的客户端数量- blocked_clients:正在等待Redis服务器响应的客户端数量监控这些指标可以帮助我们及时发现连接数过高的情况,并采取相应的优化措施。
性能调优是提高Redis缓存效率和响应速度的关键。
redis 监控参数

redis 监控参数Redis是一种高性能的键值存储系统,它被广泛应用于缓存、消息队列、实时统计等场景。
在使用Redis时,我们需要关注一些监控参数,以确保Redis的稳定性和性能。
1. 内存使用情况Redis是一个内存数据库,它将所有数据存储在内存中。
因此,我们需要关注Redis的内存使用情况,以确保Redis不会因为内存不足而崩溃。
可以通过命令“INFO memory”来查看Redis的内存使用情况。
2. 连接数Redis支持多个客户端同时连接,但是过多的连接会占用过多的系统资源,导致Redis性能下降。
因此,我们需要关注Redis的连接数,以确保连接数不会过多。
可以通过命令“INFO clients”来查看Redis的连接数。
3. 命中率Redis的缓存功能是其最常用的功能之一,因此我们需要关注Redis的命中率,以确保Redis的缓存效果。
可以通过命令“INFO stats”来查看Redis的命中率。
4. 慢查询Redis支持复杂的查询操作,但是一些查询操作可能会消耗过多的时间,导致Redis性能下降。
因此,我们需要关注Redis的慢查询情况,以确保Redis的查询效率。
可以通过命令“SLOWLOG get”来查看Redis的慢查询情况。
5. 持久化Redis支持数据持久化,以确保数据不会因为Redis崩溃而丢失。
因此,我们需要关注Redis的持久化情况,以确保数据的安全性。
可以通过命令“INFO persistence”来查看Redis的持久化情况。
以上这些监控参数是我们在使用Redis时需要关注的重要指标,通过监控这些指标,我们可以及时发现Redis的问题,并采取相应的措施,以确保Redis的稳定性和性能。
redis-cli 参数

redis-cli 参数
redis-cli是redis的命令行客户端,是使用者连接Redis服务器,管理和查看缓存数据的重要工具,常用参数如下:
-h:指定redis服务器host 。
-p:指定redis服务器端口。
-a:指定redis密码。
-n:指定redis数据库编号。
-x:使用十六进制字符串输出值。
-r:指定读取的命令次数,默认为一次。
-i:以秒为单位设置输入超时时间。
--raw:忽略输入的特殊符号。
--pipe:使用原始二进制模式发送数据。
--latency:测量网络延迟。
--eval:使用Lua脚本处理数据。
--scan:迭代获取键列表。
--cluster:连接到Redis集群。
--bigkeys:查找占用空间大的键。
--readonly:只读模式,不能执行写操作。
--aof-rewrite:将Redis数据库重写为Append-only File格式。
--check-aof:验证Append-only File文件的完整性。
--memory:查看redis内存使用情况。
--cluster-check:检查集群的状态。
--sentinel:连接Redis Sentinel服务器。
--bigkeys-sampler:采样查找大键。
--intrinsic-latency:测量服务器内部延迟。
--ldb:从LevelDB中恢复数据。
--pipe-timeout:设置管道命令超时时间。
redis hz参数

redis hz参数
Redis(Remote Dictionary Server)是一个内存数据存储系统,其用途主要是用于缓存、消息队列、实时数据分析等场景。
在使用Redis时,有很多的配置参数可以用来优化性能,其中一个重要的参数就是“hz”。
“hz”是Redis中一个很重要的参数,它代表每秒钟执行定时任务的次数。
更具体地说,它表示每秒钟Redis主线程将检查数据是否过期、执行异步、RDB和AOF等操作的频率。
“hz”的默认值是10,这意味着Redis主线程每秒钟检查数据一次。
如果需要更快的检查速度,可以将“hz”参数的值增加。
那么,“hz”参数该如何进行配置呢?下面我们来为大家简单阐述一下。
1. 首先,我们可以通过info命令查看当前Redis实例的“hz”值,命令如下:
info|grep hz
2. 找到这个参数后,我们可以通过修改redis.conf文件来进行修改。
打开redis.conf文件,查找hz关键词,定位到如下行:hz 10
3. 修改“hz”值,根据实际需求设定合理的值。
在给予较大内存的同时,也可以增加“hz”值,如:
hz 50
这将使Redis主线程每秒钟执行五十次异步操作、检查过期数据等任务,提高Redis性能。
总的来说,“hz”参数是一个非常重要的参数,它可以使Redis 在处理数据时更加高效。
如果您想要让Redis处理数据更快,建议通过上述步骤修改“hz”参数。
然而,注意不要忽略Redis所需的内存和计算能力,也不要将“hz”值设置得过高,否则会给Redis带来压力和不必要的开销。
综上所述,使用“hz”时请谨慎!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Redis 集群服务信息与性能指标详解在发现redis集群性能问题的时候,我们⾸首先需要考虑的是整个集群的各项指标数据,然后根据这些指标数据判断具体的问题所在,redis本来就提供了了⼀一套⽐比较完善的性能指标,具体如下:⼀一般情况下, used_memory_rss 的值应该只⽐比 used_memory 稍微⾼高⼀一些。
1、当 rss > used ,且两者的值相差较⼤大时,表示存在(内部或外部的)内存碎⽚片。
内存碎⽚片的⽐比率可以通过查看mem_fragmentation_ratio 得知。
2、当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了了,在这种情况下,操作可能会产⽣生明显的延迟。
3、当 Redis 释放内存时,分配器器可能会,也可能不不会,将内存返还给操作系统。
如果 Redis 释放了了内存,却没有将内存返还给操作系统,那么used_memory 的值可能和操作系统显示的 Redis 内存占⽤用并不不⼀一致。
查看 used_memory_peak 的值可以验证这种情况是否发⽣生。
Redis Info信息包括:Server,Clients,Memory,Persistence,Stats,Replication,CPU,Commandstats,Cluster,Keyspace# Server(服务器器信息)redis_version:4.0.10 #redis服务器器版本redis_git_sha1I00000000 #Git SHA1redis_git_dirty:0 #Git dirty flagredis_build_id:6c2c390b97607ff0 #redis build idredis_mode:cluster #运⾏行行模式,单机或者集群os:Linux 2.6.32-358.2.1.el6.x86_64 x86_64 #redis服务器器的宿主操作系统arch_bits:64 #架构(32或64位)multiplexing_api:epoll #redis所使⽤用的事件处理理机制gcc_version:4.4.7 #编译redis时所使⽤用的gcc版本process_id:12099 #redis服务器器进程的pidrun_id:63bcd0e57adb695ff0bf873cf42d403ddbac1565 #redis服务器器的随机标识符(⽤用于sentinel和集群)tcp_port:9021 #redis服务器器监听端⼝口uptime_in_seconds:26157730 #redis服务器器启动总时间,单位是秒uptime_in_days:302 #redis服务器器启动总时间,单位是天hz:10 #redis内部调度(进⾏行行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运⾏行行10次。
lru_clock:14359959 #⾃自增的时钟,⽤用于LRU管理理,该时钟100ms(hz=10,因此每1000ms/10=100ms执⾏行行⼀一次定时任务)更更新⼀一次。
config_file:/redis_cluster/etc/9021.conf #配置⽂文件路路径# Clients(已连接客户端信息)connected_clients:1081 #已连接客户端的数量量(不不包括通过slave连接的客户端)client_longest_output_list:0 #当前连接的客户端当中,最⻓长的输出列列表,⽤用client list命令观察omem字段最⼤大值client_biggest_input_buf:0 #当前连接的客户端当中,最⼤大输⼊入缓存,⽤用client list命令观察qbuf和qbuf-free两个字段最⼤大值blocked_clients:0 #正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量量# Memory(内存信息)used_memory:327494024 #由redis分配器器分配的内存总量量,以字节为单位used_memory_human:312.32M #以⼈人类可读的格式返回redis分配的内存总量量used_memory_rss:587247616 #从操作系统的⻆角度,返回redis已分配的内存总量量(俗称常驻集⼤大⼩小)。
这个值和top命令的输出⼀一致used_memory_peak:1866541112 #redis的内存消耗峰值(以字节为单位)used_memory_peak_human:1.74G #以⼈人类可读的格式返回redis的内存消耗峰值used_memory_lua:35840 #lua引擎所使⽤用的内存⼤大⼩小(以字节为单位)mem_fragmentation_ratio:1.79 #used_memory_rss和used_memory之间的⽐比率,⼩小于1表示使⽤用了了swap,⼤大于1表示碎⽚片⽐比较多mem_allocator:jemalloc-3.6.0 #在编译时指定的redis所使⽤用的内存分配器器。
可以是libc、jemalloc或者tcmalloc# Persistence(rdb和aof的持久化相关信息)loading:0 #服务器器是否正在载⼊入持久化⽂文件rdb_changes_since_last_save:28900855 #离最近⼀一次成功⽣生成rdb⽂文件,写⼊入命令的个数,即有多少个写⼊入命令没有持久化rdb_bgsave_in_progress:0 #服务器器是否正在创建rdb⽂文件rdb_last_save_time:1482358115 #离最近⼀一次成功创建rdb⽂文件的时间戳。
当前时间戳 - rdb_last_save_time=多少秒未成功⽣生成rdb⽂文件rdb_last_bgsave_status:ok #最近⼀一次rdb持久化是否成功rdb_last_bgsave_time_sec:2 #最近⼀一次成功⽣生成rdb⽂文件耗时秒数rdb_current_bgsave_time_sec:-1 #如果服务器器正在创建rdb⽂文件,那么这个域记录的就是当前的创建操作已经耗费的秒数aof_enabled:1 #是否开启了了aofaof_rewrite_in_progress:0 #标识aof的rewrite操作是否在进⾏行行中aof_rewrite_scheduled:0#rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite⼦子进程正在执⾏行行,那么将客户端请求的bgrewriteaof变为计划任务,待aof⼦子进程结束后执⾏行行rewriteaof_last_rewrite_time_sec:-1 #最近⼀一次aof rewrite耗费的时⻓长aof_current_rewrite_time_sec:-1 #如果rewrite操作正在进⾏行行,则记录所使⽤用的时间,单位秒aof_last_bgrewrite_status:ok #上次bgrewriteaof操作的状态aof_last_write_status:ok #上次aof写⼊入状态aof_current_size:4201740 #aof当前尺⼨寸aof_base_size:4201687 #服务器器启动时或者aof重写最近⼀一次执⾏行行之后aof⽂文件的⼤大⼩小aof_pending_rewrite:0 #是否有aof重写操作在等待rdb⽂文件创建完毕之后执⾏行行?aof_buffer_length:0 #aof buffer的⼤大⼩小aof_rewrite_buffer_length:0 #aof rewrite buffer的⼤大⼩小aof_pending_bio_fsync:0 #后台I/O队列列⾥里里⾯面,等待执⾏行行的fsync调⽤用数量量aof_delayed_fsync:0 #被延迟的fsync调⽤用数量量# Stats(⼀一般统计信息)total_connections_received:209561105 #新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使⽤用有问题,需调研代码的连接设置total_commands_processed:2220123478 #redis处理理的命令数instantaneous_ops_per_sec:279 #redis当前的qps,redis内部较实时的每秒执⾏行行的命令数total_net_input_bytes:118515678789 #redis⽹网络⼊入⼝口流量量字节数total_net_output_bytes:236361651271 #redis⽹网络出⼝口流量量字节数instantaneous_input_kbps:13.56 #redis⽹网络⼊入⼝口kps instantaneous_output_kbps:31.33 #redis⽹网络出⼝口kps rejected_connections:0 #拒绝的连接个数,redis 连接个数达到maxclients限制,拒绝新连接的个数sync_full:1 #主从完全同步成功次数sync_partial_ok:0 #主从部分同步成功次数sync_partial_err:0 #主从部分同步失败次数expired_keys:15598177 #运⾏行行以来过期的key的数量量evicted_keys:0 #运⾏行行以来剔除(超过了了maxmemory后)的key的数量量keyspace_hits:1122202228 #命中次数keyspace_misses:577781396 #没命中次数pubsub_channels:0 #当前使⽤用中的频道数量量pubsub_patterns:0 #当前使⽤用的模式的数量量latest_fork_usec:15679 #最近⼀一次fork操作阻塞redis进程的耗时数,单位微秒migrate_cached_sockets:0 ## Replication(主从信息,master上显示的信息)role:master #实例例的⻆角⾊色,是master or slave connected_slaves:1 #连接的slave实例例个数slave0:ip=192.168.64.104,port=9021,state=online,offset=671317300 4,lag=0 #lag从库多少秒未向主库发送REPLCONF命令master_repl_offset:6713173145 #主从同步偏移量量,此值如果和上⾯面的offset相同说明主从⼀一致没延迟repl_backlog_active:1 #复制积压缓冲区是否开启repl_backlog_size:134217728 #复制积压缓冲⼤大⼩小repl_backlog_first_byte_offset:6578955418 #复制缓冲区⾥里里偏移量量的⼤大⼩小repl_backlog_histlen:134217728 #此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不不会超过repl_backlog_size的⼤大⼩小# Replication(主从信息,slave上显示的信息)role:slave #实例例的⻆角⾊色,是master or slave master_host:192.168.64.102 #此节点对应的master的ipmaster_port:9021 #此节点对应的master的port master_link_status:up #slave端可查看它与master之间同步状态,当复制断开后表示downmaster_last_io_seconds_ago:0 #主库多少秒未发送数据到从库? master_sync_in_progress:0 #从服务器器是否在与主服务器器进⾏行行同步slave_repl_offset:6713173818 #slave复制偏移量量slave_priority:100 #slave优先级slave_read_only:1 #从库是否设置只读connected_slaves:0 #连接的slave实例例个数master_repl_offset:0repl_backlog_active:0 #复制积压缓冲区是否开启repl_backlog_size:134217728 #复制积压缓冲⼤大⼩小repl_backlog_first_byte_offset:0 #复制缓冲区⾥里里偏移量量的⼤大⼩小repl_backlog_histlen:0 #此值等于 master_repl_offset -repl_backlog_first_byte_offset,该值不不会超过repl_backlog_size的⼤大⼩小# CPU(CPU计算量量统计信息)used_cpu_sys:96894.66 #将所有redis主进程在核⼼心态所占⽤用的CPU时求和累计起来used_cpu_user:87397.39 #将所有redis主进程在⽤用户态所占⽤用的CPU时求和累计起来used_cpu_sys_children:6.37 #将后台进程在核⼼心态所占⽤用的CPU时求和累计起来used_cpu_user_children:52.83 #将后台进程在⽤用户态所占⽤用的CPU时求和累计起来# Commandstats(各种不不同类型的命令的执⾏行行统计信息)cmdstat_get:calls=1664657469,usec=8266063320,usec_per_call=4.97#call每个命令执⾏行行次数,usec总共消耗的CPU时⻓长(单位微秒),平均每次消耗的CPU时⻓长(单位微秒)# Cluster(集群相关信息)cluster_enabled:1 #实例例是否启⽤用集群模式# Keyspace(数据库相关的统计信息)db0:keys=194690,expires=191702,avg_ttl=3607772262 #db0的key的数量量,以及带有⽣生存期的key的数,平均存活时间。