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.