redis操作键值,redis的慢查询日志,php安装redis扩展模块,session存储到redis

redis操作键值

查看数据库中所有带的key
127.0.0.1:6379> keys *
 1) "myk"
 2) "k3"
 3) "k1"
 4) "zset1"
 5) "key1"
 6) "set2"
 7) "list2"
 8) "mykey"
 9) "hset1"
10) "hash1"
11) "set3"
12) "k2"
13) "set4"
14) "set1"
15) "seta"
16) "set5"
17) "key2"
18) "list1"

支持模糊匹配
127.0.0.1:6379> keys my*
1) "myk"
2) "mykey"

判断一个key是否存在
127.0.0.1:6379> EXISTS key1
(integer) 1
存在返回1
127.0.0.1:6379> EXISTS sh
(integer) 0
不存在返回0

删除一个键
127.0.0.1:6379> del key1
(integer) 1
127.0.0.1:6379> get key1
(nil)

给一个key设置过期时间
127.0.0.1:6379> EXPIRE key2 10
(integer) 1
127.0.0.1:6379> get key2
"linux"
127.0.0.1:6379> get key2
"linux"
127.0.0.1:6379> get key2
"linux"
127.0.0.1:6379> get key2
(nil)

查看key有多长时间过期
127.0.0.1:6379> EXPIRE k2 15
(integer) 1
127.0.0.1:6379> ttl k2
(integer) 12
127.0.0.1:6379> ttl k2
(integer) 7
127.0.0.1:6379> ttl k2
(integer) 4
127.0.0.1:6379> ttl k2
(integer) 1
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379> ttl k2
(integer) -2
127.0.0.1:6379> get k2
(nil)
#当key已经不存在时,返回-2
#当key存在但是没有设置失效时间时,返回-1

选择那一个数据库,默认数据是0,一共16个库
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

将一个key移动到其他数据库
127.0.0.1:6379> MOVE myk 1
(integer) 1
127.0.0.1:6379> SELECT 1
OK
127.0.0.1:6379[1]> keys *
1) "myk"

取消key的过期时间
127.0.0.1:6379> EXPIRE mykey 1000
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) 994
127.0.0.1:6379> PERSIST mykey
(integer) 1
127.0.0.1:6379> ttl mykey
(integer) -1

随机返回一个key
127.0.0.1:6379> RANDOMKEY
"set5"
127.0.0.1:6379> RANDOMKEY
"zset1"
127.0.0.1:6379> RANDOMKEY
"set4"

重命名一个key
127.0.0.1:6379> keys set*
1) "set2"
2) "set3"
3) "set4"
4) "set1"
5) "seta"
6) "set5"
127.0.0.1:6379> RENAME seta set6
OK
127.0.0.1:6379> keys set*
1) "set2"
2) "set3"
3) "set4"
4) "set1"
5) "set6"
6) "set5"

查看key的类型
127.0.0.1:6379> TYPE set5
set
127.0.0.1:6379> TYPE set6
zset

redis操作(服务)

查看数据库中key的数目
127.0.0.1:6379> DBSIZE
(integer) 14
127.0.0.1:6379> keys *
 1) "k3"
 2) "k1"
 3) "zset1"
 4) "set2"
 5) "list2"
 6) "mykey"
 7) "hset1"
 8) "hash1"
 9) "set3"
10) "set4"
11) "set1"
12) "set6"
13) "set5"
14) "list1"

查看数据库状态信息
127.0.0.1:6379> info

清空当前数据库中所有的key
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "myk"
127.0.0.1:6379[1]> flushdb
OK
127.0.0.1:6379[1]> keys *
(empty list or set)

清空所有数据库中所有的键
127.0.0.1:6379[1]> flushall

保存数据到rdb文件中,在后台运行:
127.0.0.1:6379> bgsav
同上,在前台运行:
127.0.0.1:6379> save

获取所有的配置文件参数
127.0.0.1:6379[1]> CONFIG GET *

查看指定参数
127.0.0.1:6379[1]> config get port
1) "port"
2) "6379"
127.0.0.1:6379[1]> config get dir
1) "dir"
2) "/data/redis"

数据恢复

首先定义或确定dir目录和dbfilename,然后把备份的rdb文件放到dir目录下面,重启Redis即可恢复数据。

redis的安全设置

redis漏洞:redis被黑导致系统被黑,redis服务监听全网IP,并且服务器没有做iptables规则,没有对6379端口进行限制,就能远程连接你的redis服务器。并且,你的redis没有设置密码,直接连进来,相当于获得了一个超级管理员的权限。这时候就可以给他设定dir和dbfilrname。将dir设定到/root/.ssh里,dbfilename设定/root/.ssh/authorized_keys,咋这个文件里放上它的公钥,进而可以使用对应的私钥登录到服务器上了。

解决这个漏洞有很多种方法,设置一个密码,监听内网IP,加防火墙规则,以普通用户的身份去启动redis。都可以解决。

