Redis
 sql >> Teknologi Basis Data >  >> NoSQL >> Redis

Bagikan sesi antara php dan node

Untuk simpul (dan Express 4.x):

Mulailah dengan contoh dari sesi ekspres, tetapi gunakan connect-redis sebagai penyimpanan sesi Anda.

Contoh kode:

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);

Untuk PHP:

Gunakan pengendali sesi redis seperti redis-session-php.

Contoh kode:

<?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);

?>

Catatan:Pastikan Anda menggunakan prefix yang sama (koneksi-redis)/REDIS_SESSION_PREFIX (redis-session-php) (koneksi-redis menggunakan 'sess:' dan redis-session-php menggunakan 'session:php:' secara default) dan ttl (connect-redis)/session.gc_maxlifetime (PHP) (dan database yang sama jika Anda menggunakan database redis selain dari default) untuk redis-session-php dan connect-redis.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Bagaimana Menerapkan Transaksi Terdistribusi Di Mysql, Redis, dan Mongo

  2. dial tcp [::1]:6397:connectex:Tidak ada koneksi yang dapat dibuat karena mesin target secara aktif menolaknya

  3. Redis (ioredis) - Tidak dapat menangkap kesalahan koneksi untuk menanganinya dengan baik

  4. MongoDB vs. Redis vs. Cassandra untuk solusi penyimpanan baris sementara tulis cepat

  5. Mengapa KEYS disarankan untuk tidak digunakan di Redis?