Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

Chia sẻ phiên giữa php và nút

Đối với nút (và Express 4.x):

Bắt đầu với ví dụ từ express-session, nhưng thay vào đó hãy sử dụng connect-redis làm nơi lưu trữ phiên của bạn.

Mã mẫu:

var express = require('express'),
    app = express(),
    cookieParser = require('cookie-parser'),
    session = require('express-session'),
    RedisStore = require('connect-redis')(session);

app.use(express.static(__dirname + '/public'));
app.use(function(req, res, next) {
  if (req.url.indexOf('favicon') > -1)
    return res.send(404);
  next();
});
app.use(cookieParser());
app.use(session({
  store: new RedisStore({
    // this is the default prefix used by redis-session-php
    prefix: 'session:php:'
  }),
  // use the default PHP session cookie name
  name: 'PHPSESSID',
  secret: 'node.js rules'
}));
app.use(function(req, res, next) {
  req.session.nodejs = 'Hello from node.js!';
  res.send(JSON.stringify(req.session, null, '  '));
});

app.listen(8080);

Đối với PHP:

Sử dụng trình xử lý phiên redis như redis-session-php.

Mã mẫu:

<?php

// from https://github.com/TheDeveloper/redis-session-php
require('redis-session-php/redis-session.php');
RedisSession::start();

$_SESSION["php"] = "Hello from PHP";

// `cookie` is needed by express-session to store information
// about the session cookie
if (!isset($_SESSION["cookie"]))
  $_SESSION["cookie"] = array();

var_dump($_SESSION);

?>

Lưu ý:Đảm bảo rằng bạn sử dụng cùng một tiền tố prefix (connect-redis) / REDIS_SESSION_PREFIX (redis-session-php) (connect-redis sử dụng 'sess:' và redis-session-php sử dụng 'session:php:' theo mặc định) và ttl (connect-redis) / session.gc_maxlifetime (PHP) (và cùng một cơ sở dữ liệu nếu bạn đang sử dụng cơ sở dữ liệu redis khác với cơ sở dữ liệu mặc định) cho cả redis-session-php và connect-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Làm cách nào để lưu và truy xuất chuỗi có dấu trong redis?

  2. Yêu cầu lại trên ngăn xếp gỗ tuyết tùng Heroku Số lượng công nhân vẫn tồn tại sau khi công nhân chấm dứt

  3. Các thao tác redis trên cấu trúc dữ liệu có an toàn không

  4. tại sao việc sử dụng bộ nhớ redis không giảm khi bỏ đi một nửa số phím

  5. Chờ gọi lại của hàm async trong sự kiện stream.on ('data') cuối cùng