redis与数据库结合,作为数据库数据的缓存提供给前端
一.实现数据库,PHP,http和redis的架构
server1提供http服务,使用PHP语言;
server2提供redis缓存服务;
server3提供后端数据库服务…
大概流程 :客户端通过Nginx和PHP访问后端数据库时,先在redis这个数据库缓存中查找,看是否含有想要的数据,如果没有就去后端数据库查找,将查找到数据返回给客户端一份,另外在redis中缓存一份….下次如果访问相同的数据就直接去redis,缩短时间同时也减轻数据库的查找压力
yum install -y httpd PHP PHP-MysqL
2.获取测试页面test.PHP,修改后放到httpd发布目录
vim test.PHP
mv test.PHP /var/www/html/
systemctl start httpd
<?PHP
$redis = new Redis();
$redis->connect('172.25.40.2',6379) or die ("Could net connect redis server");
#redis主机IP
# $query = "select * from test limit 9";
$query = "select * from test";
for ($key = 1; $key < 10; $key++)
{
if (!$redis->get($key))
{
$connect = MysqL_connect('172.25.40.3','redis','redhat'); # 连接数据库,ip,用户,密码
MysqL_select_db(test);
$result = MysqL_query($query);
//如果没有找到$key,就将该查询sql的结果缓存到redis
while ($row = MysqL_fetch_assoc($result))
{
$redis->set($row['id'],$row['name']);
}
$myserver = 'MysqL';
break;
}
else
{
$myserver = "redis";
$data[$key] = $redis->get($key);
}
}
echo $myserver;
echo "<br>";
for ($key = 1; $key < 10; $key++)
{
echo "number is <b><font color=#FF0000>$key</font></b>";
echo "<br>";
echo "name is <b><font color=#FF0000>$data[$key]</font></b>";
echo "<br>";
}
?>
PHP -m | grep MysqL
PHP -m | grep redis
源码编译PHP与redis的连接软件—PHPredis-master.zip
unzip PHPredis-master.zip
cd PHPredis-master/
PHPize # 创建预编译环境
报错:
Can't find PHP headers in /usr/include/PHP
The PHP-devel package is required for use of this command.
网上下载安装同版本PHP-devel
yum install -y PHP-devel-5.4.16-42.el7.x86_64.rpm
cd PHPredis-master/
PHPize # 创建预编译环境
./configure --help
./configure --enable-redis
make && make install # 源码编译安装
进入目录/usr/lib64/PHP/modules/下,查看编译后存在的模块文件
cd /etc/PHP.d/
cp MysqL.ini redis.ini
vim redis.ini
extension=redis.so
vim /etc/PHP.ini
date.timezone = Asia/Shanghai
重启httpd查看已经加载的模块
systemctl restart httpd
PHP -m | grep redis
server2安装redis
vim /etc/redis/6379.conf
systemctl start redis_6379
ps ax
server3
systemctl stop redis_6379
67 chkconfig redis_6379 off
68 yum install -y mariadb-server
69 systemctl start mariadb
70 MysqL
71 ls
72 MysqL < test.sql
73 MysqL
select * from test.test;
MariaDB [(none)]> grant all on test.* to redis@’%’ identified by ‘redhat’;
update test set name=‘redhat’ where id=1;
更新后无法自动同步
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。