千家信息网

PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP

发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,PHP memcache在数据库查询中应用,减少连接数据库的次数,降低服务器的压力!/* * memcache应用说明 memory cache 内存缓存 * 工作原理 * 服务器端口port 11
千家信息网最后更新 2025年01月20日PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP

PHP memcache在数据库查询中应用,减少连接数据库的次数,降低服务器的压力!

/* * memcache应用说明 memory cache 内存缓存 * 工作原理 *  服务器端口port 11211   * MemCached 存取键值对key => value * 1.内网访问 * 2.设置防火墙 */         //创建memcache对象        $mem  =  new  Memcache();                //连接memcache服务器        $host = 'localhost';        $port = '11211';        $mem->connect($host,$port);        //$mem->addserver($host,$port);        //$mem->addserver('192.168.10.254', 11211); //新增一台服务器的内存                $dsn           =     'mysql:dbname=test;host=localhost';        $username =    'root';        $passwd     =    'root';        $options     =    array(                                            PDO::ATTR_AUTOCOMMIT=>true,                                            PDO::ATTR_PERSISTENT=>true                                           );        //连接数据库        try{            //创建对象            $pdo =  new PDO($dsn, $username, $passwd, $options);            //设置错误使用异常模式            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);        }catch(PDOException $e){            echo "数据库连接失败:".$e->getMessage();            exit;        }                $statement = "select * from users where id > ? and id < ?";        //键名用md5()加密后 名字更规范 防止查询语句信息泄漏        $key = md5($statement);                //直接从内存要数据        $data = $mem->get($key);                //判断是否存在$data,如果没有才需要连接数据库获取数据!数据直接从内存获取,实现缓存。        if(empty($data)){        try{                               //给数据库管理系统,编译后等待 没有执行                $pdostatement=$pdo->prepare($statement);                $pdostatement->execute(array(3,6));                //设置结果的模式                $pdostatement->setFetchMode(PDO::FETCH_NUM);                  $data = $pdostatement->fetchAll(PDO::FETCH_ASSOC);                //保存在缓存中                $mem->set($key, $data,MEMCACHE_COMPRESSED,10);                echo '第一次数据库查询!
'; }catch (PDOException $e){ echo '错误的原因:'.$e->getMessage(); } } //按表格形式输出 echo ''; foreach ($data as $value){ echo ''; echo ''; echo ''; echo ''; echo ''; echo ''; } echo '
'.$value['id'].''.$value['username'].''.$value['password'].''.$value['email'].'
'; //关闭连接 $mem->close();


0