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