gpt4 book ai didi

web-applications - 缓存在服务器的内存中

转载 作者:行者123 更新时间:2023-12-04 18:53:33 24 4
gpt4 key购买 nike

我想用客户端 Javascript 和后端服务器 (Python) 编写 Web 应用程序。客户端以 AJAX 方式经常需要来自服务器的数据。数据库中的数据,并且为每个请求加载昂贵。

但是,在桌面应用程序中,我只需将数据从数据库加载一次到内存,然后访问它。在网络应用程序中 - 服务器代码每次都运行请求,所以我不能这样做(每次运行都必须再次从数据库加载到内存)。这怎么行?单个进程可以在服务器上运行还是我必须在这里使用不同的东西?

一个例子就像在stackoverflow上的自动完成标签 - 它是如何在服务器中实现快速缓存/加载的?

我想知道像 memcached 这样的数据存储是否真的是自动完成的好方法?您将如何表示部分匹配的键?

最佳答案

使用 memcache 或类似工具

缓存中的每个项目都有一个键和一个到期日期和时间

您需要使 key 对您的应用程序有用。一个典型的 key 型号模式是 Security.Domain.Query.QueryValue 对于集合,或 Security.Domain.ID 对于单个对象

例如

ALL.Product.Q.Red 是 Products 域中的一个集合,对所有用户使用查询 Red

Admin.Product.Q.Blu 是来自 Products 域的集合,使用查询 Blu 仅适用于管理员用户

ALL.Customer.O.12345 是来自客户域 ID 12345 的所有用户的单个对象图

如果需要,您还可以向 key 添加格式。

因此,当您的 Web 应用程序请求自动完成框的数据时,处理调用的 Web 服务首先从 memcache 请求数据,如果未找到或过期,它只会执行昂贵的数据库查询

例如自动完成以查找产品

  • 请求: http://server.com/product?q=gre&format=json
  • 服务器生成memcache key ALL.Product.Name.gre.json
  • Memcache 查询失败
  • 生成 SQL 查询 从产品中选择 ID、名称、价格,其中名称如 'gre%'
  • 将结果格式化为 Json
  • 将结果保存到内存缓存
  • 返回结果到浏览器

  • 下一次
  • 请求: http://server.com/product?q=gre&format=json
  • 服务器生成memcache key ALL.Product.Name.gre.json
  • Memcache 查询成功
  • 返回结果到浏览器

  • secret 在于有一个 key 型号这适用于所有使用内存缓存的情况,并且不会为不同的问题生成重复的键。请记住在查询参数中编码分隔符(在示例中为“.”)

    关于web-applications - 缓存在服务器的内存中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2478500/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com