简介:Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。 性能测试结果: SET操作每秒钟 110000 次,GET操作每秒钟 81000 次,服务器配置:Linux 2.6, Xeon X3320 一、安装 1、安装redis [root@node3 ~]# wget -c -t 0 http://download.redis.io/releases/redis-2.8.19.tar.gz [root@node3 ~]#tar -zxvf redis-2.8.19.tar.gz [root@node3 ~]# cd redis-2.8.19 [root@node3 ~]#make #直接编译 [root@node3 ~]# cp -r -c src/ /usr/local/redis #复制编译后的应用程序到安装路径 主要程序: Redis-benchmark 压力测试工具 Redis-check-aof 检查redis持久化命令文件的完整性 Redis-check-dump 检查redis持久化数据文件的完整性 Redis-cli redis在linux上的客户端 Redis-sentinel redis-sentinel是集群管理工具,主要负责主从切换。 Redis-server Redis服务器的daemon启动程序 [root@node3 ~]# cp redis.conf /usr/local/redis/ #复制配置文件 2、安装php的redis扩展 [root@node3 ~]#wget -c -t 0 https://github.com/owlient/phpredis/archive/master.zip [root@node3 ~]#mkdir master [root@node3 ~]#unzip master.zip -d master [root@node3 ~]#cd master/phpredis-master/ [root@node3 ~]#/usr/local/php/bin/phpize #phpize程序在php安装路径下,根据实际路径运行程序。 [root@node3 ~]# ./configure --with-php-config=/usr/local/php/bin/php-config [root@node3 ~]#make [root@node3 ~]#make install [root@node3 ~]# ls /usr/local/php/lib/php/extensions/no-debug-non-zts-20121212/ #查看是否有redis.so模块 [root@node3 ~]#vim /etc/php.ini #修改php的配置文件,如果没有“extension=redis.so”,就加上这一行 [root@node3 ~]# service php-fpm restart 3、是否安装成功 访问phpinfo的那个界面,查看是否有redis模块 二、redis缓存测试 1.启动 [root@node3 ~]# /usr/local/redis/redis-server & 启动redis服务 [root@node3 ~]# netstat -tnlp | grep redis #查看端口 tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 62379/redis-server tcp 0 0 :::6379 :::* LISTEN 62379/redis-server 2.编写php脚本测试 [root@node3 html]# vim redis.php <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379) or die ("could net connect redis server"); $query = "select * from person limit 8"; //为了简单一点,这里就读取了8条数据 for ($key = 1; $key < 9; $key++) { if (!$redis->get($key)) { $connect = mysql_connect('172.18.109.233','root','123456'); mysql_select_db(slave); $result = mysql_query($query); //如果没有找到$key,就将该查询sql的结果缓存到redis while ($row = mysql_fetch_assoc($result)) { $redis->set($row['id'],$row['name']); } <?php $redis = new Redis(); $redis->connect('127.0.0.1',6379) or die ("could net connect redis server"); $query = "select * from person limit 8"; //为了简单一点,这里就读取了8条数据 for ($key = 1; $key < 9; $key++) { if (!$redis->get($key)) { $connect = mysql_connect('172.18.109.233','root','123456'); mysql_select_db(slave); $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 < 9; $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>"; } 3.网页访问测试 http://172.18.109.239/redis.php 第一次访问结果: mysql number is 1 name is number is 2 name is number is 3 name is number is 4 name is number is 5 name is number is 6 name is number is 7 name is number is 8 name is 刷新页面: redis number is 1 name is lzh number is 2 name is proxy number is 3 name is Dale number is 4 name is Edison number is 5 name is xie number is 6 name is team number is 7 name is node3 number is 8 name is slave2 通过测试发现第一次访问redis并没有缓存,刷新后就有了缓存。
(责任编辑:liangzh) |