MySQL通过Memcached将热点数据加载到cache,加速访问,但随着业务数据量的不断增加,和访问量的持续增长会遇到很多问题:
1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。
2.Memcached与MySQL数据库数据一致性问题。
3.Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。
4.跨机房cache同步问题。
如果简单地比较Redis与Memcached的区别,redis会有如下优点:
1 Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
2 Redis支持数据的备份,即master-slave模式的数据备份。
3 Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
下面简单的对redis进行实验,参考“www.runoob.com/redis”
安装:
#tar zxf redis-3.0.2.tar.gz
#cd redis-3.0.2
#yum install jemalloc-3.6.0-1.el6 jemalloc-devel-3.6.0-1.el6 gcc -y //安装插件
#make && make install
#cd utils/
#./install_server_sh //配置redis,选择默认即可
#service redis_6379 start //启动redis服务
#redis-cli //客户端命令行工具,可以对数据库和各种数据类型进行操作
set myKey abc //设置键值对
get myKey //取出键值对
config get loglevel //查看配置项loglevel
将redis作为mysql的缓存服务器
安装lnmp环境
#yum install -y nginx-1.8.0.1.el6.ngx.x86_64.rpm php-5.3.3-38.el6.x86_64 php-cli-5.3.3-38.el6 php-common php-devel php-fpm php-gd php-mbstring php-mysql php-pdo //安装nginx,php,在web上显示redis缓存的mysql数据。
#vim /etc/php.ini
修改时区为亚洲上海
#vim /etc/php-fpm.d/www.conf
设置uer与group为nginx。
#/etc/init.d/php-fpm start //启动phpfastcgi
#cd /usr/share/nginx/html
#vim index.php
$redis = new Redis();
$redis->connect('127.0.0.1',6379) or die ("could net connect redis server");
# $query = "select * from test limit 9";
$query = "select * from test";
for ($key = 1; $key
{
if (!$redis->get($key))
{
$connect = mysql_connect('127.0.0.1','redis','westos');
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';