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.134
Redis主库: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.gz
tar 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.gz
tar 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 -y
5、修改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网站


原创粉丝点击