Redis原理实战安装配置及与LAMP整合
来源:互联网 发布:java时间怎么加减 编辑:程序博客网 时间:2024/06/03 02:25
Redis介绍
在大用户量场景下,WEB系统如果每次都从数据库里获取数据库,将严重影响用户体验,为了提高用户体验,我们可以将用户数据存储在缓存中。
常用的缓存工具有:memcache和redis。
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
和memcached缓存类似,Redis支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(有序集合)和hash(哈希类型)。
Redis是一种高级key-value数据库,它跟memcached类型,不过Redis的数据可持久化。
名称
数据库类型
数据存储选项
操作类型
备注
Redis
内存存储,Nosql数据库
支持字符串、列表、集合、散列表、有序集合
增、删、修改、更新
支持分布式集群、主从同步及高可用、单线程
Memcached
内存缓存数据库,键值对
键值之间的映射
增、删、修改、更新
支持多线程
MySQL
典型关系数据库,RDBMS
数据库由多表主成,每张表包含多行
增、删、修改、更新
支持ACID性质
PostgreSQL
典型关系数据库,RDBMS
数据库由多表主成,每张表包含多行
增、删、修改、更新
支持ACID性质
MongoDB
硬盘存储,Nosql数据库
数据库包含多个表
增、删、修改、更新
主从复制,分片,副本集、空间索引
LAMP+Redis工作机制
用户通过浏览器访问LAMP网站,并以用户名和密码登录到网站,默认Redis缓存中没有改用户名和密码对应列表,PHP程序会读取MYSQL数据库中的用户名和密码,然后将用户名和密码缓存至Redis中,下次用户通过浏览器再次使用同样的用户名和密码登录网站,PHP无需从数据库中读取该用户和密码信息,而是直接优先从Redis缓存中读取并返回,从而减轻MYSQL数据库压力。
Redis除了可以缓存用户名、密码,还可以缓存PHP论坛各种数据,例如帖子、用户状态等。
LAMP+Redis架构流程图
要实现将LAMP PHP网站相关数据存入Redis,需要一台Redis服务器、PHP-redis连接驱动、PHP代码连接修改等。
LAMP+Redis操作案例
LAMP PHP连接Redis,首先要安装Redis服务器,安装连接驱动,然后修改PHP网站配置文件,具体步骤如下:
1、LAMP + Redis环境配置:
LAMP服务器(PHP-Redis驱动):192.168.241.134Redis主库:192.168.241.133
Redis从库:192.168.241.1352、LAMP安装配置见:http://blog.csdn.net/scott_bing/article/details/78337979
3、部署Redis服务
wget -c -P /src http://download.redis.io/releases/redis-2.8.13.tar.gztar zxvf redis-2.8.13.tar.gz -C /src/
cd /src/redis-2.8.13
make PREFIX=/usr/local/redis install
cp /src/redis-2.8.13/redis.conf /usr/local/redis/将/usr/local/redis/bin目录加入至环境变量配置文件/etc/profile末尾,执行source /etc/profile让环境变量生效。export PATH=/usr/local/redis/bin:$PATH启动及停止Redis服务命令:nohup /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf &
/usr/local/redis/bin/redis-cli -p 6379 shutdown本地登录测试:/usr/local/redis/bin/redis-cli注:Redis默认有16个库,从0-15,默认使用0库,可以通过select 切换:select 1 进入第1个库,select 15 进入第15个库,select 16 库不存在。
Redis存储没有表,以key-value方式存储。
4、安装PHP-Redis连接驱动
要确保PHP能够连接Redis缓存服务器,需添加PHP Redis扩展程序,也即是添加PHP的ext扩展模块,添加方法如下:
wget -c -P /src https://github.com/phpredis/phpredis/archive/3.1.2.tar.gztar zxvf 3.1.2.tar.gz -C /src
cd /src/phpredis-3.1.2
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config --enable-redis
make
make install
-------------------------------------------------------------------------------------------------------------------------------
Installing shared extensions: /usr/local/php/lib/php/extensions/no-debug-zts-20131226/
make install后出现以上提示,表示已经把redis.so模块添加进来问题:[root@centos7 phpredis-3.1.2]# /usr/local/php/bin/phpize
Configuring for:
PHP Api Version: 20131106
Zend Module Api No: 20131226
Zend Extension Api No: 220131226
Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.
解决方法:
yum install m4 autoconf -y5、修改php的配置文件/usr/local/php/etc/php.ini,添加redis.so模块,如下:
注:怎么查看php.ini文件的路径,可以在网站发布目录中新建一个测试页面info.php,添加以下代码:<?php phpinfo()?>,然后访问测试页面查看php.ini配置文件路径,如果路径中没有php.ini配置文件,可以从php源码中拷贝过来。
cp /src/php-5.6.30/php.ini-production /usr/local/php/etc/php.ini
extension_dir ="/usr/local/php/lib/php/extensions/no-debug-zts-20131226"
extension=redis.so6、重启apache服务,写入phpinfo测试页面,访问查看存在Redis模块,如下图:LAMP+Redis缓存测试
1、测试Redis是否成功缓存网站信息
登录WEB服务器,修改Discuz PHP网站发布/usr/local/apache/htdocs目录全局配置文件config_global.php,查找CONFIG MEMORY段,将redis server后改为Redis主服务器的IP 192.168.241.133即可,如下图:
通过浏览器访问Apache PHP论坛网站,同时登录Redis服务器,执行命令redis-cli进入Redis命令行,运行命令keys *,如下图所示,存在2ewbrw_开头的key,则证明Redis成功缓存LAMP+Discuz网站信息数据。
2、测试Redis缓存是否生效
访问LAMP+Discuz网站,创建论坛测试用户test,密码123456,此时用户数据第一次注册,用户名和密码会写入到MySQL数据库表中,同时也会将该数据写入至Redis缓存中,如图所示:
将test用户信息从MySQL Discuz库pre_common_member中删除,通过test用户依然可以正常登录WEB网站,则证明此数据读取的是Redis缓存服务器。
此时依然可以用test用户登录WBE网站
- Redis原理实战安装配置及与LAMP整合
- redis与lamp整合
- redis原理及安装配置
- LAMP安装及配置
- LAMP+TOMCAT的安装及整合过程
- lamp配置安装及常见问题
- ubuntu LAMP 安装及配置
- springMVC与Redis整合及pom.xml相关配置
- 3. LAMP 安装与配置
- LAMP/LNMP安装与配置
- Redis 安装及配置
- Redis 安装及配置
- Redis 安装及配置
- redis安装及配置
- redis安装及配置
- redis安装及配置
- linux下redis安装配置及redis常用命令(实战详细版)
- 编译安装LAMP,及配置phpmyadmin
- 47-父子间的冲突
- 复数类
- onKeyUp 事件 在键盘按键被松开时触发
- php 实现汉字转化为拼音字母
- php jpgraph库
- Redis原理实战安装配置及与LAMP整合
- Linux基本概念及操作(终端、shell、快捷键、通配符)
- 初学python:递归输出斐波那契数列
- c语言作业1028/1029
- ES6学习笔记(一)
- Makefile和Kconfig配置项目——Input子系统fingerprint
- 异常:There was no TypeHandler found for parameter id of statement
- 云计算的应用有哪些
- StackExchange.Redis官方文档(二)【配置】