memcache的缓存使用

本文介绍了一种利用Memcache进行网页缓存的实战方法。当用户访问网页时,系统会生成缓存;若数据库内容更新,则先删除旧缓存再从数据库获取最新数据并重新生成缓存。示例代码展示了如何在PHP中实现这一流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                            memcache的缓存使用

当有用户访问网页后会对请求的内容生成缓存,当有用户通过操作对数据库写入数据后会删除缓存从数据库里取出新的内容,并生成缓存。

示例图:

代码:

<?php
// 链接数据库
try{
    $pdo = new PDO('mysql:host=localhost;dbname=test','root','lmm13637064637');
}catch(PDOException $e){
    exit($e->getMessage());
}
$pdo->query('SET NAMES UTF8');
$sql = "SELECT username FROM user";
$rows = $pdo->query($sql);

//实例化memcache对象
$mem = new memcache();
$mem->addServer('127.0.0.1',11211);
//如果数据改变时
if(isset($_POST['send'])&&isset($_POST['username'])){
    $user = $_POST['username'];
    $pass = sha1($_POST['password']);
    $sql = "INSERT INTO user (username,password)VALUES('{$user}','{$pass}')";

    $tmp = $pdo->prepare($sql);
    $tmp->execute();
    if($tmp->rowCount()){
        //先删除缓存
        $mem->delete('list');
        exit("<script>location.href='b.php';</script>");
   }
}
?>
<!DOCTYPE html>
<html>
<head>
        <meta charset="utf-8">
        <title>memcached</title>
</head>
<body>
<form method="post">
        <input type="text" name="username" placeholder="请输入用户名">
        <input type="password" name="password" placeholder="请输入密码">
        <input type="submit" name="send" value="注册">
</form>
<hr>
<p>以下是网站的所有用户</p>
<hr>
<?php
        //如果有缓存直接取缓存
        $data = $mem->get('list');
        if($data){
            //有缓存
            echo '有缓存'.'<hr/>';
            $data =$mem->get('list');
        }else{
         //没有缓存则生成缓存
            echo '没有缓存=>生成缓存'.'<hr>';
            $data = $rows->fetchAll();
            $mem->set('list',$data,0);
        }
        //得到所有值
        foreach($data as $k=>$v){
           echo  $data[$k]['username'].'<br>';
        }


?>
</body>
</html>

 PS:在操作前要先开启memcache服务

 /usr/bin/memcached -d -l 127.0.0.1 -p 11211 -m 100 -u nobody

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值