我一直在redis的网站上阅读这篇关于使用HSET与SET来创建更优化的内存使用的文章:http://redis.io/topics/memory-optimization我的问题是我的key比这长得多。它们的形式是:ojit_代码例子:u:123456789u:123456789abcdefg分割key以与u:一起使用的最佳位置在哪里?我读过here,理想情况下每个“子集”中的项目不超过1000个。因此,在那种情况下,我会除以最后3个字符,从而在理论上每组中最多包含999个项目。不幸的是,用户ID不是那么可预测的,我不能保证良好的传播。例如,如果我在HSET处拆分,我无法保证以123
我一直在redis的网站上阅读这篇关于使用HSET与SET来创建更优化的内存使用的文章:http://redis.io/topics/memory-optimization我的问题是我的key比这长得多。它们的形式是:ojit_代码例子:u:123456789u:123456789abcdefg分割key以与u:一起使用的最佳位置在哪里?我读过here,理想情况下每个“子集”中的项目不超过1000个。因此,在那种情况下,我会除以最后3个字符,从而在理论上每组中最多包含999个项目。不幸的是,用户ID不是那么可预测的,我不能保证良好的传播。例如,如果我在HSET处拆分,我无法保证以123
我认为这个问题没有答案,但我希望有答案。在生产中,使用KEYS是一种不好的做法,因为它会扫描所有记录(O(n))。如果键的数量非常多,可能会影响性能。假设数据库中有大量的键,是否有任何安全的方法来获取其中的一些键?例如,如果我只是想看一张唱片,我真的不在乎我得到了什么。我知道这更像是一个设计问题(例如使用选择、使用集合),我永远不需要运行key,除非我知道数据库中没有大量数据。动机更多的是谨慎,所以我不会有一天运行key并杀死数据库,因为我在一个与我想象的不同的数据库中 最佳答案 推荐的方法(从v2.8开始)是使用SCAN命令(和s
我认为这个问题没有答案,但我希望有答案。在生产中,使用KEYS是一种不好的做法,因为它会扫描所有记录(O(n))。如果键的数量非常多,可能会影响性能。假设数据库中有大量的键,是否有任何安全的方法来获取其中的一些键?例如,如果我只是想看一张唱片,我真的不在乎我得到了什么。我知道这更像是一个设计问题(例如使用选择、使用集合),我永远不需要运行key,除非我知道数据库中没有大量数据。动机更多的是谨慎,所以我不会有一天运行key并杀死数据库,因为我在一个与我想象的不同的数据库中 最佳答案 推荐的方法(从v2.8开始)是使用SCAN命令(和s
我想这样使用Redis从文件db加载条目(由用户读取/编辑),设置在一段时间内过期在Redis上编辑和阅读它们当它被Redis自动删除时(当它被删除时)存储回文件db被驱逐到可用内存或已过期) 最佳答案 这不是Redis在OOTB中做的事情,但只要稍加努力就可以实现。有关更多信息,请参见:https://stackoverflow.com/a/25827681/3160475 关于redis-当Redis被驱逐到可用内存或过期时,它可以转储key吗,我们在StackOverflow上找到
我想这样使用Redis从文件db加载条目(由用户读取/编辑),设置在一段时间内过期在Redis上编辑和阅读它们当它被Redis自动删除时(当它被删除时)存储回文件db被驱逐到可用内存或已过期) 最佳答案 这不是Redis在OOTB中做的事情,但只要稍加努力就可以实现。有关更多信息,请参见:https://stackoverflow.com/a/25827681/3160475 关于redis-当Redis被驱逐到可用内存或过期时,它可以转储key吗,我们在StackOverflow上找到
如果值在过去x分钟内未被修改,是否有一种直接的方法使Redis键过期?我怀疑这是可能的-但我想知道是否有本地解决方案或逻辑和/或额外状态很少的东西。现在,这种行为可能已经存在了——我在一个键上调用了EXPIRE。然后,如果我对该键调用SET,我可以再次调用EXPIRE,并且该键将使用新值而不是旧值EXPIRE? 最佳答案 你的假设是正确的,只是一个接一个地过期。EXPIRE不会累积或重置或任何东西,它只是将计时器设置为新值。示例(没有冗长的错误处理):'usestrict';letclient=require('redis').cr
如果值在过去x分钟内未被修改,是否有一种直接的方法使Redis键过期?我怀疑这是可能的-但我想知道是否有本地解决方案或逻辑和/或额外状态很少的东西。现在,这种行为可能已经存在了——我在一个键上调用了EXPIRE。然后,如果我对该键调用SET,我可以再次调用EXPIRE,并且该键将使用新值而不是旧值EXPIRE? 最佳答案 你的假设是正确的,只是一个接一个地过期。EXPIRE不会累积或重置或任何东西,它只是将计时器设置为新值。示例(没有冗长的错误处理):'usestrict';letclient=require('redis').cr
如果满足某些条件,我想让key的生命周期更长。我的想法是,如果我可以查询所有即将过期的key(例如10分钟后过期),那么我可以间隔地执行查询-检查-激活。我搜索但没有找到任何线索,如果你知道如何实现它,请告诉我。任何帮助将不胜感激! 最佳答案 Redis目前不支持根据过期时间查询键。您可以通过不使用Redis的内置过期时间并自行管理来解决此问题,例如通过使用SortedSet来跟踪过期时间并在您的应用程序中实现被动和主动过期。或者,您可以使用SCAN抓取键空间、获取TTL并执行评估。 关
如果满足某些条件,我想让key的生命周期更长。我的想法是,如果我可以查询所有即将过期的key(例如10分钟后过期),那么我可以间隔地执行查询-检查-激活。我搜索但没有找到任何线索,如果你知道如何实现它,请告诉我。任何帮助将不胜感激! 最佳答案 Redis目前不支持根据过期时间查询键。您可以通过不使用Redis的内置过期时间并自行管理来解决此问题,例如通过使用SortedSet来跟踪过期时间并在您的应用程序中实现被动和主动过期。或者,您可以使用SCAN抓取键空间、获取TTL并执行评估。 关