Redis介绍
非关系型数据库,基于键值对进行存储数据,可以用来缓存动态数据,将动态数据缓存在内存中,通过aof或者持久化方式写入到硬盘中
特点:
支持多种数据类型
支持分布式存储
功能丰富
常用命令
CODE
set key value :添加键值对
get key:查看指定键对应的值
mset key1 value [key2 value2]... :批量创建键值对
mget key1 [key2]...:批量查看键对应的值
del key1 [key2]..:批量删除键值对
append key value:对指定键的值进行追加
select index:切换数据库
move key db:迁移数据
keys *:查看当前数据库中所有的键值对
flushall:清空redis中所有键值对
Redis缓存搭建
Redis缓存lnmp中MySQL的数据,通过php中间件
实验环境
一台lnmp环境的linux即可
最终效果
用户多次访问动态页面时,从redis缓存中读取数据
调整php-fpm配置文件
CODE
vim /usr/local/php5/etc/php-fpm.conf
listen = 172.16.1.12:9000 # 本机ip
systemctl restart php-fpm
# 重启php-fpm
调整nginx配置文件
CODE
vim /usr/local/nginx/conf/nginx.conf
location ~ \.php$ {
root html;
fastcgi_pass 172.16.1.12:9000; # 改为本机地址
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
include fastcgi.conf;
}
systemctl restart nginx
# 重启nginx
安装Redis数据库
CODE
tar zxf redis-4.0.6.tar.gz -C /usr/src
mv /usr/src/redis-4.0.6 /usr/local/redis
cd /usr/local/redis/
make && make install
调整Redis配置文件
CODE
vi /usr/local/redis/redis.conf
bind 192.168.1.5 # 监听本机ip
daemonize yes # 允许后台运行
启动redis服务
CODE
redis-server /usr/local/redis/redis.conf
登录Redis数据库
CODE
redis-cli -h 192.168.1.5 -p 6379
编译安装Redis的php模块
CODE
unzip phpredis-master.zip
cd phpredis-master/
phpize # 生成configure文件
./configure --with-php-config=/usr/local/php5/bin/php-config && make && make install
验证生成的Redis模块
CODE
cd /usr/local/php5/lib/php/extensions/no-debug-non-zts-20121212/
ls
opcache.a opcache.so redis.so
将生成的redis模块与php整合
CODE
vi /usr/local/php5/php.ini
extension = redis.so
重启php-fpm
CODE
systemctl restart php-fpm
编写php测试页面
CODE
vim /usr/local/nginx/html/index.php
<?php
phpinfo();
?>
访问172.16.1.12/index.php,验证是否成功
登录mysql授权php可以登录的用户,用于验证redis缓存数据
CODE
mysql -u root -p123.com
mysql> create database abc;
mysql> use abc;
mysql> create table test(id int,name varchar(30));
mysql> insert into test values(1,'cyj'),(2,'pjf'),(3,'fy'),(4,'mp'),(5,'fm');
grant all on abc.test to 'root'@'192.168.1.5' identified by '123.com';
重新编写php页面
CODE
vim /usr/local/nginx/html/index.php
<?php
$redis=new Redis;
$redis->connect("172.16.1.12",6379) or die ("could not connect"); # 本机ip及redis端口号
$query="select * from abc.test limit 5";
for ($key=1;$key<=5;$key++) {
if (!$redis->get($key)) {
$conn=mysqli_connect("172.16.1.12","root","123.com"); # 连接数据库,用户密码
$result=mysql_query($query);
while ($row=mysql_fetch_assoc($result)) {
$redis->set($row["id"],$row["name"]);
}
break;
}
else {
$name="redis";
$data[$key]=$redis->get($key);
}
}
echo $name;
echo "<br>";
for ($key=1;$key<=5;$key++) {
echo "id is $key";
echo "<br>";
echo "name is $data[$key]";
echo "<br>";
}
?>
访问172.16.1.12/index.php
进行验证
第一次数据从数据库中调取,第二次从redis缓存调取