[关闭]
@zhengyuhong 2015-04-11T12:03:50.000000Z 字数 1805 阅读 1024

redis入门指南

redis NoSql 读书笔记


2、准备

文件名 说明
redis-server Redis服务器
redis-cli Redis Redis命令行客户端
redis-benchmark Redis性能测试工具
redis-check-aof AOF文件修复工具
redis-check-dump RDB文件检查工具

5、Python与Redis

Redis官方推荐的Python客户端是redis-py,可以使用pip install redis安装最新版redis-py

7管理

7.1、持久化

  Redis的强劲性能很大程度上是由于其将所有数据都存储在内存中,为了使Redis在重启之后仍能保存数据不丢失,需要将数据持久化到硬盘中。

7.1.1、RDB方式

  RDB方式的持久化通过快照(snapshotting)方式完成的,当符合一定条件时Redis会自动将内存中的所有数据进行快照并保存到硬盘当中。进行快照条件可以由用户在配置文件中自定义,由两个参数决定:时间和改动键的个数。当在指定时间内被更改的键的个数大于指定数值就进行快照。RDB是Redis默认的持久化方式。在配置文件中默认指定三个条件:
  save 900 1
  save 300 10
  svae 60 100000
  条件之间是“或”关系。如上所说,save 900 1就是在900秒中至少由一个键被修改则进行快照持久化。
  Redis默认会将快照文件存储在当前目录的dump.rdb文件中,可以通过配置dir和dbfilename两个参数分别指定快照文件的存储路径和文件名。
  快照的过程如下:
  (1)Redis使用fork函数复制一份当前进程的副本
  (2)原进程继续接收客户端发来的命令,而子进程则开始将内存中的数据写入硬盘的临时文件。
  (3)当子进程写入完所有数据后会使用该临时文件替换旧的RDB文件,至此快照操作完成。(上述其实就是一个copy and swap的过程,在effective C++中由讲到)

7.1.2、AOF(append only file)方式

  默认情况下Reids没有开启AOF方式的持久化,可以通过配置文件中的appendonly yes参数开启。
  开启AOF持久化后美之行一条会更改Redis中的数据的命令,Redis就会将该命令写入硬盘的AOF文件。AOF文件的保存位置于RDB文件的位置相同,同样快通过dir参数设置,默认的文件名是appendonly.aof
  需要注意的是虽然每一次更改数据库内存的操作时,AOF都会将命令记录在AOF文件中,但是事实上由于操作系统的缓存机制,数据并没有真正地写入硬盘,而是进入落系统的硬盘缓存。在默认情况下系统每30秒的过程会执行一次同步操作,以便将缓存中的内容真正写入硬盘,在这里30秒的过程中如果系统异常退出会导致硬盘缓存中的数据丢失。一般来说启用AOF持久化的应用都无法容忍这样的丢失,这就需要Redis在写入AOF文件后主动将系统的缓存内容同步到硬盘中。在Redis中可以通过设置appendfsync参数设置同步时机。
  #appendfsync always
  appendfsync everysec
  #appendfsync no(every 30 seconds)
  Redis允许同时启动AOF与RDB

7.2、复制

  通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或者少量损失)数据。但是数据是存储在一台服务器上的,如果这台服务器硬盘出现故障,也会导致数据丢失。为了避免单点故障,我们希望数据库复制多个副本以部署在不同的服务器上,即使一台服务器出现故障,其他服务器依然可以继续提供服务。这就要求一台服务器上的数据库更新后,可以自动将更新的数据同步到其他服务器上,Redis提供落复制功能可以自动实现同步的过程。

7.2.1、配置

  同步后的数据库分为两类,一类是主数据库(master),一类是从数据库(slave)。主数据库可以进行读写操作,而发生写操作时自动将数据同步到从数据库。而从数据库一般只能读操作,并接收主数据库同步过来的数据。一个主数据库可以拥有多个从数据库,而一个从数据库只能拥有一个主数据库。
  在Redis中复制功能非常容易,只需要在从数据库的配置文件中加入slaveof <masterip> <masterport>即可,主数据库无须任何配置,如果主数据库由密码认证,也在配置文件中的masterauth <master-passwd>

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注