草庐IT

page-performance

全部标签

performance - Redis:查找存在的键

我们有一个存储在redis中的数字列表作为键(3亿个键,它们是10位数字键)。我们的用户给了我们一个包含大约100万个数字的列表,并期望我们得到这些数字中不存在于redis中的一个子集作为键。期望在亚秒级内得到结果,我们一直在尝试使用Redis来达到同样的目的。最初它看起来像是正确的方法(使用EXISTS),但现在我们质疑是否有更好的方法可以在不循环遍历这些数字并创建子集的情况下得到结果。有人可以告诉我们如何才能有效地做到这一点吗? 最佳答案 我知道这是个老问题,但我认为它应该得到更完整的答案。从redis获取所有key然后进行包含

ruby-on-rails - Sidekiq:NoMethodError:未定义的方法 `perform'

这是我正在尝试做的事情:2.1.2:001>UpdateStyleRanks.perform_async这里是错误:NoMethodError:undefinedmethod`perform'for#这是我的worker:#app/workers/update_style_ranks.rbclassUpdateStyleRanksincludeSidekiq::Workerdefperformendend 最佳答案 worker没有命名要求。你可以这样做:classFooincludeSidekiq::Workerdefperfor

c# - 错误 : Timeout performing GET using Redis

我在Redis缓存中有一个包含200,000多个用户的列表。当我尝试使用StackExchange.RedisStringGet从Redis缓存中获取该列表时,出现了TimeOut错误:"TimeoutperformingGET,inst:1,mgr:ExecuteSelect,err:never,queue:2,qu:0,qs:2,qc:0,wr:0,wq:0,in:8596,ar:0,IOCP:(Busy=0,Free=1000,Min=2,Max=1000),WORKER:(Busy=0,Free=4095,Min=2,Max=4095),clientName:WIN-XYZ"谁

performance - Redis 性能 : Many queries returning small objects vs one query returning large objects

我是Redis的新手,到目前为止我真的很喜欢它。然而,我开始怀疑使用返回大对象(在JSON中存储信息)的单个查询是否更好-性能方面-或者我是否应该使用更小的查询,返回更小的对象? 最佳答案 Redisissinglethreadedapplication.Eachquerywouldbeexecutedstrictlyonebyone.答案取决于您的需求和查询响应的大小。如果您尝试在一个查询中获取大量键(使用MULTI或使用LUA脚本),您可能会阻止您的服务器接受新查询。一次查询可让您将总时间保持在尽可能短的水平。每个查询是:解析查

performance - 在 Redis 中创建中型到大型列表/集合/zset/哈希的最有效方法是什么?

使用redis,有许多命令可以检索整个数据结构(LRANGE用于列表,SMEMBERS用于集合,ZRANGE用于排序集合,HGETALL用于散列)。只有哈希有一个方法(HMSET)用一个命令插入多个项目。我见过的所有示例都显示一次只向列表(通过RPUSH或LPUSH)或集合(通过SADD/ZADD)添加一个项目。我想解决的更具体的问题是创建包含数据库ID的列表和排序集,这些列表对每个用户都是唯一的,包含几百到几千个ID。它们通常是从数据库查询中收集的,在内存中稍微处理一下,然后存储在redis中,用于分页(列表)或进行基于集合的操作以检索子集(集合和排序集合)。目前,我正在遍历列表并为

performance - 1MB 消息的 Redis vs Kafka vs RabbitMQ

我目前正在研究一种队列解决方案来处理1MB的中型消息。除了Redis、Kafka和RabbitMQ之间的功能差异之外,我找不到关于它们在1MB左右的消息上的性能的任何好的答案。你们中有谁知道这些可以处理多少条1MB的消息?您是否知道其他性能更好的排队解决方案? 最佳答案 当您在您的案例中评估Kafka与Redis时,除了消息大小之外,您还必须考虑其他因素。以下是我能想到的一些:有多少生产者/消费者?由于Redis的性质(基于推送的队列),如果生产者/消费者数量较多,Redis性能可能会受到影响。这是因为Redis会在消息放入队列时立

performance - 我应该相信 Redis 的数据完整性吗?

在我当前的项目中,我将PostgreSQL作为我的主数据库,而将Redis作为从属数据库,例如,当某个用户添加另一个好友时,首先将关系存储在PostgreSQL中,然后将好友列表存储在Redis中将会被更新。当请求某些用户的好友列表时,它将从Redis中拉出,而不是从PostgreSQL中拉出。问题是:当我更新Redis中的好友列表时,我应该从PostgreSQL中获取一份新副本,并用新列表替换Redis中的旧列表,还是应该保留旧列表并将用户ID简单地添加到列表?后者当然是性能最好的,但直观上前者在保持数据完整性方面做得更好?如果使用像Celery这样的东西,第二种方法值得冒险吗?

performance - Redis 最大内存策略 : performances of volatile-lru vs allkeys-lru

假设redis实例中的所有键都设置了过期时间,volatile-lru和allkeys-lru是相似的。但是,当删除key时,两者之间是否存在显着的性能差异?奖励问题:在配置了allkeys-lru策略的2个不同实例之间,具有相同的内容和相同的配置,除了:实例A的所有键都设置了过期(不同的过期值)实例B没有设置过期的键除了实例A中由于过期位而产生的内存开销外,当通过allkeys-lru算法删除key时,两者之间是否存在性能差异?在这两种情况下,我都在谈论64位linux上的redis2.4.x实例,当达到最大内存时,maxmemory=3Gb具有4-5000个键(大多数键是哈希值)。

performance - 为redis中的所有键设置过期是一种好习惯吗

我在我的一个应用程序中使用redis进行缓存,我每天需要存储大约500000个key并且需要为所有key设置EXPIRE。5天后,我将拥有大约250万个key,并且我已经为所有key设置了EXPIRE。是否可以为键设置EXPIRE并让Redis每分钟扫描一次以找出过期键(Accordingtothedocumentation)。这会对性能产生多大影响?有更好的选择吗?我试图在谷歌上搜索,但没有找到关于性能的信息。我主要关心的是性能和内存。附言。目前,由于我的redis服务器上的键太多,我的redis空间不足。 最佳答案 使用过期作为

ubuntu - 解决 EC2 上 Ubuntu 16.04 的 overcommit_memory 和 Transparent Huge Pages 上的 Redis 警告

在新的Ubuntu16.04EC2实例上,警告显示如下:WARNINGovercommit_memoryissetto0!Backgroundsavemayfailunderlowmemorycondition.Tofixthisissueadd'vm.overcommit_memory=1'to/etc/sysctl.confandthenrebootorrunthecommand'sysctlvm.overcommit_memory=1'forthistotakeeffect.WARNINGyouhaveTransparentHugePages(THP)supportenabled