Redis与php

0.写在前面

请务必养成使用redis服务器加密的习惯,在下面操作中使用密码

1.安装与使用

redis官网:https://redis.io/

5.0.6.稳定版:http://download.redis.io/releases/redis-5.0.6.tar.gz

# cd /software
# wget http://download.redis.io/releases/redis-5.0.6.tar.gz
# tar xvf redis-5.0.6.tar.gz
# cd redis-5.0.6
# make PREFIX=/usr/local/redis install
# mv /software/redis-5.0.6/redis.conf /usr/local/redis/

# vim /usr/local/redis/redis.conf
改三行,或自定义
daemonize yes    后台运行
bind 0.0.0.0     准许所有人访问
protected-mode no 取消保护

如果需要密码(自定义)
requirepass 密码

# 开启服务
# /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf
# ss -nltp

# 开启客户端
# /usr/local/redis/bin/redis-cli -h redis服务器IP 

# 进入客户端后,若有密码,先执行
# auth 密码

2.如何操作与使用

手动备份
save    同步
bgsave  异步

3.备份,rdb,aof

rdb是备份数据,aof是备份行为。

# vim /usr/local/redis/redis.conf

rdb默认开启
格式:save 秒  操作次数   

save 900 1			=>  15分钟内最少有1个key改变
save 300 10			=>  5分钟内最少有10个key改变
save 60	 10000		=>  1分钟内最少有10000个key改变

rdb最后一次备份后的数据可能会丢失
rdb会生成一个*.rdb文件,用定时任务,复制这个文件去备份端。

[SNAPSHOTTING]
stop-writes-on-bgsave-error yes    生成快照时错误就停止写
rdbcompression yes    是否压缩
rdbchecksum yes    是否数据校验
dbfilename dump.rdb    备份文件名
dir ./    存放目录


aof默认不开启
appendonly yes

# appendfsync always    =>   操作一次,备份一次
# appendfsync everysec	=>   推荐使用,每1s备份一次
# appendfsync no        =>   不备份

[appendonly]
appendonly no    是否开启
appendfilename "appendonly.aof"    aof文件名
appendfsync everysec    保存模式
no-appendfsync-on-rewrite no    进行rewrite时,是否要继续备份,no就是同步,yes异步
auto-aof-rewrite-percentage 100    自动重写时机,与上次比较增长100%后切割文件。
auto-aof-rewrite-min-size 64mb    64mb之后就切割
aof-load-truncated yes       yes会忽略最后一条可能存在问题的指令,no不管会不会错,就恢复
aof-use-rdb-preamble yes    redis4.0开始允许使用RDB-AOF混合持久化


区别:rdb更粗糙,更便捷,会丢失数据
aof更细致,更缓慢,大概率不丢数据。

3.主从复制

1.在从机客户端中输入
例:replicaof/slaveof 主机IP 主机端口
> replicaof 10.1.1.28 6379
或
> slaveof 10.1.1.28 6379

这是临时的从机设置方法。如果需要永久设置,需要修改配置文件。

2.自动配置主从要修改配置文件
vim /usr/local/redis/redis.conf

[REPLICATION]
replicaof 10.1.1.28 6379
或
slaveof 10.1.1.28 6379

masterauth <master-password>  如果主机端配置文件设置有密码

插:{
    主机密码在哪设置。
    修改主机配置文件
    vim /usr/local/redis/redis.conf
    masterauth 123
}

默认从机不可写,可进行读写分离
slave-read-only yes

3.查看
> info
role:slave
master_host:10.1.1.28
master_port:6379
master_link_status:up
显示up则成功。


4.哨兵模式

哨兵模式就是redis挂了,从机之间争抢master的功能。

# 所有机器一起操作
# redis安装文件夹里有个sentinel.conf,移动它
# cp /software/redis-5.0.6/sentinel.conf /usr/local/redis/

# 配置master的sentinel.conf
# vim /usr/local/redis/sentinel.conf

bind 0.0.0.0
protected-mode no

sentinel monitor <master-name> <ip> <redis-port> <quorum>
sentinel monitor 名字 IP 端口 票数
<quorum>是一个数字,指明当有多少个sentinel认为一个master失效时,master才算真正失效。

