redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置 redis慢查询日志 和mysql一样redis也有慢查询日志,redis的慢查询日志默认是开启的。

redis慢查询日志,php安装redis扩展,redis存储session,redis主从配置

redis慢查询日志

和mysql一样redis也有慢查询日志,redis的慢查询日志默认是开启的。
针对慢查询日志,主要是设置两个参数,一个是执行时长,单位是微秒,另一个是慢查询日志的长度。当一个新的命令被写入日志时,最老的一条会从命令日志队列中被移除。

编辑配置文件,文件中搜素slowlog,可以设置以下几个参数,一般情况下保持默认即可:

[root@localhost ~]# vim /etc/redis.conf
slowlog-log-slower-than 1000 //单位ms,表示慢于1000ms则记录日志
slowlog-max-len 128  //定义日志长度,表示最多存128条

修改完后要重启redis服务:

killall redis-server
redis-server /etc/redis.conf

然后在redis的命令行中可以使用以下命令查看相应的慢查询日志信息

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

php安装redis扩展

下载、解压、编译安装,素质三连:

[root@localhost ~]# cd /usr/local/src/
[root@localhost /usr/local/src]# wget https://coding.net/u/aminglinux/p/yuanke_centos7/git/raw/master/21NOSQL/phpredis.zip
[root@localhost /usr/local/src]# unzip phpredis.zip
[root@localhost /usr/local/src]# cd phpredis-develop
[root@localhost /usr/local/src/phpredis-develop]# /usr/local/php-fpm/bin/phpize 
Configuring for:
PHP Api Version:         20131106
Zend Module Api No:      20131226
Zend Extension Api No:   220131226
[root@localhost /usr/local/src/phpredis-develop]# ./configure --with-php-config=/usr/local/php-fpm/bin/php-config
[root@localhost /usr/local/src/phpredis-develop]# echo $?
0
[root@localhost /usr/local/src/phpredis-develop]# make && make install

编辑php配置文件:

[root@localhost ~]# vim /usr/local/php-fpm/etc/php.ini
# 增加这一行
extension=redis.so

查看是否有redis模块:

[root@localhost ~]# /usr/local/php-fpm/bin/php -m|grep redis
redis
[root@localhost ~]#

重启php-fpm服务:

[root@localhost ~]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@localhost ~]#

在PHP中使用redis存储session

1.编辑PHP配置文件:

[root@localhost ~]# 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"

nginx的话可以在php-fpm配置文件对应的pool中增加:

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

2.修改完之后重启php-fpm服务:

[root@localhost ~]# /etc/init.d/php-fpm restart
Gracefully shutting down php-fpm . done
Starting php-fpm  done
[root@localhost ~]#

3.为了方便一会的测试,如果配置了redis的密码的话,得先把redis的密码去掉:

[root@localhost ~]# vim /etc/redis.conf
# 把密码注释掉
# requirepass password

4.修改完后要重启redis服务:

killall redis-server
redis-server /etc/redis.conf

5.测试把session存储到redis里:

[root@localhost ~]# wget http://study.lishiming.net/.mem_se.txt  # 下载测试文件
[root@localhost ~]# mv .mem_se.txt /data/wwwroot/default/test.php  # 移动到默认站点目录下并更名
[root@localhost ~]# curl localhost/test.php  # 访问测试页,这一步可以执行多几次
1514996162<br><br>1514996162<br><br>e5o5ss0a5pkdgm2vtjn5fkc126   # 输出这样一串字符代表成功
[root@localhost ~]#

6.进入redis里查看session是否存储成功:

[root@localhost ~]# redis-cli 
127.0.0.1:6379> keys *
 1) "set2"
 2) "user1"
 3) "set6"
 4) "PHPREDIS_SESSION:icioh5tima4fr96o985urv5jr1"
 5) "newmykey"
 6) "PHPREDIS_SESSION:eimb3t5vjmlgbapgedr9k6jlt7"
 7) "PHPREDIS_SESSION:4jm7njsngq049em06jvotfpeo4"
 8) "k2"
 9) "k1"
10) "k3"
11) "PHPREDIS_SESSION:f3jhq04pg6elk8sqdsv6o0vbr2"
12) "PHPREDIS_SESSION:eb2dbgeb4q70pb8qq10tpr1103"
13) "hash1"
14) "user2"
15) "PHPREDIS_SESSION:b5vtbv01p648rrdhkclhi7ojl2"
16) "set3"
17) "list2"
18) "hash2"
19) "PHPREDIS_SESSION:otq32l2cartcvpjabq45eq5ht3"
20) "PHPREDIS_SESSION:e5o5ss0a5pkdgm2vtjn5fkc126"
21) "zset1"
22) "PHPREDIS_SESSION:g8tgop8upsvenrnof8p14ia837"
23) "set5"
127.0.0.1:6379>

如上,多了几条 PHPREDIS_SESSION 标识的session数据代表存储成功。

查看jey对应的值:

127.0.0.1:6379> get PHPREDIS_SESSION:g8tgop8upsvenrnof8p14ia837
"TEST|i:1514996242;TEST3|i:1514996242;"
127.0.0.1:6379>

