redis慢日志和redis主从复制配置

Redis慢查询日志:

vim /etc/redis.conf

slowlog-log-slower-than 10000

Redis也有跟MySQL类似的慢查询日志,该参数定义一个查询执行时间超过10000微秒则会记录日志。其中1秒=1000000微秒。

slowlog-max-len 128

该参数定义慢查询日志最大的条数。其实,Redis的slow log也是保存在内存中,也是一种k/v形态的数据。

补充:

slowlog get //列出所有的慢查询日志

slowlog get 2 //只列出2条

slowlog len //查看慢查询日志条数

PHP中使用Redis(没有安装php的安装前面文档安装)

php安装redis扩展模块 - 使用pecl安装

/usr/local/php-fpm/bin/pecl install redis

报错:Cannot find autoconf. Please check your autoconf installation and the$PHP_AUTOCONF environment variable. Then, rerun this script.

ERROR: `phpize' failed

解决:yum -y install m4 autoconf

重新使用pecl安装:

/usr/local/php-fpm/bin/pecl install redis

vim /usr/local/php/etc/php.ini //最后一行增加extension = redis.so

查看是否有redis模块

/usr/local/php-fpm/bin/php -m

通过源码安装

wget http://pecl.php.net/get/redis-5.3.2.tgz

tar -xzvf redis-5.3.2.tgz

cd redis-5.3.2

/usr/local/php-fpm/bin/phpize

./configure --with-php-config=/usr/local/php-fpm/bin/php-config

make && make install

vi /usr/local/php/etc/php.ini //增加extension = redis.so

php**中使用**redis - 存储**session**

vim /usr/local/php-fpm/etc/php.ini

;session.save_handler = files

下面增加两行

session.save_handler = "redis"

session.save_path = "tcp://127.0.0.1:6379"

或者apache虚拟主机配置文件中也可以这样配置:

php_value session.save_handler "redis"

php_value session.save_path "tcp://127.0.0.1:6379"

或者php-fpm配置文件对应的pool中增加:

php_value[session.save_handler] = redis

php_value[session.save_path] = "tcp://127.0.0.1:6379"

创建测试文件

wget http://study.lishiming.net/.mem_se.txt

mv .mem_se.txt session.php

测试:/usr/local/php-fpm/bin/php session.php

Redis主从配置

通过持久化功能,Redis保证了即使在服务器重启的情况下也不会丢失(或少量丢失)数据,但是由于数据是存储在一台服务器上的,如果这台服务器出现故障,比如硬盘坏了,也会导致数据丢失。

为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他服务器依然可以继续提供服务。

这就要求当一台服务器上的数据更新后,自动将更新的数据同步到其他服务器上,这时候就用到了Redis的主从复制。

两台linux:

主redis :192.168.111.136

从redis :192.168.111.140

主redis设置密码:

vim /etc/redis.conf

requirepass admin123

appendonly yes

bind 127.0.0.1 192.168.111.136

从redis上修改配置

vim /etc/redis.conf

# replicaof <masterip> <masterport>

replicaof 192.168.111.136 6379

# masterauth <master-password>

masterauth admin123

bind 127.0.0.1 192.168.111.140

重新启动主从的redis服务

systemctl restart redis

测试:主redis创建key,看从redis是否同步显示

主redis:

[root@jinkai redis-6.0.6]# redis-cli

127.0.0.1:6379> auth admin123

OK

127.0.0.1:6379> info replication

# Replication

role:master

connected_slaves:1

slave0:ip=192.168.111.140,port=6379,state=online,offset=294,lag=0

master_replid:a678d12ebaea9481bc9d322ef9b9fcc8330a2c3d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:294

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:1

repl_backlog_histlen:294

127.0.0.1:6379> flushall

OK

127.0.0.1:6379> set km1 vm1

OK

127.0.0.1:6379> get km1

"vm1"

从redis:

[root@jinkai redis-6.0.6]# redis-cli -a admin123

Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.

Warning: AUTH failed

127.0.0.1:6379> info replication

# Replication

role:slave

master_host:192.168.111.136

master_port:6379

master_link_status:up

master_last_io_seconds_ago:3

master_sync_in_progress:0

slave_repl_offset:350

slave_priority:100

slave_read_only:1

connected_slaves:0

master_replid:a678d12ebaea9481bc9d322ef9b9fcc8330a2c3d

master_replid2:0000000000000000000000000000000000000000

master_repl_offset:350

second_repl_offset:-1

repl_backlog_active:1

repl_backlog_size:1048576

repl_backlog_first_byte_offset:99

repl_backlog_histlen:252

127.0.0.1:6379> get km1

"vm1"

向从redis写入数据默认replica-read-only yes,如果为no则可以向从写数据

127.0.0.1:6379> set ks1 vs1

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

猜你喜欢

转载自blog.51cto.com/11451960/2640782