问题标签 [enyim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
385 浏览

c# - Memcached 对象反序列化

如果一个对象使用 ruby​​ 序列化并推送到 memcache 中,是否可以使用 C#(使用 memcache 客户端)等其他语言对其进行反序列化?

0 投票
3 回答
1183 浏览

c# - 当键在范围内而不是单个值时,如何内存缓存或存储键值对?

我们的数据库中有一个表,其中包含城市的静态 IP 范围及其 IP 地址。它看起来像:


IP-TO、IP-FROM、城市

100, 110, 一个

111、168、乙

...

965、1000、Z

我已经提到了样本数据。实际数据非常庞大,表中有近 64k 行。

对于我们网站上的每个用户,我们通过在 sql express 服务器上执行 sql 查询,根据他们的 IP 地址确定他们的城市。

由于数据是静态的,例如每个 IP 在 100 到 110 范围内的用户都属于城市 A,我们每次都不必要地访问数据库。

我们正在考虑缓存每个唯一的 ip 访问。例如:IP-100 映射到 A IP-101 映射到 A ... IP-110 映射到 A

但这会在 memcache 中创建 64k 个键,我觉得当我们知道范围时存储多个具有相同值的键是没有意义的。

我们能否以某种更好的方式做到这一点,即通过最小内存缓存键或完全使用不同的方法?

0 投票
0 回答
324 浏览

c# - Enyime Couchbase - 刷新 memcached 存储桶

我正在尝试使用 Enyim 客户端库刷新 Couchbase 中的 memcached 存储桶。

这不起作用,因为我的下一个请求仍在从缓存中返回数据。

如果我如下明确调用删除,这确实有效

但是我想要一种方法来使存储桶中的所有项目无效,因为它们将被外部数据加载无效。

注意。从 Couchbase 管理 Web 应用程序对存储桶启动刷新确实具有预期的结果。

为什么它在 Enyim 中不起作用?

0 投票
2 回答
1884 浏览

c# - 如何配置 EnyimMemcachedCore 以访问 AWS Lambda 中的 Elasticache?

我正在尝试将一个简单的 memcached 客户端从 .NET 4 移植到 AWS Lambda 上的 .Net Core。我正在努力配置新的 EnyimMemcachedCore 客户端,因为示例 ( https://github.com/cnblogs/EnyimMemcachedCore ) 使用 appsettings.json 来设置配置,但使用 .net 核心的 Lambda 函数不使用 appsettings.json。我需要能够在 C# 代码中设置服务器/端口/端点。

谁能给我一个使用 EnyimMemcachedCore 手动创建配置的示例?

Enyim 的标准 .net 使用很容易通过键获取并返回一个值:

如何使用 EnyimMemcachedCore 做类似的事情(在代码中配置 memcached 客户端,而不是在配置文件中)?

0 投票
1 回答
165 浏览

c# - 如何通过 Append 方法使用 Enyim 的 Memcached 客户端?

我试图附加的值是一个字符串。我已经能够使用将字符串转换为字节数组Encoding.ASCII.GetBytes(value)并将其传递给IMemcachedClient

附加到 Memcached(似乎很好)

从 Memcached 获取附加值

我看到返回的值,它是一个字符串。我只是不确定如何将返回的值返回到我开始使用的字符串(现在附加)。

0 投票
1 回答
297 浏览

java - Java Xmemcached 或 Spymemcached 客户端无法获取 C# Enyim 客户端设置的键值

Java XmemcachedSpymemcached客户端无法通过C# Enyim客户端设置的键从 memcached 中获取正确的值。

我们已经尝试将 C# MemcachedProtocol.Binary 设置为 Text 来存储基本的 String 格式数据,但是 Java Xmemcached 客户端和 Spymemcached 客户端都无法获取数据。错误如下:

如果我们使用 StringTranscoder(),错误将是解码字符串错误:

0 投票
0 回答
135 浏览

c# - 如何使用 mysql 主从架构管理缓存失效,延迟将数据从主服务器同步到从服务器?

我们想在我们的网站上获得一些注册卖家的卖家联系方式。我们已经实现了 memcached。所以,我们首先检查这个对象是否存在缓存键,我们返回缓存的对象,否则,我们从数据库中读取数据。

在数据库中,我们将数据写入主数据库。但是我们从从数据库读取。

以下是产生问题的 API 序列调用:

GET API (SellerContact):它的第一个请求,所以没有找到缓存键。现在,我们接近从数据库,数据库中也没有seller-contact记录,因此,我们在memcache中创建一个NULL对象,因为seller-contact不存在,这个key的有效期是30天。

POST API(SellerContact):在主数据库中创建新的股票实体,使使用上述 GET 请求创建的具有 NULL 对象的键无效。

GET API(SellerContact):如果在主数据同步到从数据库之前执行此 GET,则此 GET 将找不到任何 memcache 键,因为上述 POST 请求已使其无效,因此它将进入数据库。由于是读操作,它会接近从主数据库中没有新对象的从数据库。因此,从数据库将获取 NULL 对象,并将在 memcache 中再保存 30 天。

这个问题的解决方案很少:

  1. 找出最大延迟黑白主从同步过程并仅在该延迟期之后刷新内存缓存键,即如果最大可能延迟为 5 分钟,那么对于任何内存缓存键清除请求,在请求的清除日期时间的 5 分钟后将其清除。
  2. 一旦我们收到 POST 请求,我们会在主数据库中更新记录后立即创建新的 Memcache 键。这将为 POST 请求产生开销,并且可能会创建一些不需要的密钥。

这个问题有更好的解决方案吗?