Laravel Redis在不同浏览器上的行为

时间:2018-08-27 09:32:42

标签: php laravel redis predis phpredis

我在Laravel框架的Redis中遇到问题。 Actullay。我几乎做了所有事情。我正在像这样在Redis中获取数据:-

use Illuminate\Support\Facades\Redis;
public function redisSet(){
    Redis::set('name', 'Taylor');
    echo "redis set successfully"; die;
}
public function redisget(){
    echo Redis::get('name'); die;
}

现在有两个网址,如下所示:-

http://localhost:8000/redis-set
http://localhost:8000/redis-get

以上两个网址都可以正常工作。现在的问题是,当我在Google chrome中点击设置的网址并尝试进入mozilla firefox时,它也在mozilla firefox中打印。那一定不会发生。如果在Google chrome中设置redis,则只能在google chrome中获取,而不是其他浏览器。见下图: enter image description here

现在,当我在uc浏览器中点击get url时。它的数据正在显示。但一定不能发生。因为我已经在Google Chrome中设置了Redis。 enter image description here

下面是我的database.php文件:-

'redis' => [

    'client' => 'predis',

    'default' => [
        'host' => env('REDIS_HOST', '127.0.0.1'),
        'password' => env('REDIS_PASSWORD', null),
        'port' => env('REDIS_PORT', 6379),
        'database' => 0,
    ],

],

我的环境文件:-

BROADCAST_DRIVER=log
CACHE_DRIVER=redis
SESSION_DRIVER=redis
SESSION_LIFETIME=120
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

我还安装了larvel的prdeis。请帮助我如何解决此问题。当我在其他系统中访问相同的URL时,我的系统已与网络连接,它也显示redis数据。请帮助我解决此问题。

4 个答案:

答案 0 :(得分:1)

Redis是类似于mysql的服务器端存储服务。它与php而非浏览器进行通讯,并返回您之前存储的内容。

如果要为不同的用户保存不同的数据,请尝试会话并使用Redis作为会话驱动程序。 HTTP Session

答案 1 :(得分:1)

对于您要寻找的这种行为,请使用会话而不是Redis。因为Redis是一个数据库,可以在Laravel中用作会话驱动程序

public function redisSet(){
    Session::set('name', 'Taylor');
    echo "redis set successfully"; die;
}
public function redisget(){
    echo Session::get('name'); die;
}

答案 2 :(得分:0)

Redis是服务器端服务,因此无论您使用哪种浏览器。您可以使用$request->header('User-Agent');来确定使用哪种浏览器,但这不是最好的方法。我建议您使用cookie /会话,而不是使用用户代理标头,因为它对于每个浏览器都是独立的。然后,您将能够使用给定其来源的Redis数据。

答案 3 :(得分:0)

正如我在评论中提到的那样,redis在您的服务器上起作用,而不是在用户浏览器上起作用。如果要为不同的浏览器存储不同的值。您需要先检查用户浏览器,然后使用其他密钥对其进行存储。

我建议您使用此browser detect package.,您可以通过作曲家轻松安装。

安装软件包后;

switch(Browser::browserFamily()){
        case "Chrome":
            Redis::set('chrome', 'Taylor');
            break;
        case "Firefox":
            Redis::set('firefox', 'Hasan');
            break;
        case "Opera":
            Redis::set('opera', 'Kunal');
            break;
            // etc
}

然后,您可以轻松地使用它们的键来访问这些值