redis参数与持久化原理
- [root@JR hx]# redis-cli info
- # Server
- redis_version:2.8.19
- redis_git_sha1:00000000
- redis_git_dirty:0
- redis_build_id:3f46a0c12d2b66a6
- redis_mode:standalone 模式:是否做主从同步了
- os:Linux 2.6.32-431.23.3.el6.x86_64 x86_64 #linux 版本
- arch_bits:64 # 架构
- multiplexing_api:epoll
- gcc_version:4.4.7
- process_id:20848
- run_id:c77b9becd5a017913d778ac23ad7ea2032741b2d
- tcp_port:6379
- uptime_in_seconds:18308503 自 Redis 服务器启动以来,经过的秒数
- uptime_in_days:211 自 Redis 服务器启动以来,经过的天数
- hz:10
- lru_clock:3570345 以分钟为单位进行自增的时钟,用于 LRU 管理
- config_file:
- # Clients
- connected_clients:47 已连接客户端的数量(不包括通过从属服务器连接的客户端)
- client_longest_output_list:0 当前连接的客户端当中,最长的输出列表
- client_biggest_input_buf:0 当前连接的客户端当中,最大输入缓存
- blocked_clients:1 正在等待阻塞命令(BLPOP、BRPOP、BRPOPLPUSH)的客户端的数量
- # Memory
- used_memory:92306016 由 Redis 分配器分配的内存总量,以字节(byte)为单位
- used_memory_human:88.03M 以人类可读的格式返回 Redis 分配的内存总量
- used_memory_rss:103796736 从操作系统的角度,返回 Redis 已分配的内存总量(俗称常驻集大小)。这个值和 top 、 ps 等命令的输出一致。
- used_memory_peak:106823960 Redis 的内存消耗峰值(以字节byte为单位)
- used_memory_peak_human:101.88M 以人类可读的格式返回 Redis 的内存消耗峰值
- used_memory_lua:35840 引擎所使用的内存大小(以字节为单位)
- mem_fragmentation_ratio:1.12 used_memory_rss 和 used_memory 之间的比率
- mem_allocator:jemalloc-3.6.0 在编译时指定的, Redis 所使用的内存分配器。可以是 libc 、 jemalloc 或者 tcmalloc 。
- # Persistence RDB 和 AOF 的相关信息
- loading:0 一个标志值,记录了服务器是否正在载入持久化文件
- rdb_changes_since_last_save:296 #距离最后一次成功创建持久化文件之后,改变了多少个键值单位秒
- rdb_bgsave_in_progress:0 一个标志值,记录服务器是否正在创建RDB文件
- rdb_last_save_time:1479965088 最近一次成功创建RDB文件的UNIX时间戳
- rdb_last_bgsave_status:ok 一个标志值,记录了最后一次创建RDB文件的结果是成功还是失败
- rdb_last_bgsave_time_sec:2 记录最后一次创建RDB文件耗费的秒数
- rdb_current_bgsave_time_sec:-1 如果服务器正在创建RDB文件,那么这个值记录的就是当前的创建RDB操作已经耗费了多长时间(单位为秒)
- aof_enabled:0 一个标志值,记录了AOF是否处于打开状态
- aof_rewrite_in_progress:0 一个标志值,记录了服务器是否正在创建AOF文件
- aof_rewrite_scheduled:0 一个标志值,记录了RDB文件创建完之后,是否需要执行预约的AOF重写操作
- aof_last_rewrite_time_sec:-1 #记录了最后一次AOF重写操作的耗时
- aof_current_rewrite_time_sec:-1 #如果服务器正在进行AOF重写操作,那么这个值记录的就是当前重写操作已经耗费的时间(单位是秒)
- aof_last_bgrewrite_status:ok 一个标志值,记录了最后一次重写AOF文件的结果是成功还是失败
- aof_last_write_status:ok
- # Stats 一般统计信息
- total_connections_received:225390 #服务器已经接受的连接请求数量
- total_commands_processed:573807059 #服务器已经执行的命令数量
- instantaneous_ops_per_sec:34 #服务器每秒中执行的命令数量
- total_net_input_bytes:30507043380 服务器输入的字节总数
- total_net_output_bytes:36664408875 服务器输出的字节总数
- instantaneous_input_kbps:1.41
- instantaneous_output_kbps:0.93
- rejected_connections:0 #因为最大客户端数量限制而被拒绝的连接请求数量
- sync_full:0
- sync_partial_ok:0
- sync_partial_err:0
- expired_keys:363726 #因为过期而被自动删除的数据库键数量
- evicted_keys:0 因为最大内存容量限制而被驱逐(evict)的键数量
- keyspace_hits:125806840 #查找数据库键成功的次数
- keyspace_misses:3943604 查找数据库键失败的次数
- pubsub_channels:1 #目前被订阅的频道数量
- pubsub_patterns:0 #目前被订阅的模式数量
- latest_fork_usec:3755 #最近一次fork()操作耗费的时间(毫秒)
- # Replication 主/从复制信息
- role:master
- connected_slaves:0 #有一个slave连接上来
- master_repl_offset:0
- repl_backlog_active:0
- repl_backlog_size:1048576
- repl_backlog_first_byte_offset:0
- repl_backlog_histlen:0
- l master_port:主服务器监听的端口号
- l master_link_status:复制连接当前的状态,up表示连接正常,down表示连接断开
- l master_last_io_seconds_ago:距离最近一次与主服务器进行通信已经过去了多少秒
- l master_sync_in_progress:一个标志值,记录了主服务器是否正在与这个从服务器进行同步
- l master_sync_left_bytes:距离同步完成还缺多少字节的数据
- l master_sync_last_io_seconds_ago: 距离最近一次与主服务器进行通信已经过去了多少秒
- master_link_down_since_seconds: 主从服务器连接断开了多少秒
- # CPU PU 计算量统计信息
- used_cpu_sys:24531.54 #Redis服务器耗费的系统CPU
- used_cpu_user:21360.46 #Redis服务器耗费的用户CPU
- used_cpu_sys_children:2118.70 #Redis后台进程耗费的系统CPU
- used_cpu_user_children:18899.77 #Redis后台进程耗费的用户CPU
- # Keyspace
- db0:keys=69505,expires=8999,avg_ttl=402930491778154 数据库相关的统计信息
- #402930491778154 号数据库有69505 个键、 已经被删除的过期键数量为8999,个
- 父进程继续处理client请求,子进程负责将内存内容写入到临时文件。由于os的写时复制机制(copy on write)父子进程会共享相同的物理页面,当父进程处理写请求时os会为父进程要修改的页面创建副本,而不是写共享的页面。所以子进程的地址空间内的数 据是fork时刻整个数据库的一个快照。
- 当子进程将快照写入临时文件完毕后,用临时文件替换原来的快照文件,然后子进程退出。
- 一旦采用该方式,那么你的整个Redis数据库将只包含一个文件,这样非常方便进行备份。比如你可能打算没1天归档一些数据。
- 方便备份,我们可以很容易的将一个一个RDB文件移动到其他的存储介质上
- RDB 在恢复大数据集时的速度比 AOF 的恢复速度要快。
- RDB 可以最大化 Redis 的性能:父进程在保存 RDB 文件时唯一要做的就是 fork 出一个子进程,然后这个子进程就会处理接下来的所有保存工作,父进程无须执行任何磁盘 I/O 操作。
- 如果你需要尽量避免在服务器故障时丢失数据,那么 RDB 不适合你。 虽然 Redis 允许你设置不同的保存点(save point)来控制保存 RDB 文件的频率, 但是, 因为RDB 文件需要保存整个数据集的状态, 所以它并不是一个轻松的操作。 因此你可能会至少 5 分钟才保存一次 RDB 文件。 在这种情况下, 一旦发生故障停机, 你就可能会丢失好几分钟的数据。
- 每次保存 RDB 的时候,Redis 都要 fork() 出一个子进程,并由子进程来进行实际的持久化工作。 在数据集比较庞大时, fork() 可能会非常耗时,造成服务器在某某毫秒内停止处理客户端; 如果数据集非常巨大,并且 CPU 时间非常紧张的话,那么这种停止时间甚至可能会长达整整一秒。 虽然 AOF 重写也需要进行 fork() ,但无论 AOF 重写的执行间隔有多长,数据的耐久性都不会有任何损失。
- 使用 AOF 持久化会让 Redis 变得非常耐久(much more durable):你可以设置不同的 fsync 策略,比如无 fsync ,每秒钟一次 fsync ,或者每次执行写入命令时 fsync 。 AOF 的默认策略为每秒钟 fsync 一次,在这种配置下,Redis 仍然可以保持良好的性能,并且就算发生故障停机,也最多只会丢失一秒钟的数据( fsync 会在后台线程执行,所以主线程可以继续努力地处理命令请求)。
- 对于相同的数据集来说,AOF 文件的体积通常要大于 RDB 文件的体积。
- 根据所使用的 fsync 策略,AOF 的速度可能会慢于 RDB 。 在一般情况下, 每秒 fsync 的性能依然非常高, 而关闭 fsync 可以让 AOF 的速度和 RDB 一样快, 即使在高负荷之下也是如此。 不过在处理巨大的写入载入时,RDB 可以提供更有保证的最大延迟时间(latency)。
- AOF 在过去曾经发生过这样的 bug : 因为个别命令的原因,导致 AOF 文件在重新载入时,无法将数据集恢复成保存时的原样。 (举个例子,阻塞命令 BRPOPLPUSH 就曾经引起过这样的 bug 。) 测试套件里为这种情况添加了测试: 它们会自动生成随机的、复杂的数据集, 并通过重新载入这些数据来确保一切正常。 虽然这种 bug 在 AOF 文件中并不常见, 但是对比来说, RDB 几乎是不可能出现这种 bug 的。
redis参数与持久化原理的更多相关文章
- 两种Redis持久化原理的详解
Redis为持久化提供了两种方式: RDB:在指定的时间间隔能对你的数据进行快照存储. AOF:记录每次对服务器写的操作,当服务器重启的时候会重新执行这些命令来恢复原始的数据. 本文将通过下面内容的介 ...
- mysql主从复制、redis基础、持久化和主从复制
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
- Redis之数据持久化RDB与AOF
Redis之数据持久化RDB与AOF https://www.cnblogs.com/zackku/p/10087701.html 大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内 ...
- 进阶的Redis之数据持久化RDB与AOF
大家都知道,Redis之所以性能好,读写快,是因为Redis是一个内存数据库,它的操作都几乎基于内存.但是内存型数据库有一个很大的弊端,就是当数据库进程崩溃或系统重启的时候,如果内存数据不保存的话,里 ...
- redis之(十四)redis的主从复制的原理
一:redis主从复制的原理,步骤. 第一步:复制初始化 --->从redis启动后,会根据配置,向主redis发送SYNC命令.2.8版本以后,发送PSYNC命令. --->主red ...
- Redis系列(四)--持久化
持久化就是将数据的更新异步的保存到磁盘中 持久化方式: 1.快照:某个时间点数据的备份 MySQL dump.Redis RDB 2.写日志:MySQL BinLog.HBASE Hlog.Redis ...
- 详解 Redis 应用场景及原理
本文转自https://blog.csdn.net/niucsd/article/details/50966733,描述了redis实现原理和应用场景,篇幅较长,有意学习redis的同学可耐心阅读. ...
- redis两种持久化的方法
Redis是一种高级key-value数据库.它跟memcached类似,不过数据可以持久化,而且支持的数据类型很丰富.有字符串,链表,集 合和有序集合.支持在服务器端计算集合的并,交和补集(diff ...
- Redis两种持久化方式(RDB&AOF)
爬虫和转载请注明原文地址;博客园蜗牛:http://www.cnblogs.com/tdws/p/5754706.html Redis所需内存 超过可用内存怎么办 Redis修改数据多线程并发—Red ...
随机推荐
- VBS练习题
练习题: 1.输入3个数,输出其中最大的那个值. Option Explicit Dim intA,intB,intC intA=CInt(InputBox("请输入a:")) i ...
- DevExpress GridView加入DevExpress中的右键菜单PopuMenu
1. 添加一个Barmanager控件 2. 加入popumenu控件,点击该控件右上角的黑色三角号,编辑选项,点击编辑的选项,选择事件,编辑事件. 3. 在使用该右键菜单的控件添加MouseUp事件 ...
- 通过 Chrome Workspace 调试本地项目(修改样式时及时保存)
打开 DevTools 开发者工具[F12]中的 Sources 面板,在面板左侧右键选择「Add folder to workspace」,选择添加的文件夹. 添加好后,右键一个文件,选择「Map ...
- [转]线性插值&双线性插值&三线性插值
转自:http://www.cnblogs.com/yingying0907/archive/2012/11/21/2780092.html 內插是数学领域数值分析中的通过已知的离散数据求未知数据的过 ...
- 制作U盘启动盘及安装操作系统的方法
U盘启动盘制作方法: 1.从网上下载最新的老毛桃U盘启动制作工具主程序并安装 2.插入U盘(制作启动盘前先保存好你的资料到其它地方,以防丢失不可找回) 3.插入正确的U盘后程序会自动检测到U盘,启动模 ...
- js 新窗口打开
<script> function tj(){ window.open ('http://www.baidu.com', 'newwindow', 'height=500px, width ...
- LuaSocket http笔记
LuaSocket 基于Lua平台开发的一套socket的lua接口库程序, 为lua程序的扩展 ,http://w3.impa.br/~diego/software/luasocket/home.h ...
- Flume -- 开源分布式日志收集系统
Flume是Cloudera提供的一个高可用的.高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地.这里的日志是一个统称,泛指文件.操作记录等许多数据. 一.Flum ...
- 《30天自制操作系统》16_day_学习笔记
harib13a: 今天我们要继续折腾多任务,任务的高效管理是操作系统的一个重要的任务.在今天,我们将为系统创建更加完善的任务管理系统,其中包括优先级,任务等级等. 1.任务管理结构体 #define ...
- mysql的一些基本操作语句
-- 创建一个php2016的数据库create database php2016;-- 查看数据库的创建创建语句show create database php2016;-- 指定默认的操作数据库u ...