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

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS AI 助手,专业版
简介:

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,如需转载请自行联系原作者

相关文章
|
4月前
|
存储 NoSQL 前端开发
Redis专题-实战篇一-基于Session和Redis实现登录业务
本项目基于SpringBoot实现黑马点评系统,涵盖Session与Redis两种登录方案。通过验证码登录、用户信息存储、拦截器校验等流程,解决集群环境下Session不共享问题,采用Redis替代Session实现数据共享与自动续期,提升系统可扩展性与安全性。
303 3
Redis专题-实战篇一-基于Session和Redis实现登录业务
|
7月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
946 4
|
消息中间件 缓存 NoSQL
Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。
【10月更文挑战第4天】Redis 是一个高性能的键值对存储系统,常用于缓存、消息队列和会话管理等场景。随着数据增长,有时需要将 Redis 数据导出以进行分析、备份或迁移。本文详细介绍几种导出方法:1)使用 Redis 命令与重定向;2)利用 Redis 的 RDB 和 AOF 持久化功能;3)借助第三方工具如 `redis-dump`。每种方法均附有示例代码,帮助你轻松完成数据导出任务。无论数据量大小,总有一款适合你。
271 6
|
10月前
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
10月前
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用的算法是哈希槽分区算法。Redis集群中有16384个哈希槽(槽的范围是 0 -16383,哈希槽),将不同的哈希槽分布在不同的Redis节点上面进行管理,也就是说每个Redis节点只负责一部分的哈希槽。在对数据进行操作的时候,集群会对使用CRC16算法对key进行计算并对16384取模(slot = CRC16(key)%16383),得到的结果就是 Key-Value 所放入的槽,通过这个值,去找到对应的槽所对应的Redis节点,然后直接到这个对应的节点上进行存取操作
|
11月前
|
NoSQL Redis 数据库
Redis 功能扩展 Lua 脚本 对Redis扩展 eval redis.call redis.pcall
通过本文的介绍,我们详细讲解了 Lua 脚本在 Redis 中的作用、`eval` 命令的使用方法以及 `redis.call` 和 `redis.pcall` 的区别和用法。通过合理使用 Lua 脚本,可以实现复杂的业务逻辑,确保操作的原子性,并减少网络开销,从而提高系统的性能和可靠性。
728 13
|
存储 运维 NoSQL
【赵渝强老师】Redis的慢查询日志
Redis慢查询日志用于记录执行时间超过预设阈值的命令,帮助开发和运维人员定位性能问题。每条慢查询日志包含标识ID、发生时间戳、命令耗时及详细信息。配置参数包括`slowlog-max-len`(默认128)和`slowlog-log-slower-than`(默认10000微秒)。实战中可通过`slowlog get`获取日志、`slowlog len`查看长度、`slowlog reset`重置日志。建议线上环境将`slowlog-max-len`设为1000以上,并根据并发量调整`slowlog-log-slower-than`。需要注意的是,慢查询只记录命令执行时间。
592 5
|
存储 消息中间件 监控
Redis Stream:实时数据流的处理与存储
通过上述分析和具体操作示例,您可以更好地理解和应用 Redis Stream,满足各种实时数据处理需求。
1212 14
|
存储 NoSQL 算法
Redis分片集群中数据是怎么存储和读取的 ?
Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
274 13
|
存储 NoSQL Redis
【赵渝强老师】Redis的存储结构
Redis 默认配置包含 16 个数据库,通过 `databases` 参数设置。每个数据库编号从 0 开始,默认连接 0 号数据库,可通过 `SELECT &lt;dbid&gt;` 切换。Redis 的核心存储结构包括 `dict`、`expires` 等字段,用于处理键值和过期行为。添加键时需指定数据库信息。视频讲解和代码示例详见内容。
264 0