目录
Version : Redis 4.0.10
一、采集脚本:Open-Falcon 之 Redis Cluster 监控指标采集脚本
二、采集指标说明:
参数 | 采集指标 | 采集类型 | 是否采集 | 详解 | 举个栗子
| |
---|---|---|---|---|---|---|
自定义push数据到open-falcon2: 不仅仅是falcon2-agent采集的数据可以push到监控系统,一些场景下,我们自定义的一些数据指标,也可以push到open-falcon中。 指标说明:收集指标里的COUNTER表示每秒执行次数,GAUGE表示直接输出值(暂留100参数指标)。 所有参数统一前缀:hgrc_
metric: 最核心的字段,代表这个采集项具体度量的是什么, 比如是cpu_idle呢,还是memory_free, 还是qps
| ||||||
Server 服务器的信息
| redis_version | GAUGE | 原始值 | 否 | Redis 服务器版本 | 4.0.10 |
redis_git_sha1 | GAUGE | 原始值 | 否 | Git SHA1 | 00000000 | |
redis_git_dirty | GAUGE | 原始值 | 否 | Git dirty flag | 0 | |
redis_build_id | GAUGE | 原始值 | 否 | Git dirty flag | 11292dc1b967716d | |
redis_mode | GAUGE | 原始值 | 否 | 运行模式,单机或者集群 | cluster | |
os | GAUGE | 原始值 | 否 | Redis 服务器的宿主操作系统 | Linux 2.6.32-888.el6.x86_64 x86_64 | |
arch_bits | GAUGE | 原始值 | 否 | 架构(32 或 64 位) | 64 | |
multiplexing_api | GAUGE | 原始值 | 否 | Redis 所使用的事件处理机制 | epoll | |
atomicvar_api | GAUGE | 原始值 | 否 | 原子处理api | sync-builtin | |
gcc_version | GAUGE | 原始值 | 否 | 编译 Redis 时所使用的 GCC 版本 | 4.4.7 | |
process_id | GAUGE | 原始值 | 否 | 服务器进程的 PID | 10857 | |
run_id | GAUGE | 原始值 | 否 | Redis 服务器的随机标识符(用于 Sentinel 和集群) | ea90c4af7d0628667b461312bff5a51a20262656 | |
tcp_port | GAUGE | 原始值 | 否 | TCP/IP 监听端口 | 7101 | |
uptime_in_seconds | GAUGE | 原始值 | 是 | 自 Redis 服务器启动以来,经过的秒数 | 4923393 | |
uptime_in_days | GAUGE | 原始值 | 是 | 自 Redis 服务器启动以来,经过的天数 | 56 | |
hz | GAUGE | 原始值 | 是 | redis内部调度(进行关闭timeout的客户端,删除过期key等等)频率,程序规定serverCron每秒运行10次 | 10 | |
lru_clock | GAUGE | 原始值 | 是 | 以分钟为单位进行自增的时钟,用于 LRU 管理 | 9633114 | |
executable | GAUGE | 原始值 | 否 | 执行文件 | /home/work/redis_cluster/redis-server | |
config_file | GAUGE | 原始值 | 否 | 配置文件路径 | /home/work/redis_cluster/redis-pandora/redis_7101/conf/redis.conf | |
Clients 记录了已连接客户端的信息 | connected_clients | GAUGE | 原始值 | 是 | 已连接客户端的数量(不包括通过从属服务器连接的客户端) | 4 |
client_longest_output_list | GAUGE | 原始值 | 是 | 当前连接的客户端当中,最长的输出列表 | 0 | |
client_biggest_input_buf | GAUGE | 原始值 | 是 | 当前连接的客户端当中,最大输入缓存 | 0 | |
blocked_clients | GAUGE | 原始值 | 是 | 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 | 0 | |
Memory 记录了服务器的内存信息
备注: 在理想情况下, used_memory_rss 的值应该只比 used_memory 稍微高一点儿。 1、当 rss > used 时,且两者的值相差较大时,表示存在(内部或外部的)内存碎片。内存碎片的比率可以通过 mem_fragmentation_ratio的值看出。 2、当 used > rss 时,表示 Redis 的部分内存被操作系统换出到交换空间了,在这种情况下,操作可能会产生明显的延迟 当 Redis 释放内存时,分配器可能会,也可能不会,将内存返还给操作系统。 如果 Redis 释放了内存,却没有将内存返还给操作系统,那么 used_memory 的值可能和操作系统显示的 Redis 内存占用并不一致。 查看 used_memory_peak 的值可以验证这种情况是否发生。 | used_memory | GAUGE | 原始值 | 是 | 由 Redis 分配器分配的内存总量,以字节(byte)为单位 | 20854496 |
used_memory_human | GAUGE | 原始值 | 是 | 以人类可读的格式返回 Redis 分配的内存总量 | 19.89M | |
used_memory_rss | GAUGE | 原始值 | 是 | 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps等命令的输出一致 | 31076352 | |
used_memory_rss_human | GAUGE | 原始值 | 是 | 以人类可读的格式,从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps等命令的 | 29.64M | |
used_memory_peak | GAUGE | 原始值 | 是 | redis的内存消耗峰值(以字节为单位) | 21218384 | |
used_memory_peak_human | GAUGE | 原始值 | 是 | 以人类可读的格式返回redis的内存消耗峰值 | 20.24M | |
used_memory_peak_perc | GAUGE | 原始值 | 是 | (used_memory/ used_memory_peak) *100% | 98.29% | |
used_memory_overhead | GAUGE | 原始值 | 是 | Redis为了维护数据集的内部机制所需的内存开销,包括所有客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog | 7293454 | |
used_memory_startup | GAUGE | 原始值 | 是 | Redis服务器启动时消耗的内存 | 1445088 | |
used_memory_dataset | GAUGE | 原始值 | 是 | used_memory—used_memory_overhead | 13561042 | |
used_memory_dataset_perc | GAUGE | 原始值 | 是 | 100%*(used_memory_dataset/(used_memory—used_memory_startup)) | 69.87% | |
total_system_memory | GAUGE | 原始值 | 否 | 整个系统内存 | 67502866432 | |
total_system_memory_human | GAUGE | 原始值 | 否 | 以人类可读的格式,显示整个系统内存 | 62.87G | |
used_memory_lua | GAUGE | 原始值 | 是 | Lua脚本存储占用的内存 | 37888 | |
used_memory_lua_human | GAUGE | 原始值 | 是 | 以人类可读的格式,显示Lua脚本存储占用的内存 | 37.00K | |
maxmemory | GAUGE | 原始值 | 是 | Redis实例的最大内存配置 | 20000000000 | |
maxmemory_human | GAUGE | 原始值 | 是 | 以人类可读的格式,显示Redis实例的最大内存配置 | 18.63G | |
maxmemory_policy | GAUGE | 原始值 | 是 | 当达到maxmemory时的淘汰策略 | noeviction | |
mem_fragmentation_ratio | GAUGE | 原始值 | 是 | used_memory_rss/ used_memory | 1.49 | |
mem_allocator | GAUGE | 原始值 | 否 | 内存分配器 | jemalloc-4.0.3 | |
active_defrag_running | GAUGE | 原始值 | 否 | 表示没有活动的defrag任务正在运行,1表示有活动的defrag任务正在运行(defrag:表示内存碎片整理) | 0 | |
lazyfree_pending_objects | GAUGE | 原始值 | 否 | 0表示不存在延迟释放(也有资料翻译未惰性删除)的挂起对象 | 0 | |
Persistence 记录了跟 RDB 持久化和 AOF 持久化有关的信息 | loading | GAUGE | 原始值 | 否 | 服务器是否正在载入持久化文件 | 0 |
rdb_changes_since_last_save | GAUGE | 原始值 | 否 | 离最近一次成功生成rdb文件,写入命令的个数,即有多少个写入命令没有持久化 | 17646277 | |
rdb_bgsave_in_progress | GAUGE | 原始值 | 否 | 服务器是否正在创建rdb文件 | 0 | |
rdb_last_save_time | GAUGE | 原始值 | 否 | 离最近一次成功创建rdb文件的时间戳。当前时间戳 - rdb_last_save_time=多少秒未成功生成rdb文件 | 1548214031 | |
rdb_last_bgsave_status | GAUGE | 原始值 | 是 | 最近一次rdb持久化是否成功 | ok | |
rdb_last_bgsave_time_sec | GAUGE | 原始值 | 否 | 最近一次成功生成rdb文件耗时秒数 | 0 | |
rdb_current_bgsave_time_sec | GAUGE | 原始值 | 否 | 如果服务器正在创建rdb文件,那么这个域记录的就是当前的创建操作已经耗费的秒数 | -1 | |
rdb_last_cow_size | GAUGE | 原始值 | 否 | RDB过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等) | 8577024 | |
aof_enabled | GAUGE | 原始值 | 是 | 是否开启了aof | 0 | |
aof_rewrite_in_progress | GAUGE | 原始值 | 否 | 标识aof的rewrite操作是否在进行中 | 0 | |
aof_rewrite_scheduled | GAUGE | 原始值 | 否 | rewrite任务计划,当客户端发送bgrewriteaof指令,如果当前rewrite子进程正在执行,那么将客户端请求的bgrewriteaof>变为计划任务,待aof子进程结束后执行rewrite | 0 | |
aof_last_rewrite_time_sec | GAUGE | 原始值 | 否 | 最近一次aof rewrite耗费的时长 | -1 | |
aof_current_rewrite_time_sec | GAUGE | 原始值 | 否 | 如果rewrite操作正在进行,则记录所使用的时间,单位秒 | -1 | |
aof_last_bgrewrite_status | GAUGE | 原始值 | 否 | 上次bgrewriteaof操作的状态 | ok | |
aof_last_write_status | GAUGE | 原始值 | 否 | 上次aof写入状态 | ok | |
aof_last_cow_size | GAUGE | 原始值 | 否 | AOF过程中父进程与子进程相比执行了多少修改(包括读缓冲区,写缓冲区,数据修改等) | 0 | |
Stats 记录了一般统计信息 | total_connections_received | COUNTER | 计数器 | 是 | 新创建连接个数,如果新创建连接过多,过度地创建和销毁连接对性能有影响,说明短连接严重或连接池使用有问题,需调研代码的连接设置 | 2693024 |
total_commands_processed | COUNTER | 计数器 | 是 | redis处理的命令数,每秒执行的命令数,比较准确的QPS | 25061418 | |
instantaneous_ops_per_sec | GAUGE | 原始值 | 是 | redis当前的qps,redis内部较实时的每秒执行的命令数 | 8 | |
total_net_input_bytes | COUNTER | 计数器 | 是 | redis网络入口流量字节数 | 5903756385 | |
total_net_output_bytes | COUNTER | 计数器 | 是 | redis网络出口流量字节数 | 7136132562 | |
instantaneous_input_kbps | GAUGE | 原始值 | 是 | redis网络入口kps | 0.51 | |
instantaneous_output_kbps | GAUGE | 原始值 | 是 | redis网络出口kps | 2.73 | |
rejected_connections | COUNTER | 计数器 | 是 | 拒绝的连接个数,redis连接个数达到maxclients限制,拒绝新连接的个数 | 0 | |
sync_full | GAUGE | 原始值 | 是 | 主从完全同步成功次数 | 1 | |
sync_partial_ok | GAUGE | 原始值 | 是 | 主从部分同步成功次数 | 0 | |
sync_partial_err | GAUGE | 原始值 | 是 | 主从部分同步失败次数 | 1 | |
expired_keys | COUNTER | 计数器 | 是 | 运行以来过期的key的数量 | 21727 | |
expired_stale_perc | GAUGE | 原始值 | 是 | 过期的比率 | 0.00 | |
expired_time_cap_reached_count | GAUGE | 原始值 | 是 | 过期计数 | 0 | |
evicted_keys | COUNTER | 计数器 | 是 | 运行以来剔除(超过了maxmemory后)的key的数量 | 0 | |
keyspace_hits | COUNTER | 计数器 | 是 | 命中次数 | 1722349 | |
keyspace_misses | COUNTER | 计数器 | 是 | 没命中次数 | 33033 | |
pubsub_channels | GAUGE | 原始值 | 是 | 当前使用中的频道数量 | 0 | |
pubsub_patterns | GAUGE | 原始值 | 是 | 当前使用的模式的数量 | 0 | |
latest_fork_usec | GAUGE | 原始值 | 是 | 最近一次fork操作阻塞redis进程的耗时数,单位微秒 | 611 | |
migrate_cached_sockets | GAUGE | 原始值 | 是 | 是否已经缓存了到该地址的连接 | 0 | |
slave_expires_tracked_keys | GAUGE | 原始值 | 是 | 从实例到期key数量 | 0 | |
active_defrag_hits | GAUGE | 原始值 | 是 | 主动碎片整理命中次数 | 0 | |
active_defrag_misses | GAUGE | 原始值 | 是 | 主动碎片整理未命中次数 | 0 | |
active_defrag_key_hits | GAUGE | 原始值 | 是 | 主动碎片整理key命中次数 | 0 | |
active_defrag_key_misses | GAUGE | 原始值 | 是 | 主动碎片整理key未命中次数 | 0 | |
Replication 主/从复制信息(主/从节点信息略有不同,由于Redis Cluster的特殊机制,从节点相关不同信息可忽略)
| role | GAUGE | 原始值 | 是 | 实例的角色,是master or slave | master |
connected_slaves | GAUGE | 原始值 | 否 | 连接的slave实例个数 | 1 | |
slave0 | GAUGE | 原始值 | 否 | slave实例连接详情 | ip=xxx,port=xxx=online,offset=5594467791,lag=1 | |
master_replid | GAUGE | 原始值 | 否 | 主实例启动随机字符串 | 2e09454e93fbc2ab5c9fe77b690c275d686d6036 | |
master_replid2 | GAUGE | 原始值 | 否 | 主实例启动随机字符串2 | 0000000000000000000000000000000000000000 | |
master_repl_offset | GAUGE | 原始值 | 否 | 主从同步偏移量,此值如果和上面的offset相同说明主从一致没延迟,与master_replid可被用来标识主实例复制流中的位置 | 5594467791 | |
second_repl_offset | GAUGE | 原始值 | 否 | 主从同步偏移量2,此值如果和上面的offset相同说明主从一致没延迟 | -1 | |
repl_backlog_active | GAUGE | 原始值 | 否 | 复制积压缓冲区是否开启 | 2 | |
repl_backlog_size | GAUGE | 原始值 | 是 | 复制积压缓冲大小 | 1048576 | |
repl_backlog_first_byte_offset | GAUGE | 原始值 | 是 | 复制缓冲区里偏移量的大小 | 5593419216 | |
repl_backlog_histlen | GAUGE | 原始值 | 否 | 此值等于 master_repl_offset - repl_backlog_first_byte_offset,该值不会超过repl_backlog_size的大小 | 1048576 | |
CPU 记录了CPU的计算量统计信息 | used_cpu_sys | GAUGE | 原始值 | 是 | 将所有redis主进程在核心态所占用的CPU时求和累计起来 | 3044.23 |
used_cpu_user | GAUGE | 原始值 | 是 | 将所有redis主进程在用户态所占用的CPU时求和累计起来 | 2051.84 | |
used_cpu_sys_children | GAUGE | 原始值 | 是 | 将后台进程在核心态所占用的CPU时求和累计起来 | 0.00 | |
used_cpu_user_children | GAUGE | 原始值 | 是 | 将后台进程在用户态所占用的CPU时求和累计起来 | 0.00 | |
Commandstats 记录了各种不同类型的命令的执行统计信息:命令执行的次数、命令耗费的 CPU 时间、执行每个命令耗费的平均 CPU 时间 (只取命令执行的次数calls的值) | cmdstat_command | COUNTER | 计数器 | 是 | Command命令统计 | calls=35,usec=22479,usec_per_call=642.26 |
cmdstat_keys | COUNTER | 计数器 | 是 | Keys命令统计 | calls=66,usec=19287,usec_per_call=292.23 | |
cmdstat_incrby | COUNTER | 计数器 | 是 | Incrby命令统计 | calls=5,usec=81,usec_per_call=16.20 | |
cmdstat_hexists | COUNTER | 计数器 | 是 | Hexists命令统计 | calls=3689,usec=6033,usec_per_call=1.64 | |
cmdstat_lindex | COUNTER | 计数器 | 是 | Lindex命令统计 | calls=16,usec=110,usec_per_call=6.88 | |
cmdstat_sismember | COUNTER | 计数器 | 是 | Sismember命令统计 | calls=3254,usec=4200,usec_per_call=1.29 | |
cmdstat_lrange | COUNTER | 计数器 | 是 | Lrange命令统计 | calls=350,usec=5852,usec_per_call=16.72 | |
cmdstat_replconf | COUNTER | 计数器 | 是 | Replconf命令统计 | calls=8703340,usec=10757057,usec_per_call=1.24 | |
cmdstat_dbsize | COUNTER | 计数器 | 是 | Dbsize命令统计 | calls=10,usec=29,usec_per_call=2.90 | |
cmdstat_lpush | COUNTER | 计数器 | 是 | Lpush命令统计 | calls=720,usec=5361,usec_per_call=7.45 | |
cmdstat_rpush | COUNTER | 计数器 | 是 | Rpush命令统计 | calls=13797,usec=32706,usec_per_call=2.37 | |
cmdstat_cluster | COUNTER | 计数器 | 是 | Cluster命令统计 | calls=1131,usec=182483,usec_per_call=161.35 | |
cmdstat_hgetall | COUNTER | 计数器 | 是 | Hgetall命令统计 | calls=4,usec=22,usec_per_call=5.50 | |
cmdstat_rpop | COUNTER | 计数器 | 是 | Rpop命令统计 | calls=64727,usec=226536,usec_per_call=3.50 | |
cmdstat_setnx | COUNTER | 计数器 | 是 | Setnx命令统计 | calls=7765,usec=43709,usec_per_call=5.63 | |
cmdstat_flushdb | COUNTER | 计数器 | 是 | Flushdb命令统计 | calls=1,usec=51,usec_per_call=51.00 | |
cmdstat_spop | COUNTER | 计数器 | 是 | Spop命令统计 | calls=3,usec=16,usec_per_call=5.33 | |
cmdstat_type | COUNTER | 计数器 | 是 | Type命令统计 | calls=10,usec=36,usec_per_call=3.60 | |
cmdstat_ping | COUNTER | 计数器 | 是 | Ping 命令统计 | calls=8,usec=12,usec_per_call=1.50 | |
cmdstat_info | COUNTER | 计数器 | 是 | Info命令统计 | calls=5234,usec=154843,usec_per_call=29.58 | |
cmdstat_expire | COUNTER | 计数器 | 是 | Expire命令统计 | calls=45,usec=170,usec_per_call=3.78 | |
cmdstat_smembers | COUNTER | 计数器 | 是 | Smembers命令统计 | calls=6,usec=2010,usec_per_call=335.00 | |
cmdstat_llen | COUNTER | 计数器 | 是 | Llen命令统计 | calls=50,usec=211,usec_per_call=4.22 | |
cmdstat_del | COUNTER | 计数器 | 是 | Del命令统计 | calls=9519,usec=34725,usec_per_call=3.65 | |
cmdstat_setex | COUNTER | 计数器 | 是 | Setex命令统计 | calls=372,usec=4018,usec_per_call=10.80 | |
cmdstat_set | COUNTER | 计数器 | 是 | Set 命令统计 | calls=15,usec=206,usec_per_call=13.73 | |
cmdstat_mget | COUNTER | 计数器 | 是 | Mget命令统计 | calls=3,usec=7,usec_per_call=2.33 | |
cmdstat_get | COUNTER | 计数器 | 是 | Get命令统计 | calls=1633,usec=5007,usec_per_call=3.07 | |
cmdstat_ttl | COUNTER | 计数器 | 是 | Ttl命令统计 | calls=13,usec=66,usec_per_call=5.08 | |
cmdstat_hget | COUNTER | 计数器 | 是 | Hget命令统计 | calls=13,usec=70,usec_per_call=5.38 | |
cmdstat_psync | COUNTER | 计数器 | 是 | Psync命令统计 | calls=1,usec=2304,usec_per_call=2304.00 | |
cmdstat_hdel | COUNTER | 计数器 | 是 | Hdel命令统计 | calls=4,usec=45,usec_per_call=11.25 | |
cmdstat_hset | COUNTER | 计数器 | 是 | Hset命令统计 | calls=3690,usec=17646,usec_per_call=4.78 | |
cmdstat_hmset | COUNTER | 计数器 | 是 | Hmset命令统计 | calls=533,usec=4731,usec_per_call=8.88 | |
cmdstat_sadd | COUNTER | 计数器 | 是 | Sadd命令统计 | calls=3252,usec=5472,usec_per_call=1.68 | |
cmdstat_lrem | COUNTER | 计数器 | 是 | Lrem命令统计 | calls=14482,usec=740914,usec_per_call=51.16 | |
Cluster 集群有关的信息 | cluster_enabled | GAUGE | 原始值 | 是 | 实例是否启用集群模式 | 1 |
Keyspace 数据库相关的统计信息 | db0 | GAUGE | 原始值 | 否 | db0的key的数量,以及带有生存期的key的数,平均存活时间 (一般情况下默认均为db0,不支持SELECT 命令,集群只使用数据库 0) | keys=80965,expires=11020,avg_ttl=739143519 |
User-Defined 自定义信息 | db0_keys | GAUGE | 原始值 | 是 | db0的key的数量 | 80965 |
db0_expires | GAUGE | 原始值 | 是 | db0带有生存期的key的数量 | 11020 | |
hgrc_keyspace_hit_ratio | GAUGE | 原始值 | 是 | 计算key值命中率:keyspace_hits / (keyspace_hits + keyspace_misses) | 0.9811 |
三、汇报指标(图表):
key | tag | type | node |
---|---|---|---|
hgrc_connected_clients | port | GAUGE | 已连接客户端的数量 |
hgrc_blocked_clients | port | GAUGE | 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量 |
hgrc_used_memory | port | GAUGE | 由 Redis 分配器分配的内存总量,以字节(byte)为单位 |
hgrc_used_memory_rss | port | GAUGE | 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小) |
hgrc_mem_fragmentation_ratio | port | GAUGE | 内存碎片率,used_memory_rss/used_memory |
hgrc_total_commands_processed | port | COUNTER | 采集周期内执行命令总数,比较准确的QPS |
hgrc_rejected_connections | port | COUNTER | 采集周期内拒绝连接总数 |
hgrc_expired_keys | port | COUNTER | 采集周期内过期key总数 |
hgrc_evicted_keys | port | COUNTER | 采集周期内踢出key总数 |
hgrc_keyspace_hits | port | COUNTER | 采集周期内key命中总数 |
hgrc_keyspace_misses | port | COUNTER | 采集周期内key拒绝总数 |
hgrc_keyspace_hit_ratio | port | GAUGE | 访问命中率 |
hgrc_db0_keys | port | GAUGE | key的数量 |
hgrc_db0_expires | port | GAUGE | 带有生存期的key的数量 |
hgrc_cmdstat_* | port | COUNTER | 采集周期内各种命令执行次数 |
四、设置监控告警项:
五、Redis延迟时间排查:
如果数据量越来越多,并发写操作很多的情况下,Redis出现响应慢的情况;
可以使用 Redis命令来测试一下redis的响应速度:
redis-cli --latency -h xxx -c -p xxx
这条命令会向Redis插入示例数据来检查平均延时。 Ctrl+C可以随时结束测试;
下面我们列一下会出现延时的可能:
-
硬件,系统:硬件问题是所有问题最底层的问题了,如果硬件慢,例如CPU主频低,内存小,磁盘IO慢,这些会让所有运行在上面的系统响应慢;另外,使用虚拟机会让系统运行的性能太为下降;当然,有钱的话,这问题很容易解决;系统方面,Linux本身的系统资源调度也会产生一定的延时。这些一般不会很大,可以忽略不计;
-
网络:如果客户端和redis在同一台服务器上,使用socket建立连接会比监听 TCP/IP 端口快很多;
-
Redis命令:一些时间复杂度比较高的命令,如 lrem,sort,sunion等命令会花比较长时间;另外,大量的重复连接也会造成延时,重用连接是一种很好的品质;如果有大量写操作,可以使用 pipeline 管道的方式(类似mysql事务),一次性提交,这样数据量也少了,连接次数也少了,不用每次都返回数据,速度自然会快很多;
-
持久化:Redis持久化需要fork出一个进程来进行持久化操作,这本身就会引发延时,如果数据变化大,RDB配置时间短,那这个代价还是挺大的;再加上,硬盘这东西真有点不靠谱,如果还是虚拟机上的虚拟硬盘,如果还是NFS共享目录,那这延时会让你崩溃。所以,如果系统不需要持久化,关了吧。