21.16-21.20 redis:操做键值,安全设置,慢查询日志,php模块,存储session

  • 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

相关文章
相关标签/搜索