Поведение Laravel Redis для разных браузеров - PullRequest
0 голосов
/ 27 августа 2018

Я столкнулся с проблемой в Redis в рамках Laravel.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;
}

Теперь есть два URL, как показано ниже: -

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

Оба выше URL работают нормально.Теперь проблема в том, что когда я нажимаю установленный URL в Google Chrome и пытаюсь войти в Mozilla Firefox, он также печатает в Mozilla Firefox.этого не должно случиться.Если в Google Chrome установлено значение redis, его необходимо загрузить только в Google Chrome, а не в другом браузере.См. Изображения ниже: - enter image description here

Теперь, когда я нажал кнопку «Получить» в браузере UC.его данные показывают.но это не должно произойти.потому что я установил Redis в Google Chrome.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,
    ],

],

Мой файл env: -

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

У меня также естьустановлены прдис из личинки.Пожалуйста, помогите мне, как решить эту проблему.Моя система связана с сетью, когда я получаю доступ к тому же URL в другой системе, она также показывает данные redis.Пожалуйста, помогите мне решить эту проблему.

Ответы [ 4 ]

0 голосов
/ 27 августа 2018

Для такого поведения, которое вы ищете, используйте Session вместо Redis.потому что Redis - это база данных, которую можно использовать в качестве драйвера сеанса в Laravel

public function redisSet(){
    Session::set('name', 'Taylor');
    echo "redis set successfully"; die;
}
public function redisget(){
    echo Session::get('name'); die;
}
0 голосов
/ 27 августа 2018

Как я уже упоминал в своем комментарии, redis работает на вашем сервере, а не в браузерах пользователей.Если вы хотите хранить разные значения для разных браузеров.Вам нужно сначала проверить браузер пользователей и сохранить их с другим ключом.

Я предлагаю вам использовать этот пакет обнаружения браузера. Вы можете легко установить его с помощью composer.

послеустановил пакет;

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
}

Затем вы можете легко получить доступ к этим значениям, используя их ключи

0 голосов
/ 27 августа 2018

Redis - это служба хранения на стороне сервера, как и MySQL. Он связывается с php, а не с браузером и возвращает вам то, что вы хранили до этого.

Если вы хотите сохранить разные данные для другого пользователя, попробуйте сеанс и используйте Redis в качестве драйвера сеанса. HTTP-сессия

0 голосов
/ 27 августа 2018

Redis - это серверная служба, поэтому не имеет значения, какой браузер вы используете.Вы можете использовать $request->header('User-Agent');, чтобы определить, какой браузер используется, но это не лучший способ.Вместо того, чтобы использовать заголовок user-agent, я рекомендую вам использовать куки / сессию, потому что он независим от каждого браузераТогда вы сможете работать с данными Redis, указав их источник.

...