Redis和Memcached区别以及在PHP环境下的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
?>

猜你喜欢

转载自blog.csdn.net/qq_36020968/article/details/83107686
今日推荐