将大型字符串用作带有值列表的Redis键

时间:2019-10-09 14:02:07

标签: redis

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

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

或者在那个庄园之前进行哈希运算是浪费时间。我还查看了Redis自己的哈希函数(如HMSET),但似乎没有一种很好的方法将列表存储为键的值。

1 个答案:

答案 0 :(得分:2)

您的基本想法是一个好主意,但是,如果您仅将其用于缓存,那么处理Redis列表就毫无意义。当您要对Redis本身中的数据进行操作(将新元素插入列表等)时,可以使用这些元素。相反,您可以只使用常规的GETSET

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