草庐IT

refit_keys

全部标签

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),但我将

c# - ServiceStack.Redis 存储对象超时,key 检索

我正在尝试使用ServiceStack.Redis客户端从memcached迁移到redis。我希望能够简单地检查Redis缓存是否有按键项,如果没有则添加它们并设置过期超时。然后稍后检索它们(如果它们存在)。为了对此进行测试,我创建了一个简单的ASP.NETWebApi项目并使用这两种方法修改了ValuesController。publicclassValuesController:ApiController{publicIEnumerableGet(){using(varredisClient=newRedisClient("localhost")){IRedisTypedClie

c# - ServiceStack.Redis 存储对象超时,key 检索

我正在尝试使用ServiceStack.Redis客户端从memcached迁移到redis。我希望能够简单地检查Redis缓存是否有按键项,如果没有则添加它们并设置过期超时。然后稍后检索它们(如果它们存在)。为了对此进行测试,我创建了一个简单的ASP.NETWebApi项目并使用这两种方法修改了ValuesController。publicclassValuesController:ApiController{publicIEnumerableGet(){using(varredisClient=newRedisClient("localhost")){IRedisTypedClie