Redis这些知识点,是必须知道的!
Redis是一个开源(BSD许可)的内存数据结构存储,可作为数据库,缓存和消息队列。相比Memcached它支持更多的数据结构,如string(字符串),hash(哈希),list(链表),set(集合),zset(有序集合),位图,hyperloglogs和具有半径查询的地理空间索引。Redis具有内置复制,Lua脚本,LRU回收,事务和不同级别的磁盘持久化,并通过Redis Sentinel提供高可用性和自动分区的Redis Cluster。
本章学习下Redis主配置文件涉及的知识点,有助于更灵活的使用它。
# vi redis.conf
daemonize yes #是否以后台进程运行
pidfile/var/run/redis/redis-server.pid #pid文件位置
port 6379 #监听端口
bind 127.0.0.1 #绑定地址,如外网需要连接,设置0.0.0.0
timeout 300 #连接超时时间,单位秒
loglevel notice #日志级别,分别有:debug (适用于开发和测试),verbose(更详细信息),notice(适用于生产环境),warning(只记录警告或错误信息)
logfile/var/log/redis/redis-server.log #日志文件位置
syslog-enabled no #是否将日志输出到系统日志
databases 16 #设置数据库数量,默认数据库为0
############### 快照方式 ###############
save 900 1 #在900s(15m)之后,至少有1个key发生变化,则快照
save 300 10 #在300s(5m)之后,至少有10个key发生变化,则快照
save 60 10000 #在60s(1m)之后,至少有1000个key发生变化,则快照
rdbcompression yes #dump时是否压缩数据
dir /var/lib/redis #数据库(dump.rdb)文件存放目录
############### 主从复制 ###############
slaveof <masterip> <masterport> #主从复制使用,用于本机redis作为slave去连接主redis
masterauth <master-password> #当master设置密码认证,slave用此选项指定master认证密码
slave-serve-stale-data yes #当slave与master之间的连接断开或slave正在与master进行数据同步时,如果有slave请求,当设置为yes时,slave仍然响应请求,此时可能有问题,如果设置no时,slave会返回"SYNCwith master in progress"错误信息。但INFO和SLAVEOF命令除外。
############### 安全 ###############
requirepass pass #配置redis连接认证密码
############### 限制 ###############
maxclients 128 #设置最大连接数,0为不限制
maxmemory <bytes> #内存清理策略,如果达到此值,将采取以下动作:
# volatile-lru :默认策略,只对设置过期时间的key进行LRU算法删除
# allkeys-lru :删除不经常使用的key
# volatile-random :随机删除即将过期的key
# allkeys-random :随机删除一个key
# volatile-ttl :删除即将过期的key
# noeviction :不过期,写操作返回报错
maxmemory-policy volatile-lru #如果达到maxmemory值,采用此策略
maxmemory-samples 3 #默认随机选择3个key,从中淘汰最不经常用的
############### 附加模式 ###############
appendonly no #AOF持久化,是否记录更新操作日志,默认redis是异步(快照)把数据写入本地磁盘
appendfilename appendonly.aof #指定更新日志文件名
# AOF持久化三种同步策略:
# appendfsync always #每次有数据发生变化时都会写入appendonly.aof
# appendfsync everysec #默认方式,每秒同步一次到appendonly.aof
# appendfsync no #不同步,数据不会持久化
no-appendfsync-on-rewrite no #当AOF日志文件即将增长到指定百分比时,redis通过调用BGREWRITEAOF是否自动重写AOF日志文件。
############### 虚拟内存 ###############
vm-enabled no #是否启用虚拟内存机制,虚拟内存机将数据分页存放,把很少访问的页放到swap上,内存占用多,最好关闭虚拟内存
vm-swap-file /var/lib/redis/redis.swap #虚拟内存文件位置
vm-max-memory 0 #redis使用的最大内存上限,保护redis不会因过多使用物理内存影响性能
vm-page-size 32 #每个页面的大小为32字节
vm-pages 134217728 #设置swap文件中页面数量
vm-max-threads 4 #访问swap文件的线程数
############### 高级配置 ###############
hash-max-zipmap-entries 512 #哈希表中元素(条目)总个数不超过设定数量时,采用线性紧凑格式存储来节省空间
hash-max-zipmap-value 64 #哈希表中每个value的长度不超过多少字节时,采用线性紧凑格式存储来节省空间
list-max-ziplist-entries 512 #list数据类型多少节点以下会采用去指针的紧凑存储格式
list-max-ziplist-value 64 #list数据类型节点值大小小于多少字节会采用紧凑存储格式
set-max-intset-entries 512 #set数据类型内部数据如果全部是数值型,且包含多少节点以下会采用紧凑格式存储
activerehashing yes #是否激活重置哈希
小结:
Redis提供几种持久化机制:
1、RDB(默认)
工作方式:根据上述配置文件中save参数指定的时间间隔和Key变化数量触发快照(dump)到dump.rdb文件。
优势 :备份恢复简单。RDB通过子进程完成快照工作,相对比AOF启动效率高。
劣势 :服务器故障会丢失几分钟内的数据。
2、AOF
工作方式 :所有更新操作以日志的形式记录到AOF日志文件,在redis服务重新启动时会读取该日志文件来重新构建数据库,以保证启动后数据完整性。
优势 :AOF提供两种同步机制,一个是fsync always每次有数据变化就同步到日志文件和fsync everysec每秒同步一次到日志文件,最大限度保证数据完整性。
劣势:日志文件相对RDB快照文件要大的多。
AOF日志重写功能 :AOF日志文件过大,redis会自动重写AOF日志,append模式不断的将更新记录写入到老日志文件中,同时redis还会创建一个新的日志文件用于追加后续的记录。
3、同时应用RDB和AOF
对于数据安全性高的场景,可同时使用AOF和RDB,这样会降低性能。
4、无持久化
在不要求数据持久化的业务场景,应关闭持久化,这样会提高很大性能。
关闭方式:在配置文件设置
appendonly no
save “”
5、不重启redis服务从RDB切换到AOF方式
redis-cli> CONFIGSET appendonly yes #启用AOF
redis-cli> CONFIGSET save "" #关闭RDB
5、AOF日志文件出错后,修复方法
redis-check-aof --fix appendonly.aof #--fix参数为修复日志文件,不加则对日志检查。
Redis这些知识点,是必须知道的!的更多相关文章
- Javascript:必须知道的Javascript知识点之“单线程事件驱动”
heiboard: Javascript:必须知道的Javascript知识点之“单线程事件驱动”
- [你必须知道的.NET]第三十一回,深入.NET 4.0之,从“新”展望
发布日期:2009.05.22 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文开始,将以& ...
- 《jQuery风暴》第2章 必须知道的JavaScript知识
第2章 必须知道的JavaScript知识 JavaScript是jQuery应用的基础,掌握JavaScript这门语言是使用jQuery的基础条件.本章不会全面细致的讲解JavaScript的全部 ...
- 必须知道的ADO.NET 数据库连接池
http://www.cnblogs.com/liuhaorain/archive/2012/02/19/2353110.html 题外话 通过前几章的学习,不知道大家对ADO.NET有一定的了解了没 ...
- C语言学习书籍推荐《你必须知道的495个C语言问题》
萨米特 (Steve summit) (作者), 孙云 (译者), 朱群英 (译者) 下载地址:点我 <你必须知道的495个C语言问题>以问答的形式组织内容,讨论了学习或使用C语言的过程中 ...
- C#刨根究底:《你必须知道的.NET》读书笔记系列
一.此书到底何方神圣? <你必须知道的.NET>来自于微软MVP—王涛(网名:AnyTao,博客园大牛之一,其博客地址为:http://anytao.cnblogs.com/)的最新技术心 ...
- (转)【推荐】初级.NET程序员,你必须知道的EF知识和经验
转自:http://www.cnblogs.com/zhaopei/p/5721789.html [推荐]初级.NET程序员,你必须知道的EF知识和经验 阅读目录 [本文已下咒.先顶后看,会涨 ...
- 《你必须知道的.NET》读书笔记一:小OO有大智慧
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.对象 (1)出生:系统首先会在内存中分配一定的存储空间,然后初始化其附加成员,调用构造函数执行初 ...
- 《你必须知道的.NET》读书笔记二:小OO有大原则
此篇已收录至<你必须知道的.Net>读书笔记目录贴,点击访问该目录可以获取更多内容. 一.单一职责原则 (1)核心思想:一个类最好只做一件事,只有一个引起它变化的原因 (2)常用模式:Fa ...
随机推荐
- R语言︱函数使用技巧(循环、if族/for、switch、repeat、ifelse、stopifnot)
每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 后续加更内容: 应用一:if族有哪些成员呢?- ...
- HighCharts之2D柱状图、折线图和饼图的组合图
HighCharts之2D柱状图.折线图和饼图的组合图 1.实例源码 ColumnLinePie.html: <!DOCTYPE html> <html> <head&g ...
- hi3531 SDK 编译 kernel, 修改 参数
开发环境用户指南上这么写的 3.1 内核源代码 成功安装Hi3531 SDK后,内核源代码已存放于SDK目录下的osdrv/目录中,用户可 直接进入目录进行相关操作. 3.2 配置内核 如果对内核和H ...
- 如何开发jQuery插件
一:普及JQuery知识 知识1:用JQuery写插件时,最核心的方法有如下两个: $.extend(object) 可以理解为,为JQuery 类添加一个静态方法. $.fn.extend(obje ...
- iOS - Quartz 2D 手势截屏绘制
1.绘制手势截屏 具体实现代码见 GitHub 源码 QExtension QTouchClipView.h @interface QTouchClipView : UIView /** * 创建手势 ...
- newInstance 与new的区别
用newInstance与new的区别? 区别在于创建对象的方式不一样,前者是使用类加载机制,后者new 的类可以没有加载: 使用newInstance时候,必须保证:1.这个类已加载,2.这个类已经 ...
- [SCOI2008]斜堆
题目大意 1.题目描述 斜堆(skew heap)是一种常用的数据结构. 它也是二叉树,且满足与二叉堆相同的堆性质: 每个非根结点的值都比它父亲大.因此在整棵斜堆中,根的值最小. . 但斜堆不必是平衡 ...
- [Luogu2444][POI2000]病毒
Luogu sol 如果存在一个合法的无限长的串,那势必说明在\(AC\)自动机上存在一个合法的环.由此转化为判环,只要判断搜到的点是否已经在搜索栈中即可. code #include<cstd ...
- Tomcat 请求处理流程详解
Overview Connector 启动以后会启动一组线程用于不同阶段的请求处理过程. Acceptor 线程组.用于接受新连接,并将新连接封装一下,选择一个 Poller 将新连接添加到 Poll ...
- 关系型数据库工作原理-事务管理(二)(翻译自Coding-Geek文章)
本文翻译自Coding-Geek文章:< How does a relational database work>. 原文链接:http://coding-geek.com/how-dat ...