redis - 使用大字符串作为带有值列表的 Redis 键

标签 redis

我们有一个 Antlr 解析 API,它返回查询中正在访问的给定列。只有约 1/100 的查询是唯一的,因此我们正在考虑使用 Redis 作为缓存层来大幅提高速度。有些查询长达数千行,需要一秒或更长时间才能解析。我们的估计数量为数亿,因此我们无法解析任何重复项。

查看 Redis(并使用 python redis 客户端),我是否应该使用 MD5 之类的内容对每个查询文本进行哈希处理,并将其用作键,并使用 rpush 将该查询的列存储为列表?

或者之前在那个庄园里进行散列是浪费时间。我也在研究 Redis 自己的哈希函数,例如 HMSET,但看起来没有一个很好的方法来将列表存储为键的值。

最佳答案

你的基本想法是好的,但如果你只是用它来缓存,那么处理 Redis 列表就没有意义了。当您想要对 Redis 本身内的数据进行操作(将新元素插入列表等)时,将使用它们。相反,您可以只使用常规的 GETSET

具体来说,使用哈希作为键,使用数据的某种编码形式(JSON 或您喜欢的任何形式)作为值。您可以跳过哈希步骤(Redis 允许 key 最大为 512MB),但如果查询“长达数千行”,则会耗尽您的缓存内存并使序列化和传输速度显着变慢。

关于redis - 使用大字符串作为带有值列表的 Redis 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58305938/

相关文章:

redis - Redis server_load 统计数据的计量单位是什么?

mysql - 无需轮询即可订阅 MySQL 数据库中的更改

node.js - 无法从 Express 连接到远程 Redis

redis - Redis 是如何工作的?

php - 在 Windows 中的 xampp 上启用 redis

python - 如何每 5 小时自动运行 Python 文件(使用 Redis 队列)

Django 推荐引擎只能通过 python shell 工作

ruby-on-rails - 我可以在 heroku 上使用相同的 Redis (to go) 实例来解决不同的问题吗?

redis - 在 redis 中使用单独编号的数据库有什么好处?

java - 如何配置 Spring session 以在 xml 中与 Redis 一起工作?