您的位置:首页 > 数据库 > Redis

redis进阶

2015-08-24 14:07 441 查看
redis入门博客地址:Redis入门

一、安全性

可以在增加requirepass 密码,则客户端连接服务器时需要密码认证才能连接redis服务器。

二、Redis主从备份

redis主从复制过程:

1.Slave与master建立连接,发送sync同步命令

2.Master会启动一个后台进程,将数据库快照保存到文件中,同时master进程会开始收集新的写命令并缓存。

3.后台完成保存后,就将此文件发送给slave

4.Slave将此文件保存到硬盘上

具体的配置:

克隆一台配置好的虚拟机(被克隆的机器作为Master主服务器,克隆后的机器作为Slave从服务器)。然后修改克隆后的机器的配置,修改其mac地址,ip地址,主机名hostname。然后修改redis配置,要设置slave机器为master的从服务器:

slaveof主服务器 端口


注意:当redis设置主从备份后,slave默认就是只读模式,无法进行写入。

如果进行写操作则会报如下的错误:

(error) READONLY You can't write against a read only slave.

问题:是否有必要开启redis的写操作权限呢?

http://www.tuicool.com/articles/VBzMz2u

那是不是只要用redis的话,就尽量打开slave可写选项呢?我认为,这个选项尽量不要打开。事实上,默认的redis.conf也是没有打开这个选项。原因是,即使打开了这个选项,向redis slave中写了数据,写入的数据也不会同步到master。所以,redis支持的是master-slave结构,而不是master-master这种双活结构。

当下一次,master上的数据又有所修改之后,这个数据又会同步到slave上,slave上临时写入的数据就会丢失。

演示redis的主从切换

需要三台虚拟机,一台主服务器,一台从服务器,一台redis sentinel做集群监控。

参考博客:redis主从切换集群管理

三、Redis中的事务

Redis中的事务是一组命令的集合。

四、持久化机制

参考网址:Redis持久化



Redis支持的持久化方式


redis支持四种持久化方式:

1.Snapshotting(快照)

快照是Redis默认的持久化方式。

在默认情况下,Redis将数据库快照保存在名字为 dump.rdb 的二进制文件中。

你可以对Redis进行设置,让它在“N秒内数据集至少有M个改动”这一条件被满足时,自动保存一次数据集。

你也可以通过调用 SAVE 或者 BGSAVE ,手动让Redis进行数据集保存操作。

比如说,以下设置会让Redis在满足“60秒内有至少有1000个键被改动”这一条件时,自动保存一次数据集:

save 60 1000   //60秒内有至少有1000个键被改动
这种持久化方式被称为快照(snapshot)。

我们也可以手动的触动快照操作,使用的命令是SAVE和BGSAVE.

BGSAVE命令会进行后台保存。

2.Append-only file(缩写aof)的方式

默认情况下Redis没有开启AOF方式的持久化,可以通过appendonly参数开启。

appendonly yes
开启AOF持久化后每执行一条更改Redis中的数据的命令,Redis就会将改命令写入到硬盘的AOF文件中。AOF文件的保存位置与RDB文件的保存位置相同,都是可以通过dir参数设置的,默认的文件名是appendonly.conf,可以通过appendfilename参数修改:

appendfilename appendonly.aof
默认情况下系统每30秒回执行一次同步操作,以便将硬盘缓存中的内容真正地写入硬盘,在这30秒的过程中如果系统异常退出则会导致硬盘缓存中的数据丢失。

3.虚拟内存方式

4.diskstore方式

RDB 和 AOF ,我应该用哪一个?

一般来说,如果想达到足以媲美 PostgreSQL 的数据安全性,你应该同时使用两种持久化功能。

如果你非常关心你的数据,但仍然可以承受数分钟以内的数据丢失,那么你可以只使用 RDB 持久化。

有很多用户都只使用AOF持久化,但我们并不推荐这种方式:因为定时生成RDB快照(snapshot)非常便于进行数据库备份,

并且RDB恢复数据集的速度也要比 AOF 恢复的速度要快,

除此之外,使用 RDB 还可以避免之前提到的AOF程序的bug。

遇到问题

操作redis时,报过这样的错误:

(error) MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Commands that may modify the data set are disabled. Please check Redis logs for details about the error.

解决方法:

redis-cli
config set stop-writes-on-bgsave-error no


redis有4种持久化方式。

RDB

Redis默认的持久化方式是快照。

AOF

快照模式可以和AOF模式同时开启,互不影响

五、发布订阅消息

消息publish/subscribe

六、虚拟内存的使用

七、Redis在项目中的使用

redis可以作为缓存层。

比较典型的场景是登录,可以用来做分布式session管理(session共享)

基于redis的list可以实现消息队列。这个是非常有用的一个了。

发布订阅:消息publish/subscribe 。

Redis作者谈Redis应用场景
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: