Redis慢查詢日誌、連接php、存儲session、主從配置

Redis慢查詢日誌

redis慢查詢日誌默認開啓,在配置文件中有兩行配置參數:

[root@linux ~]# grep slowlog /etc/redis.conf 
#超時時間,單位微秒,執行超時的命令將會被記錄到慢查詢日誌中
slowlog-log-slower-than 10000
#定義日誌長度,表示最多保留的慢查詢記錄數量
slowlog-max-len 128

#當慢查詢日誌記錄數量達到上限,新增的慢查詢記錄被寫入日誌時,最老的一條記錄會從日誌隊列移除

列出所有慢查詢日誌:

127.0.0.1:6379> SLOWLOG get

只列出5條慢查詢日誌:

127.0.0.1:6379> SLOWLOG get 5

獲取慢查詢日誌的數量:

127.0.0.1:6379> SLOWLOG len

PHP連接Redis

下載php的redis拓展模塊包:

[root@linux ~]# cd /usr/local/src/
[root@linux src]# wget https://pecl.php.net/get/redis-5.1.1.tgz

解壓:

[root@linux src]# tar -zxvf redis-5.1.1.tgz 

生成configure文件:

[root@linux src]# cd redis-5.1.1/
[root@linux redis-5.1.1]# /usr/local/php-fpm/bin/phpize 

配置編譯參數:

[root@linux redis-5.1.1]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config

編譯安裝:

[root@linux redis-5.1.1]# make && make install

編輯php.ini配置文件:

[root@linux ~]# vim /usr/local/php-fpm/etc/php.ini 

添加以下內容:

extension=redis.so

查看redis拓展模塊是否已被加載:

[root@linux ~]# /usr/local/php-fpm/bin/php -m|grep redis
redis

重啓php-fpm服務:

[root@linux ~]# /etc/init.d/php-fpm restart

Redis存儲session

編輯php-fpm.conf配置文件:

[root@linux ~]# vi /usr/local/php-fpm/etc/php-fpm.d/www.conf

添加以下內容:

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

補充: 配置redis存儲session的另外兩種方法

1.vim /usr/local/php-fpm/etc/php.ini
session.save_handler = “redis”
session.save_path = “tcp://127.0.0.1:6379”

2.apache虛擬主機配置文件中添加:
php_value session.save_handler " redis"
php_value session.save_path " tcp://127.0.0.1:6379"

重啓php-fpm:

[root@linux ~]# /etc/init.d/php-fpm restart

新建php腳本:

[root@linux ~]# vi se_test.php

添加以下內容:

<?php 
session_start(); 
if (!isset($_SESSION['TEST'])) { 
$_SESSION['TEST'] = time(); 
} 
$_SESSION['TEST3'] = time(); 
print $_SESSION['TEST']; 
print "<br><br>"; 
print $_SESSION['TEST3']; 
print "<br><br>"; 
print session_id(); 
?> 

將測試腳本放到網站目錄下,請求該文件:

[root@linux ~]# curl localhost/se_test.php
1576226429<br><br>1576226429<br><br>df5d41226jf31v8j7v1at7sen3 

連接redis查看:

[root@linux ~]# redis-cli 
127.0.0.1:6379> keys *
1) "PHPREDIS_SESSION:df5d41226jf31v8j7v1at7sen3"

127.0.0.1:6379> get PHPREDIS_SESSION:df5d41226jf31v8j7v1at7sen3
"TEST|i:1576226429;TEST3|i:1576226429;"

#session已被redis存儲

補充: 如果php連接的是redis集羣,需要用predis拓展模塊的包,安裝方法類似phpredis,predis拓展模塊地址 https://github.com/nrk/predis

Redis主從配置

配置redis主從時,主不變,編輯從機器的redis配置文件即可:

[root@linux02 ~]# vim /etc/redis.conf 

添加以下內容:

replicaof 192.168.234.128 6379

#指定master的ip和端口(master配置文件中bind定義的ip)

如果master redis設置了連接密碼,需要在添加一行配置指定密碼:

masterauth  test123

#假設密碼爲test123

還需要注意一行配置:

replica-read-only yes

#表示slave redis爲只讀

啓動slave redis:

[root@linux02 ~]# redis-server /etc/redis.conf 

連接後查看master redis的數據是否已經同步到slave redis:

[root@linux02 ~]# redis-cli 
127.0.0.1:6379> keys *
1) "key2"

#已成功同步

查看日誌:

11586:S 15 Dec 2019 14:32:09.860 * Connecting to MASTER 192.168.234.128:6379
11586:S 15 Dec 2019 14:32:09.861 * MASTER <-> REPLICA sync started
11586:S 15 Dec 2019 14:32:09.862 * Non blocking connect for SYNC fired the event.
11586:S 15 Dec 2019 14:32:09.864 * Master replied to PING, replication can continue...
11586:S 15 Dec 2019 14:32:09.865 * Partial resynchronization not possible (no cached master)
11586:S 15 Dec 2019 14:32:09.867 * Full resync from master: acc4e63222b46b508a9398f11e0399343984b4c0:0
11586:S 15 Dec 2019 14:32:09.917 * MASTER <-> REPLICA sync: receiving 191 bytes from master
11586:S 15 Dec 2019 14:32:09.917 * MASTER <-> REPLICA sync: Flushing old data
11586:S 15 Dec 2019 14:32:09.917 * MASTER <-> REPLICA sync: Loading DB in memory
11586:S 15 Dec 2019 14:32:09.917 * MASTER <-> REPLICA sync: Finished with success

在slave redis上創建key:

127.0.0.1:6379> set key5 test
(error) READONLY You can't write against a read only replica.

#由於配置文件中定義只讀的配置爲yes,所以slave redis不可寫入

補充: redis主從與mysql主從不同,redis主從不用事先同步好數據,配置完成後即可自動同步

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章