gpt4 book ai didi

php - 使用 PHP Redis 客户端,在应用程序的每个 PHP 脚本中创建新的 $connection 对象,或者创建一个 GLOBAL $connection 对象?

转载 作者:可可西里 更新时间:2023-11-01 11:24:50 25 4
gpt4 key购买 nike

在我的 PHP 应用程序中,我尝试使用 Redis(而不是 Predis,Redis 的 PHP 客户端)进行数据缓存,为此我正在关注 this tutorial.

现在我需要将数据存储在一个 PHP 脚本/页面的缓存中。为此,我将创建一个 Predis 客户端对象 $redis,然后使用此 $redis 对象调用其函数,如 set()expire() 将数据存储为键值对。下面给出了一个示例片段。

现在的问题是,在另一个 PHP 脚本/页面中,我需要读取存储在缓存中的数据。为此,我需要调用 get()exists() 等函数$redis 对象。

现在我的问题是,在第二个 PHP 脚本/页面中,我是否应该像上面提到的 $redis 创建一个新的 Predis 客户端对象(然后我需要创建一个新的 $redis 对象每次我想在新的 PHP 脚本/页面中访问存储在缓存中的数据时),或者我应该将第一个声明为 GLOBAL,以便所有我的 Web 应用程序中的 PHP 脚本/页面?什么是正确的做法

示例 PHP 第一个脚本:

<?php
require "predis/autoload.php";
PredisAutoloader::register();
try {
$redis = new PredisClient();
}
catch (Exception $e) {
die($e->getMessage());
}
// sets message to contian "Hello world"
$redis->set('message', 'Hello world');
?>

示例 PHP 第二个脚本:

<?php
/* THE FOLLOWING PART WHICH CREATES A $redis
OBJECT SEEMS TO BE AN OVERDO. SHOULDN'T WE BE
USING THE SAME $redis OBJECT FROM THE ABOVE SNIPPET? */


require "predis/autoload.php";
PredisAutoloader::register();
try {
$redis = new PredisClient();
}
catch (Exception $e) {
die($e->getMessage());
}

// gets the value of message
$value = $redis->get('message');
?>

最佳答案

答案实际上取决于您的网络应用程序的复杂性。一种您可以轻松实现的简单方法是创建一个单例类并在该类中使用静态变量。

class MyRedis {
private static $redis;
static function shared() {
if ( empty(self::$redis) ) {
try {
self::$redis = new PredisClient();
} catch (Exception $e) {
die($e->getMessage());
}
}
return self::$redis;
}
}

现在当你想要你的对象时,你可以这样做:

$myRedisObject = MyRedis::shared();
// or
$message = MyRedis::shared()->get('message');

如果它还没有这样做的话,它会做一个。

关于php - 使用 PHP Redis 客户端,在应用程序的每个 PHP 脚本中创建新的 $connection 对象,或者创建一个 GLOBAL $connection 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48860295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com