设置监听IP
bind 127.0.0.1 2.2.2.2 
#多个IP可以用空格分开

设置监听端口:
port 16000
#redis默认端口6379

设置密码登录:

打开配置文件
[root@shuai-01 ~]# vim /etc/redis.conf 

找到requirepass,加上你的密码配置行
requirepass shuai>com

改完密码后,重启redis
[root@shuai-01 ~]# killall redis-server
[root@shuai-01 ~]# redis-server  /etc/redis.conf 

不使用密码登录使用
[root@shuai-01 ~]# redis-cli
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.

使用密码登录能正常使用
[root@shuai-01 ~]# redis-cli -a 'shuai>com'
127.0.0.1:6379> keys *
 1) "set3"
 2) "set5"
 3) "set1"
 4) "list2"
 5) "zset1"
 6) "k3"
 7) "set2"
 8) "set4"
 9) "hset1"
10) "mykey"
11) "hash1"
12) "list1"
13) "set6"
14) "k1"

将config命令改名或禁用config命令

[root@shuai-01 ~]# vim /etc/redis.conf

rename-command CONFIG shuai
#将“config”命令改为shuai

rename-command CONFIG ""
即,把config的名字改为空

redis慢查询日志

redis的慢查询日志于MySQL的慢查询日志存储地方不同,redis是存储在内存中,而MySQL是存在文件里。

针对慢查询日志,可以设置两个参数,一个是执行时长,单位是微秒,另一个是慢查询日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。

编辑配置文件/etc/redis.conf

slowlog-log-slower-than 1000 //单位ms,表示慢于1000ms则记录日志
 slowlog-max-len 128  //定义日志长度,表示最多存128条

查看慢日志的命令,要在redis下用命令查看。几条查询慢查询日志的命令

slowlog get //列出所有的慢查询日志
slowlog get 2 //只列出2条
slowlog len //查看慢查询日志条数

PHP安装redis扩展模块

进入到/usr/local/src目录下,下载phpredis包

[root@shuai-01 src]# wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip

进入解压包,生成configure文件

[root@shuai-01 phpredis-develop]# /usr/local/php-fpm/bin/phpize 
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226

编译参数,把php-config编译进去

[root@shuai-01 phpredis-develop]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config

make && make install

编辑配置文件

[root@shuai-01 phpredis-develop]# vim /usr/local/php-fpm/etc/php.ini 

增加一行配置

extension=redis.so

这里写图片描述

保存退出后,检查一下有没有redis模块

[root@shuai-01 phpredis-develop]# /usr/local/php-fpm/sbin/php-fpm -m

session存储到redis

Session:在计算机中,尤其是在网络应用中,称为“会话控制”。Session 对象存储特定用户会话所需的属性及配置信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。

编辑php.ini文件

[root@shuai-01 phpredis-develop]# vim /usr/local/php-fpm/etc/php.ini 

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

这里写图片描述

当然,这个也有三种方法

这里写图片描述

为了方便测试,还需要把redis密码关掉

这里写图片描述

保存退出后重启redis服务和php-fpm服务

[root@shuai-01 default]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@shuai-01 default]# killall redis-server
[root@shuai-01 default]# redis-server /etc/redis.conf

测试:

[root@shuai-01 default]# curl localhost/1.php
1524533052<br><br>1524533052<br><br>ra198tjlbnssofi29jp4jn7a33 
[root@shuai-01 default]# curl localhost/1.php
1524533053<br><br>1524533053<br><br>0nr6on1dveqtj0shf2outlng81 
[root@shuai-01 default]# curl localhost/1.php
1524533054<br><br>1524533054<br><br>q9bmpddtbp4is877rs4n7npct7 
[root@shuai-01 default]# curl localhost/1.php
1524533055<br><br>1524533055<br><br>76giv1qbjth0jt10qcdj6hcjf6 
[root@shuai-01 default]# curl localhost/1.php
1524533056<br><br>1524533056<br><br>p9o0cs7lld8pvdv3a3njnth1v6 

[root@shuai-01 default]# redis-cli
127.0.0.1:6379> keys *
 1) "k1"
 2) "PHPREDIS_SESSION:76giv1qbjth0jt10qcdj6hcjf6"
 3) "set2"
 4) "set5"
 5) "PHPREDIS_SESSION:p9o0cs7lld8pvdv3a3njnth1v6"
 6) "list2"
 7) "set3"
 8) "hset1"
 9) "list1"
10) "hash1"
11) "PHPREDIS_SESSION:0nr6on1dveqtj0shf2outlng81"
12) "mykey"
13) "PHPREDIS_SESSION:ra198tjlbnssofi29jp4jn7a33"
14) "set6"
15) "zset1"
16) "set4"
17) "k3"
18) "set1"
19) "PHPREDIS_SESSION:q9bmpddtbp4is877rs4n7npct7"

猜你喜欢

转载自blog.csdn.net/aoli_shuai/article/details/80019694