帮我写写一个PHP函数功能是查询数据库并使用memcached缓存。
以下是一个PHP函数,作用是查询数据库并使用memcached缓存:
function get_data_from_db($key) {
$memcache = new Memcached();
$memcache->addServer("localhost", 11211);
$data = $memcache->get($key);
if ($data) {
return $data;
}
$db = new mysqli("localhost", "username", "password", "database_name");
if ($db->connect_errno) {
return null;
}
$stmt = $db->prepare("SELECT * FROM table_name WHERE key = ?");
$stmt->bind_param("s", $key);
$stmt->execute();
$result = $stmt->get_result();
$data = null;
if ($result->num_rows > 0) {
$data = $result->fetch_assoc();
$memcache->set($key, $data, 3600); // 缓存1小时
}
$stmt->close();
$db->close();
return $data;
}
以上函数的实现过程如下:
- 首先,创建一个Memcached对象,并添加memcached服务器的地址和端口号。
- 然后,尝试从memcached中获取指定的数据。如果存在,则直接返回数据。
- 如果memcached中不存在数据,则连接数据库,并执行查询操作,获取数据。
- 如果查询结果中有数据,则将其存储到memcached中,并设置过期时间为1小时。
- 最后,关闭数据库连接,返回数据。
使用该函数时,只需要传入需要查询的数据的键值,函数会自动从缓存或数据库中获取数据并返回。例如:
$data = get_data_from_db("some_key");
if ($data) {
// 处理数据
} else {
// 数据不存在
}
原文地址: https://www.cveoy.top/t/topic/bemt 著作权归作者所有。请勿转载和采集!