sentinel monitor myredis 10.1.1.28 6379 2

如果有密码再补一句
sentinel auth-pass <master-name> <password>

修改保存。
所有机器一起启动服务
# /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel.conf

自行关闭主机的redis-server服务,进行验证。

5.集群

至少需要6个redis实例,三主三从。

可以用一台机器模拟,主要 IP:端口号 不重复就行。

# 六个实例需要六个配置文件。
# touch /usr/local/redis/700{1..6}.conf

集群配置文件精简后仅需要以下几行

port 7001 #端口
cluster-enabled yes #启用集群模式
cluster-config-file nodes_7001.conf
cluster-node-timeout 5000 #超时时间
appendonly yes
daemonize yes #后台运行
protected-mode no #非保护模式
pidfile /var/run/redis_7001.pid

仅写这几行也行,保留原文仅改这几行也行。
7001-7006就修改配置文件中的7001三处即可。

然后需要开启6个redis

# /usr/local/redis/bin/redis-server /usr/local/redis/7001.conf
# /usr/local/redis/bin/redis-server /usr/local/redis/7002.conf
# /usr/local/redis/bin/redis-server /usr/local/redis/7003.conf
# /usr/local/redis/bin/redis-server /usr/local/redis/7004.conf
# /usr/local/redis/bin/redis-server /usr/local/redis/7005.conf
# /usr/local/redis/bin/redis-server /usr/local/redis/7006.conf

若没有报错,且
# ss -nltp
显示端口7001-7006全部被占用,则开启成功。

建立集群
# /usr/local/redis/bin/redis-cli --cluster create IP1:端口1 IP2:端口2 IP3:端口3 IP4:端口4 IP5:端口5 IP6:端口6 --cluster-replicas 1 
# /usr/local/redis/bin/redis-cli --cluster create 10.1.1.28:7001 10.1.1.28:7002 10.1.1.28:7003 10.1.1.28:7004 10.1.1.28:7005 10.1.1.28:7006 --cluster-replicas 1 

自动匹配
Master[0] -> Slots 0 - 5460
Master[1] -> Slots 5461 - 10922
Master[2] -> Slots 10923 - 16383
Adding replica 10.1.1.28:7005 to 10.1.1.28:7001
Adding replica 10.1.1.28:7006 to 10.1.1.28:7002
Adding replica 10.1.1.28:7004 to 10.1.1.28:7003

如果曾经有主从痕迹,则提问是否覆盖。
Can I set the above configuration? (type 'yes' to accept): yes

[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
成功

测试,启动客户端必须加-c,以集群方式启动
/usr/local/redis/bin/redis-cli -c -p 7001

6.php添加redis拓展

# cd /software
# wget https://pecl.php.net/get/redis-5.1.1.tgz
# tar xvf /software/redis-5.1.1.tgz
# cd redis-5.1.1
# phpize

注:[
    phpize若报错是因为,php命令没加入环境变量
    以php安装路径为/usr/local/php/bin为例。
    # echo 'export PATH=$PATH:/usr/local/php/bin' >> /etc/profile
    # source /etc/profile
]

# ./configure && make && make install
# cd /usr/local/php/lib/php/extensions/no-debug-zts...(这个文件夹名字不固定)

-rwxr-xr-x 1 root root 2423256 Nov 20 06:15 redis.so
文件夹里存在这个文件,则安装成功



再配置php文件
# vim /usr/local/php/etc/php.ini
 
搜索Module Settings关键词,在他上面添加一行,
php<7 修改如下:
extension=redis.so
php7 修改如下:
extension=redis
 
# service php-fpm restart


验证
<?php
    phpinfo();
?>
页面中搜索redis,会发现有redis模块

7.补:thinkphp,session与redis

Session驱动

支持指定 Session 驱动,配置文件如下:

return [
    'type'       => 'redis',
    'prefix'     => 'module',
    'auto_start' => true,
     // redis主机
    'host'       => '127.0.0.1',
     // redis端口
    'port'       => 6379,
     // 密码
    'password'   => '',
]

表示使用redis作为session类型。

目前内置支持使用redismemcachememcached作为session驱动类型

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值