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主從不用事先同步好數據,配置完成後即可自動同步