【问题标题】:How to use Memcache in Google Cloud App Engine for Node.js如何在 Google Cloud App Engine for Node.js 中使用 Memcache
【发布时间】:2020-03-30 11:16:33
【问题描述】:

我正在尝试在 gcloud 标准应用引擎上设置快速服务。 我想使用 memcache 进行会话缓存。

有人能帮我吗,我如何将服务连接到内存缓存?

我的代码是:

var session = require('express-session')
var MemcachedStore = require('connect-memcached')(session);
app.use(session({
  secret: 'appengineFTW',
  key: 'a_key',
  resave: true,
  store: new MemcachedStore({
      hosts: [process.env.MEMCACHE_URL || '127.0.0.1:11211']
  }),
  saveUninitialized: false
}));

prod 中的 MEMCACHE_URL 设置为 memcache:11211

错误:连接 ECONNREFUSED 127.0.0.1:11211

【问题讨论】:

    标签: node.js express google-app-engine memcached


    【解决方案1】:

    1.创建服务器文件夹。

    mkdir server
    cd server
    

    2.将server.js文件复制到文件夹中

    const express = require('express');
    const session = require('express-session');
    const cookieParser = require('cookie-parser');
    const MemcachedStore = require('connect-memjs')(session);
    const publicIp = require('public-ip');
    const crypto = require('crypto');
    
    // Environment variables are defined in app.yaml.
    let MEMCACHE_URL = process.env.MEMCACHE_URL || '127.0.0.1:11211';
    
    if (process.env.USE_GAE_MEMCACHE) {
      MEMCACHE_URL = `${process.env.GAE_MEMCACHE_HOST}:${process.env.GAE_MEMCACHE_PORT}`;
    }
    
    const app = express();
    app.enable('trust proxy');
    
    app.use(cookieParser());
    app.use(session({
      secret: 'your-secret-here',
      key: 'view:count',
      proxy: 'true',
      store: new MemcachedStore({
        servers: [MEMCACHE_URL]
      })
    }));
    
    app.get('/', (req, res, next) => {
      // Discover requester's public IP address
      publicIp.v4().then((ip) => {
        const userIp = crypto.createHash('sha256').update(ip).digest('hex').substr(0, 7);
    
        // This shows the hashed IP for each
        res.write(`<div>${userIp}</div>`);
    
        if (req.session.views) {
          req.session.views += 1;
        } else {
          req.session.views = 1;
        }
        res.end(`Viewed <strong>${req.session.views}</strong> times.`);
      }).catch(next);
    });
    
    const PORT = process.env.PORT || 8080;
    app.listen(PORT, () => {
      console.log('App listening on port %s', PORT);
      console.log('Press Ctrl+C to quit.');
    });
    
    module.exports = app;
    
    

    3.使用 NPM 或 Yarn 创建一个package.json 文件:

    npm init
    

    4.使用 NPM 或 Yarn 安装依赖项:

    npm install --save connect-memjs cookie-parser express express-session public-ip
    

    5.在与您的应用引擎应用程序相同的区域中创建一个memcached instancegcloud app describe 用于查找该区域)。记下其中一个节点的 IP 地址。

    6.创建app.yaml文件

    runtime: nodejs
    env: flex
    
    env_variables:
    
      MEMCACHE_URL: 10.10.10.10:11211 #your memcached instance ip
    
    

    7.将应用程序部署到 App Engine Flex

    gcloud 应用部署 gcloud 应用浏览

    1. 访问 http://YOUR_PROJECT_ID.appspot.com 以查看已部署的应用程序。

    【讨论】:

    • 嘿,谢谢你的回答。你知道,我在哪里可以找到实例 IP?
    • 你去Memorystore,Memcached,创建实例。如果您创建了实例,您将看到 Discovery 端点。这是ip。如果我的回答对您有帮助,请将其标记为已接受,以提高社区的知名度。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-08
    • 1970-01-01
    • 2020-12-17
    • 2021-11-20
    • 1970-01-01
    • 2017-07-28
    相关资源
    最近更新 更多