当前位置: 首页 > 面试题库 >

从Redis检索大型数据集

宫铭
2023-03-14
问题内容

一台服务器上的应用程序查询在另一台服务器上运行的redis。来自查询的结果数据集大约为25万zrangebyscore objects:locations -inf +inf,在应用服务器上似乎需要40秒。

redis-cliredis服务器或app服务器上使用命令执行命令时,在两种情况下,它们都需要大约40秒才能完成,如所述redis-cli

在查询期间,redis服务器使用大约15%的CPU

问题: 花费40秒检索250k记录是否很慢?是否有可能将其加速到几秒钟?


问题答案:

首先,它取决于项目的平均大小。

在我的系统上,使用zrangebyscore检索10万个字节的250K项仅需113毫秒。对于100字节的项目,需要228毫秒。对于1
Kb的项目,需要4033毫秒。

因此,除非您的项目比这大得多,否则我会说您的40秒响应时间非常糟糕。

Redis不适用于虚拟内存。如果将Redis内存换出,则性能通常是灾难性的,因此,我要说的第一个操作应该是避免Redis内存换出。

我将尝试转储Redis数据库(使用bgsave,以确保所有页面都返回RAM),然后再次尝试zrangebyscore(和几次)以查看响应时间是否更好。

更新:

这是我用来构建内容的命令:

$ python -c 'for x in range(0,250000): print "ZADD objects:locations 0.1 %0115d" % (x)' | redis-cli | wc

这是我用来计时查询的命令:

$ time redis-cli -h <hostname> zrangebyscore objects:locations -inf +inf >/dev/null


 类似资料:
  • 缓存项: 内部映射可以有多达25000个元素/桶。redis中有没有一种方法可以根据密钥(redis密钥、外部映射的密钥和内部映射的密钥)从内部映射中检索特定的值,而不必在访问这个redis缓存的Java方法中获取整个redis条目? 当前,如果我必须从内部映射中删除一个特定的键,我会以以下方式进行:

  • null 由于oracle clob字段可以包含4GB(max)的数据,是否有使用SQLPlus获得完整数据块的正确方法?我可以把它作为文件下载吗? 我希望问题是清楚的。我更喜欢在不向数据库注入PL/SQL过程的情况下做到这一点。

  • 我正在使用SharePreduce进行用户界面设置。 当我想获取的值时,无论它是真是假,都可以播放声音。 但是,当我点击时,即使我将的值更改为false,我总是播放歌曲,你能帮我弄清楚它出了什么问题吗? 正常情况下,我的< code>boolean playSound应该为true或false, 当我单击按钮时,如果playSound为true,则我播放歌曲,否则我不播放它,但似乎永远不会更改此值

  • 问题内容: 我正在法国学习,所以很难找到法语教程来解决我的问题。因此,我不得不问我的问题,希望有一个令人满意的解决方案。 我的问题是我在firebase上读取数据时遇到了麻烦,并且花了三天时间。 我有这样的结构: 我已经开始编写一些代码,可以恢复密钥,但是无法恢复这些值“ nom”,“ argent”等。 问题答案: John的替代方法是使用来获取每个属性:

  • 我正试图建立一个应用程序,用户将能够连接到我的应用程序,在twitter上输入关键字进行搜索,然后结果将被存储在数据库中。从用户输入关键词的那一刻起,我就想跟踪twitter上的内容。这些结果将被进一步分析,一些统计数据将呈现给用户。到目前为止,我已经使用tweppy和twitter流api来获取推文。但是我意识到我不能有一个以上的开放流连接(用于并行搜索多个关键字)。< br >我搜索了stac

  • 我有一个渲染器,它可以更改JTable单元格的值。 在表的数据模型中,第1行第2列中的数据在JTable GUI中是“-” ,第1行第2列中的数据是“error” 这段代码打印数据模型中的值:“-”。 有什么简单的方法来检索值“error”吗?