redis主从配置

redis的主从和mysql主从类似,但是配置起来比mysql要简单。

两台机器的IP:
192.168.77.130 (主)
192.168.77.128 (从)

redis版本:4.0.0.1

1.两台机器都关闭所有的防火墙。

2.如果你的两台机器都只监听了127.0.0.1这个本地ip的话,需要先添加能够访问外网的ip:
主机器:

[root@localhost ~]# vim /etc/redis.conf
bind 192.168.77.130

从机器:

[root@localhost ~]# vim /etc/redis.conf
bind 192.168.77.128

以上这一步要注意,如果只监听了127.0.0.1的话主从两台机器是无法互相连通6379端口的,而且修改完后需要重启redis服务。

3.开始配置主从,编辑 从(slave) 上的redis配置文件:

[root@localhost ~]# vim /etc/redis.conf
# 增加这行配置,参数是主的ip和端口
slaveof 192.168.77.130 6379

# 如果主机器上设置了密码,还需要增加这行配置,如果没有则不需要
masterauth password # 设置主的密码

修改完后重启从机器的redis服务:

killall redis-server
redis-server /etc/redis.conf

测试:
在从机器上进入redis的命令行,然后执行keys *命令,看看主上的数据是否已经同步过来。如下,我这里是同步成功的:

[root@localhost ~]# redis-cli 
127.0.0.1:6379> keys *
 1) "user1"
 2) "hash2"
 3) "newmykey"
 4) "set5"
 5) "user2"
 6) "k2"
 7) "hash1"
 8) "k3"
 9) "test123"
10) "list2"
11) "k1"
12) "set2"
13) "set3"
14) "zset1"
15) "set6"
127.0.0.1:6379>

注意:redis主从和mysql主从不一样,redis主从不用事先同步数据,它会自动同步过去。




本文转自 ZeroOne01 51CTO博客,原文链接:http://blog.51cto.com/zero01/2057107,如需转载请自行联系原作者

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
存储 NoSQL 算法
09- Redis分片集群中数据是怎么存储和读取的 ?
Redis分片集群使用哈希槽分区算法,包含16384个槽(0-16383)。数据存储时,通过CRC16算法对key计算并模16383,确定槽位,进而分配至对应节点。读取时,根据槽位找到相应节点直接操作。
68 12
|
1月前
|
存储 缓存 NoSQL
深入解析Redis:一种快速、高效的键值存储系统
**Redis** 是一款高性能的键值存储系统,以其内存数据、高效数据结构、持久化机制和丰富的功能在现代应用中占有一席之地。支持字符串、哈希、列表、集合和有序集合等多种数据结构,适用于缓存、计数、分布式锁和消息队列等场景。安装Redis涉及下载、编译和配置`redis.conf`。基本操作包括键值对的设置与获取,以及哈希、列表、集合和有序集合的操作。高级特性涵盖发布/订阅、事务处理和Lua脚本。优化策略包括选择合适数据结构、配置缓存和使用Pipeline。注意安全、监控和备份策略,以确保系统稳定和数据安全。
312 1
|
2月前
|
关系型数据库 MySQL Java
ChaosBlade常见问题之安装日志中一直报错某个数据库表不存在如何解决
ChaosBlade 是一个开源的混沌工程实验工具,旨在通过模拟各种常见的硬件、软件、网络、应用等故障,帮助开发者在测试环境中验证系统的容错和自动恢复能力。以下是关于ChaosBlade的一些常见问题合集:
40 0
|
4月前
|
存储 NoSQL 关系型数据库
Redis 日志篇:无畏宕机快速恢复的杀手锏
Redis 日志篇:无畏宕机快速恢复的杀手锏
80 0
|
2月前
|
存储 缓存 NoSQL
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(一)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
41 0
|
2月前
|
存储 NoSQL 算法
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)(二)
【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(字典)
54 0
|
5天前
|
存储 NoSQL 算法
深入浅出Redis(三):Redis数据的存储、删除以及淘汰
深入浅出Redis(三):Redis数据的存储、删除以及淘汰
|
14天前
|
存储 缓存 安全
【PHP开发专栏】PHP Cookie与Session管理
【4月更文挑战第30天】本文介绍了PHP中的Cookie和Session管理。Cookie是服务器发送至客户端的数据,用于维持会话状态,可使用`setcookie()`设置和`$_COOKIE`访问。Session数据存于服务器,更安全且能存储更多数据,通过`session_start()`启动,`$_SESSION`数组操作。根据需求选择Cookie(跨会话共享)或Session(单会话存储)。实战中常组合使用,如Cookie记住登录状态,Session处理购物车。理解两者原理和应用场景能提升Web开发技能。
|
2月前
|
存储 机器学习/深度学习 NoSQL
作者推荐 |【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)(二)
作者推荐 |【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)
24 0
|
2月前
|
存储 缓存 NoSQL
作者推荐 |【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)(一)
作者推荐 |【Redis技术进阶之路】「底层源码解析」揭秘高效存储模型与数据结构底层实现(链表)
30 0