`
sskhnje
  • 浏览: 16385 次
  • 性别: Icon_minigender_1
  • 来自: 昆明
文章分类
社区版块
存档分类
最新评论

redis笔记

 
阅读更多

Security

 

redis期望是在一个安全的网络环境中,不提供过多的ACL。

可以设定只绑定来自某几个IP的客户端,在redis.config中配置:

bind 127.0.0.1

也可以在redis.config中设置一个密码auth,客户端需要密码才能连上。在redis.config中配置

requirepass "hello world"

 

密码是明文的,如果你还想更安全些,那就用SSL吧。

 

也可以禁用哪些命令,只需要rename它们到一个猜不到的名字即可。

 

rename-command CONFIG b840fc02d524045429941cc15f59e41cb7be6c52

 如果你要完全禁用它,就把它remame为空的字符串

rename-command CONFIG ""

 

 

 

 

 

 

 

 

 

 

Replication

 

实现replication,只需要在slave的redis.config文件中加上一行:

slaveof 192.168.1.1 6379

后面的IP和端口指向master。

slave也可以接自己的slave,master和slave的结构可以像树一下。

 

slave是否第一次连上master都没关系,

是第1次的话,master会先传database file给它,slave会保存到硬盘,然后再把文件读入内存。

之后,master再把缓存的那些命令(database file更新之后接收到的命令)发给slave,slave执行后就与master一致了。

以上用的是 SYNC命令。

 

如果是重连 ,默认也会跟第1次连一样,重走整个过程。即也执行SYNC命令。

但从2.8版本起,也支持部分同步了。执行的是PSYNC命令。

 

 

2.6起,slave默认都是只读的,即拒绝写操作。

在redis.config中可以配置:

slave-read-only true

 但不表示slave就可以暴露在不安全的环境中了,因为虽然不可写,但还是可以执行管理命令,诸如DEBUG、CONFIG等命令。所以为了安全起见,可以禁用这些命令(改名)。

 

如果master要验证密码,则slave要在redis.config中加上密码:

masterauth <password>

 

从2.8开始,支持以下特性:

有至少N个slave连上时,master才接受写操作。

 

slave每秒都会ping master一次,可以设置M秒内ping过master,就表示它连着。

在redis.config中设置:

min-slaves-to-write <number of slaves>
min-slaves-max-lag <number of seconds>

 

 

 

Persistence

redis存储有两种方式:RDB( RDB 文件)和AOF(appendOnly file)。

RDB是每隔一段时间就把整个内存的数据的快照dump到文件。

AOF是每隔一段时间就把命令列表append到aof文件里。

 

RDB是全部数据生成一个快照文件,简单,还原快,但频次不能太大,免得影响性能。遇到突发情况,会丢掉最近的数据。

AOF是一个命令一个命令的append到aof文件里,频次可以很大,默认是1秒1次,遇到突发情况,丢失的数据少,但还原较慢。

 

可以两个结合起来用。

 

要开启RDB,在redis.config里配置:

 

save 60 1000
 after 60 sec if at least 1000 keys changed

 

表示60秒后,如果有1000个key更新了,就把快照写到文件。

 

如果要禁用RDB,在redis.config里配置:

 

save ""
 
RDB是通过fork出一个子线程来做这事的。
 

 

 

要开启AOF,

 

appendonly yes
 在禁用AOF,

 

 

appendonly no
AOF可以是每执行一个写命令就同步一次(append到aof),也可以每秒同步一次,或者不同步。默认是每秒同步一次,兼顾了性能和减少数据丢失的情况。 
# If unsure, use "everysec".

# appendfsync always
appendfsync everysec
# appendfsync no
 
AOF也是通过Fork子线程来做这事的。

 

随之着执行的命令越来越多,aof也被append得越来越大,如果一个key被set 100次,就存100条语句在aof里面,显然还原时,只执行最后一个命令就行了,其他99条是多余的。

要做这样的优化和瘦身,就要用到BGREWITEAOF。

 

 

BGREWITEAOF的过程是:

1.子线程先复制目前的aof一份,然后在一边慢慢优化。

2.与此同时,主线程仍然向外提供服务,接收新的命令并append到目前的aof,并将命令缓存。

3.子线程优化完后,会向主线程发一个信号,然后主线程再把缓存里的命令也append到新aof文件里。

4.完后再以新aof替旧aof。

 

因为新命令一直有append到目前的aof文件,所以就算rewrite失败,数据也不会丢失。

 

 

如果开启了AOF,在append 命令到aof文件的过程中突然停电,aof文件损坏,可按以下步骤恢复:

备份下aof,存到其他电脑上;

执行命令:

$ redis-check-aof --fix

使用修复好的aof文件,重启redis。

 

 

redis已经在运行,并且使用RDB,可转成AOF,步骤如下:

1.备份最新的dump.rdb到安全的地方;

2.执行:

redis-cli config set appendonly yes
redis-cli config set save ""

在执行第1个命令时,redis会阻塞以生成一个最新的dump,然后生成一个aof,接收命令并append。

第2个命令不执行也行,不执行就同时使用RDB和AOF了。

 

 

 

 

 slave priority

设置如果master停止服务后,slave提升为master的优先级。

为整数,数值越小,优先级越高。

如3个slave, 优先级分别是 priority 10, 100, 25,最后优先选为master的是10。

如果设为0,表示不能选作master。

# By default the priority is 100.
slave-priority 100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



分享到:
评论

相关推荐

    狂神说Redis笔记.pdf

    《狂神说Redis笔记》是针对Redis这一高性能的键值数据库进行深入讲解的资料,它涵盖了Redis的基础概念、核心功能以及在实际应用中的各种策略。Redis作为一款内存数据存储系统,广泛应用于缓存、消息队列、分布式锁等...

    Redis笔记-尚硅谷周阳V1.3-脑图

    根据《Redis笔记-尚硅谷周阳V1.3》整理,脑图、思维导图xmind

    狂神说-Redis笔记(完整版).md

    狂神说-Redis笔记(完整版).md

    尚硅谷周阳Redis笔记

    以上就是关于"尚硅谷周阳Redis笔记"的一些主要知识点,包括Redis的基本概念、数据类型、持久化、事务、复制、发布订阅、布隆过滤器、HyperLogLog以及GEO定位等功能的介绍。这个笔记资源对于学习和理解Redis的使用...

    狂神说Redis笔记.md

    狂神说Redis笔记.md

    狂神说redis笔记

    在《狂神说Redis笔记》中,我们可以了解到Redis的各个方面,包括其入门基础、高级特性、配置详解、持久化机制、事务操作、订阅发布机制、主从复制、安装指南、哨兵模式以及与Java的集成等。同时,笔记还探讨了为什么...

    redis笔记+资料

    这份“redis笔记+资料”提供了全面的学习资源,非常适合初学者掌握 Redis 的基础知识和常见用法。 Redis 的主要特点包括: 1. **内存存储**:Redis 将所有数据存储在内存中,读写速度极快,但这也意味着它不适合...

    redis笔记.rar

    这份"redis笔记.rar"包含的"redis笔记.pdf"应该是一份详细的学习指南,非常适合初学者了解和掌握Redis的基本概念、操作命令以及实战技巧。 1. Redis基本概念: - Redis是一个开源的、基于内存的数据存储系统,支持...

    狂神说Redis笔记.rar

    在本笔记中,我们将深入探讨Redis的关键特性、安装配置、数据类型、命令操作以及实际应用。 一、Redis概述 Redis起源于意大利,由Salvatore Sanfilippo创建,其全称为Remote Dictionary Server,即远程字典服务。...

    Redis笔记.zip

    Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记...

    typora:redis笔记

    标题中的“typora:redis笔记”指的是使用Typora这款轻量级 Markdown 编辑器编写的Redis学习笔记。Typora提供了一个简洁的界面,使得阅读和编写Markdown格式的文档变得轻松愉快。通过Typora来整理Redis的学习内容,...

    Redis笔记.doc

    Redis 是一个开源的、基于 BSD 许可的高级键值存储系统,它被广泛地称为数据结构服务器。Redis 的独特之处在于它不仅提供简单的键值对存储,而且键可以包含多种数据结构,如字符串、哈希、列表、集合和有序集合。这...

    狂神说-Redis笔记(完整).md

    **Redis 深度解析** Redis 是一个高性能的键值对数据库,被广泛应用于缓存、消息队列、计数器、实时统计等多种场景。它以其出色的速度和丰富的数据结构特性,成为许多开发者首选的内存数据存储解决方案。下面将深入...

    Redis笔记.pdf

    安装完成后,会得到几个重要的文件和工具,包括性能测试工具redis-benchmark,日志文件检测工具redis-check-aof,快照文件检测工具redis-check-dump,以及Redis客户端redis-cli和服务端redis-server。然后,需要复制...

    Redis 笔记.pdf

    Redis是一个开源的使用ANSI C语言编写、支持网络、基于内存、可选持久性的键值对存储数据库。由于其速度快、支持多种数据类型、提供多种客户端语言的访问方式等特性,被广泛应用于缓存、消息队列、分布式锁等场景。 ...

    Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记

    Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记Redis笔记

    Redis笔记.md

    ### Redis核心知识点解析 #### 一、Redis简介与特点 Redis是一种开源的、基于内存的存储系统,可以作为数据库、缓存以及消息中间件等多种角色使用。它支持丰富的数据结构,如字符串、哈希表、列表、集合、有序集合...

Global site tag (gtag.js) - Google Analytics