【问题标题】:Best way to serialize a byte array key to Redis with Booksleeve使用 Booksleeve 将字节数组键序列化到 Redis 的最佳方法
【发布时间】:2013-05-26 01:42:27
【问题描述】:

我需要找到将字节数组发送到带有 Booksleeve 的 Redis 服务器的键空间的最佳实现。

我尝试了不同的实现,例如 UTF8 编码,但我不知道什么是 redis 服务器内存中最优化的(我将使用数百万这样的密钥,所以我真的需要最短的内存密钥)。

有人已经有这个要求了吗?

【问题讨论】:

  • Redis 支持二进制数据。您无需对任何内容进行编码即可将字节数组发送到 Redis。
  • 我注意到我们可以发送二进制值,但我没有找到任何方法可以使用 bookleeve 包装器发送二进制密钥。

标签: redis booksleeve


【解决方案1】:

在当前版本中,为了简单起见,我坚持使用字符串键,但是代码可以很好地处理二进制 - 它使用二进制 API。 IIRC 我本周在收件箱中收到了一个补丁,增加了对二进制密钥的支持。

因为它似乎很抢手,所以这周我会看看。


编辑:一周过去了;原因是我也在做一些关于 redis-cluster 支持的工作,这将需要一些新的接口无论如何,因为:

  • 并非所有操作都受支持
  • 不支持并行(编号)数据库

所以基本上我的计划是将这两项工作放到同一个分支中,给出:

  • 一组新的接口
    • struct 用于key 参数,并带有来自stringbyte 的隐式转换运算符,允许两者互换使用
    • 在不同的 API 上使用 redis-cluster 和 redis-server 命令
    • 以及旧连接上的一种新方法,用于在每个数据库的基础上获取一个新 API,即 Database(3).Keys.Remove(key); 或类似的东西

ETA 仍然是虚构的,但我想解释一下为什么我没有简单地投入现有的补丁 - 我认为 redis-cluster 的出现使它成为重新审视整个 API 的好时机,(但显然在某种程度上这不会破坏现有代码)。

【讨论】:

  • 很高兴您可以使用此功能。你能知道这个开发的大致日期吗?无论如何,谢谢你的精彩库
  • 感谢您的回答,我会尽快测试您的 api,因为它会在 nuget 上发布。
  • 我从本周开始在生产中使用你的 api,它的工作方式完全符合我的预期,干得好!
猜你喜欢
  • 1970-01-01
  • 2018-04-21
  • 1970-01-01
  • 2014-01-20
  • 1970-01-01
  • 1970-01-01
  • 2011-12-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多