草庐IT

evicted_keys

全部标签

ruby-on-rails - Sidekiq Redis 数据库 key 随时间增加

我目前在生产环境中使用Sidekiq和我的Rails应用程序以及ElasticCacheRedis数据库。我最近注意到,在使用AWS工具监控CurrItems指标时,我看到项目的数量几乎以类似阶梯的方式随着时间的推移逐渐增加:但是,当我在Sidekiq仪表板中查看队列中的作业时,我根本看不到任何备份。我看到队列中有0个作业,0个忙,0个计划。阶梯式增长似乎发生在每天非常特定的时间(就在一天结束时),这让我认为这可能与我运行的计时作业/发条进程有关。但是,我只有4个工作每天运行一次,而且在那个时间甚至接近那个时间都没有运行。不过,为了更好的衡量,这里是我的clock.rb文件(为了简单起

ruby-on-rails - Sidekiq Redis 数据库 key 随时间增加

我目前在生产环境中使用Sidekiq和我的Rails应用程序以及ElasticCacheRedis数据库。我最近注意到,在使用AWS工具监控CurrItems指标时,我看到项目的数量几乎以类似阶梯的方式随着时间的推移逐渐增加:但是,当我在Sidekiq仪表板中查看队列中的作业时,我根本看不到任何备份。我看到队列中有0个作业,0个忙,0个计划。阶梯式增长似乎发生在每天非常特定的时间(就在一天结束时),这让我认为这可能与我运行的计时作业/发条进程有关。但是,我只有4个工作每天运行一次,而且在那个时间甚至接近那个时间都没有运行。不过,为了更好的衡量,这里是我的clock.rb文件(为了简单起

php - 检查 key 存在于 redis 中的最快方法 - php

有没有比EXISTS更快的方法来检查redis中是否存在键?我的问题是,我在redis中有超过100万条记录,我需要进行key_exists检查。这应该在10毫秒内发生。对此有什么想法吗? 最佳答案 使用EXISTS命令是最快的方法,这应该非常快。如果您觉得它太慢,可能是您的服务器和Redis服务器之间的延迟,与命令本身无关。 关于php-检查key存在于redis中的最快方法-php,我们在StackOverflow上找到一个类似的问题: https://s

php - 检查 key 存在于 redis 中的最快方法 - php

有没有比EXISTS更快的方法来检查redis中是否存在键?我的问题是,我在redis中有超过100万条记录,我需要进行key_exists检查。这应该在10毫秒内发生。对此有什么想法吗? 最佳答案 使用EXISTS命令是最快的方法,这应该非常快。如果您觉得它太慢,可能是您的服务器和Redis服务器之间的延迟,与命令本身无关。 关于php-检查key存在于redis中的最快方法-php,我们在StackOverflow上找到一个类似的问题: https://s

使用 ServiceStack 在分布式环境中订阅 Redis key 空间通知

我们有一些具有给定TTL的Rediskey,我们希望订阅这些key并在TTL到期后采取行动(一个作业调度程序)。这在单主机环境中运行良好,当您使用Redis客户端在ServiceStack中订阅'__keyspace@0__:expired'时,该服务将选择它并采取行动。太棒了......直到您设置了一个高可用性拓扑,该集群中有多个API实例。然后每个主机似乎都在接收该消息并可能对其进行操作。我知道键空间通知的工作方式与传统的发布/订阅或消息传递层事件并不完全相同,但是有没有办法对这些类型的事件执行某种确认,以便在一天,只有一个宿主会继续执行任务?否则,有没有办法延迟消息发布?谢谢!

使用 ServiceStack 在分布式环境中订阅 Redis key 空间通知

我们有一些具有给定TTL的Rediskey,我们希望订阅这些key并在TTL到期后采取行动(一个作业调度程序)。这在单主机环境中运行良好,当您使用Redis客户端在ServiceStack中订阅'__keyspace@0__:expired'时,该服务将选择它并采取行动。太棒了......直到您设置了一个高可用性拓扑,该集群中有多个API实例。然后每个主机似乎都在接收该消息并可能对其进行操作。我知道键空间通知的工作方式与传统的发布/订阅或消息传递层事件并不完全相同,但是有没有办法对这些类型的事件执行某种确认,以便在一天,只有一个宿主会继续执行任务?否则,有没有办法延迟消息发布?谢谢!

redis - 为什么建议不要在 Redis 中使用 KEYS?

在Redis中,建议不要使用KEYScommand.为什么会这样?是因为它的时间复杂度是O(N)吗?或者其他原因。 最佳答案 是的。时间复杂度很差。请注意,O(N)中的N指的是数据库中键的总数,而不是过滤器模式选择的键数。所以这对于生产数据库来说可能是一个非常大的数字。更糟糕的是,由于同一时间只能运行一个命令(Redis不是多线程的),其他一切都必须等待该KEYS完成。 关于redis-为什么建议不要在Redis中使用KEYS?,我们在StackOverflow上找到一个类似的问题:

redis - 为什么建议不要在 Redis 中使用 KEYS?

在Redis中,建议不要使用KEYScommand.为什么会这样?是因为它的时间复杂度是O(N)吗?或者其他原因。 最佳答案 是的。时间复杂度很差。请注意,O(N)中的N指的是数据库中键的总数,而不是过滤器模式选择的键数。所以这对于生产数据库来说可能是一个非常大的数字。更糟糕的是,由于同一时间只能运行一个命令(Redis不是多线程的),其他一切都必须等待该KEYS完成。 关于redis-为什么建议不要在Redis中使用KEYS?,我们在StackOverflow上找到一个类似的问题:

lua - 你必须提前在 Redis 脚本中声明你的 key 吗?

我的计划是将一些现有的Redis键存储在哈希中,稍后将从RedisLua脚本中获取并执行操作。我读到最好的做法是在调用EVAL时提供脚本中使用的所有键。我的问题是,运行一个在运行EVAL时没有提供任何key但对从内获取的一些key进行操作的脚本是否安全剧本?如果没有,后果是什么,我该如何避免这个缺点?我提到在EVAL时,无法知道特定哈希中的键是什么。我可以在EVAL之前的步骤中从散列中获取所有键,然后将它们提供给EVAL,但这听起来有点矫枉过正。 最佳答案 由于文档中的歧义,这个问题被问了很多(例如,参见this和this),但我将

lua - 你必须提前在 Redis 脚本中声明你的 key 吗?

我的计划是将一些现有的Redis键存储在哈希中,稍后将从RedisLua脚本中获取并执行操作。我读到最好的做法是在调用EVAL时提供脚本中使用的所有键。我的问题是,运行一个在运行EVAL时没有提供任何key但对从内获取的一些key进行操作的脚本是否安全剧本?如果没有,后果是什么,我该如何避免这个缺点?我提到在EVAL时,无法知道特定哈希中的键是什么。我可以在EVAL之前的步骤中从散列中获取所有键,然后将它们提供给EVAL,但这听起来有点矫枉过正。 最佳答案 由于文档中的歧义,这个问题被问了很多(例如,参见this和this),但我将