目录
Redis简介
Redis是一个key-value存储系统。和Memcached类似,它支持丰富的数据类型,最为常用的数据类型主要有五种,分别是:string(字符串)、 hash(哈希)、list(链表)、set(集合)和zset(有序集合)。Redis通常将数据存储于内存中,或被配置为使用虚拟内存。与memcached不同的是,redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,以此来达到数据持久化的目的,并且在此基础上实现了master-slave(主从)同步。当前 Redis的应用已经非常广泛,国内像新浪、淘宝,国外像 Flickr、Github等均在使用Redis的缓存服务。
环境要求
- Windows 64位操作系统
- php-7.2.2-Win32-VC15-x64
- Redis-x64-4.0.2.2
- php_redis-4.0.2-7.2-ts-vc15-x64
- php_igbinary-2.0.7-7.2-ts-vc15-x64(php_redis扩展依赖)
资源下载地址
php7.2、Redis、php-redis、php-igbinary
注意事项:windows环境下,https://github.com/MicrosoftArchive/redis/releases资源列表里面能找到的最新版本为3.2,但是却没有资源库能够提供对应版本的php-redis扩展,真TM扯淡。
安装Redis
将下载下来的redis压缩包Redis-x64-4.0.2.2.zip解压至某个目录,如图:
根据自己所采用的启动方式,修改对应的配置文件。另外,出于安全方面的考虑,通常需要为redis设置连接密码,找到配置文件中含有requirepass foobared字样的行,在其下面新增一行,如图:
设置Redis连接密码后,客户端在连接Redis时需要通过AUTH <password>命令提供密码。
数据持久化
Redis提供了两种持久化的方式,将内存中的数据,存储在磁盘上。分别是rdb和aof(默认关闭),默认使用的是rdb方式,我们可以根据自己的需求,决定采用哪一种方式。
RDB方式
Redis通过创建快照的方式获取某一时刻Redis中所有数据的副本,然后将其存放在指定的磁盘文件中。用户可以针对该快照进行各种操作,比如:将快照文件复制到其他服务器从而完成Redis的主从复制,或者将快照留在原地,服务器重启的时候重用数据。
rdb配置
# 配置rdb文件名
dbfilename dump.rdb
# 配置rdb文件目录
dir ./
# 策略配置
# 在规定的时间内,Redis发生写操作的个数满足条件,会触发持久化命令。
# 当用户设置了多个save的选项配置,只要其中任一条满足,Redis都会触发一次持久化操作,比如:900秒之内至少一次写操作,或者300秒之内至少发生10次写操作,或者60秒之内至少发生10000次写操作都会触发快照命令。
save 900 1
save 300 10
save 60 10000
AOF方式
Redis的AOF持久化策略是将发送到Redis服务器端的每一条命令都记录下来,并且保存到硬盘的AOF文件中,类似于打开日志文件,来一条命令就记录一条。
aof配置
# 是否开启AOF模式,默认为no,yes表示开启
appendonly no
# 配置aof文件名
appendfilename "appendonly.aof"
# 配置aof文件目录
dir ./
# AOF同步频率,默认为 everysec
# always 表示每次有数据发生修改时都会写入AOF文件,这种方式会严重降低redis的性能。
# everysec 表示表示每秒钟同步一次,该策略为AOF的缺省策略。
# no 表示让操作系统来决定应该何时进行同步,Linux系统往往可能30秒才会执行一次
appendfsync everysec
# yes表示新写操作不进行同步,只是暂存在缓冲区里,避免造成磁盘IO操作冲突,等重写完成后再写入,默认为no
no-appendfsync-on-rewrite no
# Redis恢复时,是否忽略最后一条可能存在问题的指令(因为最后一条指令可能存在问题,比如写一半时突然断电了),默认为yes
aof-load-truncated yes
注意:如果RDB与AOF同时开启,Redis 默认会先加载AOF的配置文件。
主从复制
在Redis中实现主从复制比较简单,只需要修改slave服务器配置文件中的slave相关参数即可。