Redis的数据管理持久化

一、持久化

因为Redis的数据都在内存中,为了使得Redis在重启后仍能保证数据不丢失,需要将数据从内存中以某种形式同步到硬盘中,这一过程就是持久化。
Redis支持两种方式的持久化:RDB方式、AOF方式
1、RDB方式
RDB持久化方式是通过快照完成的,当符合一定条件时Redis会自动将内存的所有数据进行快照并存储在硬盘上。
进行快照的条件可以由用户在配置文件中自定义,由两个参数构成:时间和改动的键的个数。当在指定时间内,被更改的键的个数大于指定的数值时就会进行快照。
RDB是Redis默认的持久化方式。
快照的过程

  • Redis使用fork函数复制一份当前进程(父进程)的副本(子进程)
  • 父进程继续接受并处理客户端发来的命令,而子进程开始讲内存中的数据写入硬盘的临时文件中
  • 当子进程写入完所有的数据后,会用该临时文件替换旧的RDB文件,至此,一次快照操作完成

2、AOF方式
开启AOF持久化后每执行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘中的AOF文件。

二、复制

一台服务器上的数据库更新后,自动将更新的数据同步到其他服务器上。
redis-server –port 6380 –slaveof 127.0.0.1 6379

此时在数据库中的任何变化都会同步到从数据库
或者SLAVEOF 127.0.0.1 6379 命令同样可以设置哪一个主数据库
通过复制的功能可以实现读写分离以提高服务器的负载能力,主数据库负责写入,而从数据库负责读取。

  • 从数据库的数据持久化
    另一个相对耗时的操作是持久化,为了提高性能,可以通过复制功能建立一个(或若干个)从数据库,并在从数据库中启用持久化,同时在主数据库禁用持久化。当从数据库崩溃时,重启主数据库会自动将数据同步过来,所以无需担心数据的丢失。而当主数据库崩溃时,需要在从数据库中使用slaveof no one 命令将从数据库提升为主数据库继续服务,并在原来的主数据库启动后,使用slaveof 命令,将其设置为新的主数据库的从数据库,即可将数据同步回来。

三、安全性

1、Redis默认配置会接受来自任何地址发送过来的请求,要修改这一配置,在配置文件中修改bind参数
bind 127.0.0.1
2、配置文件中的requierpass参数,为Redis设置密码,发送密码需要 AUTH password
3、重命名Redis的命令

  • Redis支持在配置文件中将命令重命名,比如将flushall命令重命名为一个比较复杂的名字,以保证只有自己的应用可以使用该命令,如下示例:
    rename -command FLUSHALL iqoejduedncjde
  • 如果希望直接禁用某个命令可以将命令重写为空字符串
    rename -command FLUSHALL “”
  • 注意,无论设置密码还是重命名命令,都需要保证配置文件的安全性,否则就没有任何意义了。

四、通信协议

Redis支持两种协议:一种是二进制安全的统一协议,一种是比较直观的便于在telnet程序中输入的简单协议。
telnet host port
Redis的AOF文件和主从复制时,主数据库向从数据库发送的内容都使用了统一请求协议。如果要开发一个和Redis直接通信的客户端,推荐使用此协议。

五、管理工具

1、耗时命令日志
配置文件slowlog-log-slower-than参数设置时长限制
SLOWLOG GET 查看耗时的命令信息
2、命令监控
MONITOR 监控打印所有的命令操作,非常耗费性能
3、phpRedisAdmin
支持以树形结构查看键列表,编辑键值,导入/导出数据库,查看数据库信息和查看键信息功能
4、Rdbtools
Redis快照文件解析器,根据快照文件导出JSON数据文件、分析Redis中每个键的占用空间情况等
rdb –command json /path/to/dump.rdb > output_filename.json

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值