当特定键的TTL过期时,Redis会发出任何类型的事件吗?我希望在任何给定时间点为我的应用程序添加Redis中的键数。我在生成key时有一个递增计数器,同样我希望在key过期(TTL过期)时有一个递减计数器。我知道我可以通过执行“KEYS”来实现这一点,但我想知道Redis是否会生成某种事件,当key过期时我可以捕获这些事件。我将使用NodeJS来捕获事件。谢谢,拉古。 最佳答案 不要在生产中使用KEYS-它可能是一个长时间运行、消耗RAM、拒绝服务的操作。是的,从v2.8.0开始,Redis确实有您要找的东西。阅读RedisKey
当特定键的TTL过期时,Redis会发出任何类型的事件吗?我希望在任何给定时间点为我的应用程序添加Redis中的键数。我在生成key时有一个递增计数器,同样我希望在key过期(TTL过期)时有一个递减计数器。我知道我可以通过执行“KEYS”来实现这一点,但我想知道Redis是否会生成某种事件,当key过期时我可以捕获这些事件。我将使用NodeJS来捕获事件。谢谢,拉古。 最佳答案 不要在生产中使用KEYS-它可能是一个长时间运行、消耗RAM、拒绝服务的操作。是的,从v2.8.0开始,Redis确实有您要找的东西。阅读RedisKey
我有一个用例,在这个用例中我从其他用户那里接收到用户的通知。大多数情况下,这些通知会在X分钟内被其他用户使用。消费后,我不需要在后端保存通知数据。通知的有序传递对用户很重要我想考虑一个基于缓存的解决方案或一个存储,它可以将通知在内存中保存x分钟,然后同时保留它,以便明智地为用户提供有序的通知。 最佳答案 使用DistributedMessaging启用实时消息传递。您应该使用应用程序启动的自定义事件功能。顺便说一句,TayzGrid是一个开源内存数据网格,在您的案例中也称为分布式缓存。
我有一个用例,在这个用例中我从其他用户那里接收到用户的通知。大多数情况下,这些通知会在X分钟内被其他用户使用。消费后,我不需要在后端保存通知数据。通知的有序传递对用户很重要我想考虑一个基于缓存的解决方案或一个存储,它可以将通知在内存中保存x分钟,然后同时保留它,以便明智地为用户提供有序的通知。 最佳答案 使用DistributedMessaging启用实时消息传递。您应该使用应用程序启动的自定义事件功能。顺便说一句,TayzGrid是一个开源内存数据网格,在您的案例中也称为分布式缓存。
有没有办法创建一个Redis数据库,其中的键必须在特定时间后过期?我知道我可以使用EXPIRE命令使单个key过期,但由于无论如何我都会在特定时间后使每个key过期,因此最好在Redis配置文件中指定此行为。 最佳答案 不,Redis(直到并包括v3.2)不提供自动设置新创建键的TTL的方法。您必须为您创建的每个key明确设置它。 关于Redis数据库TTL,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
有没有办法创建一个Redis数据库,其中的键必须在特定时间后过期?我知道我可以使用EXPIRE命令使单个key过期,但由于无论如何我都会在特定时间后使每个key过期,因此最好在Redis配置文件中指定此行为。 最佳答案 不,Redis(直到并包括v3.2)不提供自动设置新创建键的TTL的方法。您必须为您创建的每个key明确设置它。 关于Redis数据库TTL,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.c
我在ServiceStack.Redis中有一个列表,我想设置一个TimeSpan使其过期。也就是说,如何在ServiceStack.Redis中调用下面的redis命令EXPIREListIdttl我想要的方法是:client.Lists(listId,timespan);我的问题有解决方案吗? 最佳答案 通过IRedisClient和IRedisNativeClient上的新Custom和RawCommandAPI,您现在可以使用RedisClient发送您自己的自定义命令,这些命令可以调用adhocRedis命令:public
我在ServiceStack.Redis中有一个列表,我想设置一个TimeSpan使其过期。也就是说,如何在ServiceStack.Redis中调用下面的redis命令EXPIREListIdttl我想要的方法是:client.Lists(listId,timespan);我的问题有解决方案吗? 最佳答案 通过IRedisClient和IRedisNativeClient上的新Custom和RawCommandAPI,您现在可以使用RedisClient发送您自己的自定义命令,这些命令可以调用adhocRedis命令:public
使用以下模型:@RedisHash("positions")publicclassPosition{@IdprivateStringid;@GeoIndexedprivatePointcoordinates;@TimeToLive(unit=TimeUnit.MINUTES)protectedintttl;//...}我注意到一些数据在TimeToLive过期后仍然存在。注意过期事件前后keys*命令的区别:之前127.0.0.1:6379>keys*1)"positions:336514e6-3e52-487a-a88b-98b110ec1c28"2)"positions:coord
使用以下模型:@RedisHash("positions")publicclassPosition{@IdprivateStringid;@GeoIndexedprivatePointcoordinates;@TimeToLive(unit=TimeUnit.MINUTES)protectedintttl;//...}我注意到一些数据在TimeToLive过期后仍然存在。注意过期事件前后keys*命令的区别:之前127.0.0.1:6379>keys*1)"positions:336514e6-3e52-487a-a88b-98b110ec1c28"2)"positions:coord