21.16 redis操做鍵值php
21.17 redis安全設置linux
21.18 redis慢查詢日誌git
21.19 php安裝redis擴展模塊github
21.20 redis存儲sessionweb
21.16 Redis經常使用操做(鍵值) redis
查看redis的鍵值,支持模糊匹配,例如:#key k*數據庫
127.0.0.1:6379> keys * 1) "h1" 2) "key" 3) "list1" 4) "key2" 5) "key3" 6) "zseta" 7) "11" 8) "set1" 9) "key1" 10) "set2" 11) "set3"
keys * //取出全部keyapache
keys my* //模糊匹配vim
exists name //有name鍵 返回1 ,不然返回0;centos
del key1 // 刪除一個key //成功返回1 ,不然返回0;
EXPIRE key1 100 //設置key1 100s後過時
ttl key // 查看鍵 還有多長時間過時,單位是s,當 key 不存在時,返回 -2 。 當 key 存在但沒有設置剩餘生存時間時,返回 -1 。 不然,返回 key 的剩餘生存時間。
select 0 //表明選擇當前數據庫,默認進入0 數據庫
move age 1 // 把age 移動到1 數據庫
示例:
127.0.0.1:6379> SMEMBERS set2 1) "3" 2) "2" 3) "4" 4) "c" 5) "b" 6) "5" 127.0.0.1:6379> MOVE set2 1 (integer) 1 127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]> keys * 1) "set2"
persist key1 //取消key1的過時時間
示例:
127.0.0.1:6379> EXPIRE 11 1000 (integer) 1 127.0.0.1:6379> TTL 11 (integer) 996 127.0.0.1:6379> PERSIST 11 (integer) 1 127.0.0.1:6379> TTL 11 (integer) -1 #key值存在,可是沒有過時時間
randomkey //隨機返回一個key
127.0.0.1:6379> RANDOMKEY "key3" 127.0.0.1:6379> RANDOMKEY "set1" 127.0.0.1:6379> RANDOMKEY "set3" 127.0.0.1:6379> RANDOMKEY "set1"
rename oldname newname //重命名key
127.0.0.1:6379> RENAME 11 key11 OK 127.0.0.1:6379> keys key11
1) "key11"
type key1 //返回鍵的類型
示例:
127.0.0.1:6379> TYPE h1 hash 127.0.0.1:6379> TYPE key11 string 127.0.0.1:6379> TYPE set3 zset
Redis經常使用操做(服務)
dbsize //返回當前數據庫中key的數目
127.0.0.1:6379> keys * 1) "key11" 2) "h1" 3) "key" 4) "list1" 5) "key2" 6) "key3" 7) "zseta" 8) "set1" 9) "key1" 10) "set3" 127.0.0.1:6379> DBSIZE (integer) 10
info //返回redis數據庫狀態信息
flushdb //清空當前數據庫中全部的鍵
127.0.0.1:6379> SELECT 1 OK 127.0.0.1:6379[1]> keys * 1) "set2" 127.0.0.1:6379[1]> FLUSHDB OK 127.0.0.1:6379[1]> keys * (empty list or set)
flushall //清空全部數據庫中的全部的key
bgsave //保存數據到 rdb文件中,在後臺運行
適用環境:內存寫入redis數據量龐大,須要遷移到後臺rdb文件操做。
響應速度:取決於數據量的多少。
save //做用同上,可是在前臺運行
操做環境:當前窗口
config get * //獲取全部配置參數
127.0.0.1:6379[1]> CONFIG GET * . . . 164) "" 165) "notify-keyspace-events" 166) "" 167) "bind" 168) "127.0.0.1"
config get dir //獲取配置參數
127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/data/redis" 127.0.0.1:6379> CONFIG GET bind 1) "bind" 2) "127.0.0.1" 127.0.0.1:6379> CONFIG GET dbfilename 1) "dbfilename" 2) "dump.rdb"
config set dir //更改配置參數
127.0.0.1:6379> CONFIG SET timeout 100 OK 127.0.0.1:6379> CONFIG GET timeout 1) "timeout" 2) "100"
數據恢復: 首先定義或者肯定dir目錄和dbfilename,而後把備份的rdb文件放到dir目錄下面,重啓redis服務便可恢復數據
127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/data/redis" 127.0.0.1:6379> CONFIG GET dbfilename 1) "dbfilename" 2) "dump.rdb" #dump.rdb的名字能夠自定義更改
21.17 Redis安全設置
iptables設置對6379端口的保護,以避免涉外操控。
設置監聽ip
bind 127.0.0.1 2.2.2.2 #能夠是多個ip,用空格分隔
(若是不設置這個配置,默認監聽全部,公網ip,內網ip。。。)
設置監聽端口
port 16000
設置密碼
修改參數(若是無該參數,手動追加)
格式:requirepass 密碼
vim /etc/redis.conf
# even if no authentication is configured, nor a specific set of interfaces # are explicitly listed using the "bind" directive. protected-mode yes requirepass 1616>1616 #添加requirepass參數定義登陸密碼
修改參數後,重啓redis服務並鏈接redis數據庫
killall redis-server redis-server /etc/redis.conf redis-cli -a "1616>1616"
登陸命令:
# redis-cli -a '1616>1616' 127.0.0.1:6379> keys * 1) "key11" 2) "h1" 3) "key" 4) "list1" 5) "key2" 6) "key3" 7) "zseta" 8) "set1" 9) "key1" 10) "set3"
將config命令更名
config命令在redis的效果
127.0.0.1:6379> CONFIG GET dir 1) "dir" 2) "/data/redis"
這是修改前的效果,config能獲取不少數據,若是×××***會獲取核心數據內容。
修改參數(若是無該參數,手動追加): rename-command CONFIG aming
vim /etc/redis.conf # security of read only slaves using 'rename-command' to shadow all the # administrative / dangerous commands. slave-read-only yes rename-command CONFIG kevin #添加參數,修改config的命令符爲"kevin",意思就是鍵入kevin至關於鍵入config的效果 修改參數後,重啓redis服務並鏈接redis數據庫 killall redis-server redis-server /etc/redis.conf redis-cli -a "1616>1616"
能夠看到"kevin"命令已經生效
127.0.0.1:6379> kevin get dir 1) "dir" 2) "/data/redis" 而"config"命令已經失效 127.0.0.1:6379> CONFIG GET dir (error) ERR unknown command 'CONFIG'
禁掉config命令
#把「」引用部分的內容改空便可
rename-command CONFIG 「」
21.18 redis慢查詢日誌
開啓慢查詢日誌功能
編輯配置文件/etc/redis.conf
vim /etc/redis.conf slowlog-log-slower-than 10000 slowlog-max-len 128
解釋:
針對慢查詢日誌,能夠設置兩個參數,一個是執行時長,單位是微秒,另外一個是慢查詢日誌的長度。當一個新的命令被寫入日誌時,最老的一條會從命令日誌隊列中被移除。
slowlog-log-slower-than 1000 #單位ms,表示慢於1000ms則記錄日誌
slowlog-max-len 128 #定義日誌長度,表示最多存128條
修改慢查詢的參數爲10ms進行測試(其實正常執行的命令都>10ms)
將
slowlog-log-slower-than 10000
改爲
slowlog-log-slower-than 10
修改後重啓redis
killall redis-server redis-server /etc/redis.conf redis-cli -a "1616>1616"
鍵入任意執行命令進行測試
127.0.0.1:6379> SLOWLOG get 1) 1) (integer) 0 2) (integer) 1534932088 3) (integer) 1035 4) 1) "COMMAND" 5) "127.0.0.1:44242" 6) "" 127.0.0.1:6379> keys * 1) "key2" 2) "key11" 3) "key1" 4) "h1" 5) "set1" 6) "zseta" 7) "list1" 8) "key3" 9) "set3" 10) "key" 127.0.0.1:6379> keys set3 1) "set3"
slowlog get //列出全部的慢查詢日誌
127.0.0.1:6379> SLOWLOG get 1) 1) (integer) 3 2) (integer) 1534932157 3) (integer) 23 4) 1) "keys" 2) "set3" 5) "127.0.0.1:44242" 6) "" 2) 1) (integer) 2 2) (integer) 1534932144 3) (integer) 61 4) 1) "keys" 2) "*" 5) "127.0.0.1:44242" 6) "" 3) 1) (integer) 1 2) (integer) 1534932130 3) (integer) 18 4) 1) "SLOWLOG" 2) "get" 5) "127.0.0.1:44242" 6) "" 4) 1) (integer) 0 2) (integer) 1534932088 3) (integer) 1035 4) 1) "COMMAND" 5) "127.0.0.1:44242" 6) ""
slowlog get 1 //列出最近的1條慢查詢
127.0.0.1:6379> SLOWLOG get 1 1) 1) (integer) 4 2) (integer) 1534932175 3) (integer) 389 4) 1) "SLOWLOG" 2) "get" 5) "127.0.0.1:44242" 6) ""
slowlog get 2 //只列出最近的2條
127.0.0.1:6379> SLOWLOG get 2
1) 1) (integer) 5 2) (integer) 1534932261 3) (integer) 43 4) 1) "SLOWLOG" 2) "get" 3) "1" 5) "127.0.0.1:44242" 6) "" 2) 1) (integer) 4 2) (integer) 1534932175 3) (integer) 389 4) 1) "SLOWLOG" 2) "get" 5) "127.0.0.1:44242" 6) ""
slowlog len //查看慢查詢日誌條數
127.0.0.1:6379> SLOWLOG len (integer) 7
21.19 php安裝redis擴展模塊
PHP中使用redis – 安裝擴展模塊
cd /usr/local/src wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip unzip phpredis.zip cd phpredis-develop /usr/local/php-fpm/bin/phpize ./configure --with-php-config=/usr/local/php-fpm/bin/php-config make make install vim /usr/local/php.ini ##增長extension=redis.so ##看是否有redis模塊 /usr/local/php-fpm/bin/php -m|grep redis redis ##重啓php-fpm服務
21.20 redis存儲session
PHP中使用redis – 存儲session
vim /usr/local/php-fpm/etc/php.ini #更改或增長 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中增長:
vim /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.conf的密碼給刪掉或者註釋掉 vim /etc/redis.conf #requirepass 1818.1818
下載測試文件
進入localhost的目錄
cd /data/web/kevin.com/ wget http://study.lishiming.net/.mem_se.txt mv .mem_se.txt 11.php
其中11.php內容能夠參考https://coding.net/u/aminglinux/p/yuanke_centos7/git/blob/master/21NOSQL/session.php
或者手動添加php測試參數
vim 11.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(); ?>
屢次curl 取key-value數據
[root@AliKvn kevin.com]# curl localhost/11.php 1535016218<br><br>1535016218<br><br>mh2404u6koq5s7q8lvmothf385 [root@AliKvn kevin.com]# curl localhost/11.php 1535016219<br><br>1535016219<br><br>nsvpsvca8kgg0ars2gpjavm5g2 [root@AliKvn kevin.com]# curl localhost/11.php 1535016219<br><br>1535016219<br><br>gvus9tekjoaac0i2d9lu0g12d1 [root@AliKvn kevin.com]# curl localhost/11.php 1535016220<br><br>1535016220<br><br>mp9rmfj0f0simu450hp1gkh090 [root@AliKvn kevin.com]# curl localhost/11.php 1535016220<br><br>1535016220<br><br>jorriqau86qu9t9appjg94m4f2
進入數據庫
查key值
[root@AliKvn kevin.com]# redis-cli 127.0.0.1:6379> keys * 1) "key1" 2) "PHPREDIS_SESSION:jorriqau86qu9t9appjg94m4f2" 3) "key2" 4) "PHPREDIS_SESSION:mh2404u6koq5s7q8lvmothf385" 5) "list1" 6) "PHPREDIS_SESSION:nsvpsvca8kgg0ars2gpjavm5g2" 7) "PHPREDIS_SESSION:mp9rmfj0f0simu450hp1gkh090" 8) "set3" 9) "list11" 10) "set1" 11) "zseta" 12) "PHPREDIS_SESSION:sm284t8p6bsdraovvkildjt1a0" 13) "hash1" 14) "seta" 15) "key10" 16) "key3" 17) "set2" 18) "PHPREDIS_SESSION:gvus9tekjoaac0i2d9lu0g12d1"
查看key的value
127.0.0.1:6379> get "PHPREDIS_SESSION:sm284t8p6bsdraovvkildjt1a0" "TEST|i:1535016167;TEST3|i:1535016167;" 解釋: get "PHPREDIS_SESSION:sm284t8p6bsdraovvkildjt1a0" #這個是key "TEST|i:1535016167;TEST3|i:1535016167;" #這個是value
針對redis集羣
若是想用php鏈接redis cluster,須要使用predis擴展
安裝方法相似phpredis,predis擴展地址https://github.com/nrk/predis