版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36020968/article/details/83107686
Redis和Memcached区别以及在PHP环境下的使用
以下是我浅显的理解,欢迎拍砖
1、Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。 不过memcache还可用于缓存其他东西,例如图片、视频等等;Redis和Memcache都是将数据存放在内存中,都是内存数据库。支持key-value存储。
2、存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化);
3、redis:数据量较小的更性能操作和运算上,memcache:用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能适合读多写少,对于数据量比较大,
4、Memcache 在并发场景下,用cas保证一致性,redis事务支持比较弱,只能保证事务中的每个操作连续执行
Redis的使用
下载后安装Redis拓展,并修改php.ini文件,重启环境。可以看到Redis的拓展。
连接Redis服务
<?php
$redis = new redis(); //生成redis类的对象,生成之后可以用这个类里面的方法
$redis->connect('127.0.0.1',6379); //连接redis的ip地址端口号
$redis->set('redistest','666666'); // 给redistest赋值为666666
echo $redis->get('redistest'); //获取redistest的值
?>
Memcached的使用
安装成功后添加拓展,参考W3C中使用说明即可
实例
<?php
$memcache = new Memcache;
$memcache->connect("127.0.0.1",11211) or die("Memcached connected failed");
echo "Memcached's version: " . $memcache->getVersion() . "<br />";
$data = array(
'url' => "http://www.cnblogs.com/wujuntian/",
'name' => "编程人,在天涯"
);
$memcache -> set("info",$data,0,10);
$info = $memcache->get("info");
echo '<pre>';
print_r($info);
?>
利用 memcached 来缓存数据库查询结果集,使用 memcached 之后,可以减少数据库连接、查询操作,数据库负载下来了,脚本的运行速度也提高了。
<?php
$sql = 'SELECT * FROM users';
$key = md5($sql); //memcached 对象标识符
if ( !($datas = $mc->get($key)) ) {
// 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";
$conn = mysql_connect('localhost', 'test', 'test');
mysql_select_db('test');
$result = mysql_query($sql);
while ($row = mysql_fetch_object($result))
$datas[] = $row;
// 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
$mc->add($key, $datas);
} else {
echo "n".str_pad('Read datas from memcached.', 60, '_')."n";
}
var_dump($datas);
?>