我想在Rails4应用程序中将REDIS计数器的值重置为0。我使用hincrby来递增计数器$redis.hincrby("user:likes","key",1)我无法使用hdelhttp://redis.io/commands/hdel删除key因为我需要经常拿到key。GETSET是原子的,可以完成这项工作http://redis.io/commands/getset,如示例所示GETSETmycounter"0"但是因为我使用哈希,所以我需要使用HSEThttp://redis.io/commands/hset$redis.hset("user:likes","key","0"
负数:redis.hincrby(用户:${targetUser.id},"followerCount",-1)我希望它在0处停止 最佳答案 HINCRBY操作返回增量操作后的新值。redis>HSETmyhashfield5(integer)1redis>HINCRBYmyhashfield1(integer)6redis>HINCRBYmyhashfield-1(integer)5如果您的HINCRBY操作返回-1,则表示此用户的followerCount为0,因此不应减少。因此,您可以将HSET触发为0以将其设置为零。更好的方
负数:redis.hincrby(用户:${targetUser.id},"followerCount",-1)我希望它在0处停止 最佳答案 HINCRBY操作返回增量操作后的新值。redis>HSETmyhashfield5(integer)1redis>HINCRBYmyhashfield1(integer)6redis>HINCRBYmyhashfield-1(integer)5如果您的HINCRBY操作返回-1,则表示此用户的followerCount为0,因此不应减少。因此,您可以将HSET触发为0以将其设置为零。更好的方
如果我在几分钟内对存储在键中的值执行数百万次hincrby操作,并同时获取该值以显示它,是否存在任何我需要注意的竞争条件?此外,hincrby命令会在扩展时自动排队吗?基本上,我希望为我的应用程序中的高频率事件设置和获取全局计数器(每秒数百个事件,导致每秒数百个设置和获取命令)。 最佳答案 Redis命令以原子方式执行,并且没有NO竞争条件。Redis非常快,每秒可以进行数千次快速操作(例如HINCRBY)。所以我认为在你的场景中(即每秒数百次操作),你不需要担心性能。另外,为什么不做一个基准测试:)
如果我在几分钟内对存储在键中的值执行数百万次hincrby操作,并同时获取该值以显示它,是否存在任何我需要注意的竞争条件?此外,hincrby命令会在扩展时自动排队吗?基本上,我希望为我的应用程序中的高频率事件设置和获取全局计数器(每秒数百个事件,导致每秒数百个设置和获取命令)。 最佳答案 Redis命令以原子方式执行,并且没有NO竞争条件。Redis非常快,每秒可以进行数千次快速操作(例如HINCRBY)。所以我认为在你的场景中(即每秒数百次操作),你不需要担心性能。另外,为什么不做一个基准测试:)
我有一个用例,我需要每“x”秒递减一个redis。有没有办法在Redis中做到这一点?Redis有“aeCreateTimeEvent”,但它是否暴露给客户端?如果我们从Redis外部执行此操作,我们需要一种可靠的方法来调用代码来减少存储在Redis中的计数器。我所说的可靠是指:托管“每“x”秒递减一次”程序的节点故障不应导致此设置失败。也就是说,可能有一个分布式程序来递减听起来像很多工作。因此,最好在Redis中内置一些东西。 最佳答案 不,aeCreateTimeEvent因为所有简单事件库(在AE_H中描述)仅在Redis内部
我有一个用例,我需要每“x”秒递减一个redis。有没有办法在Redis中做到这一点?Redis有“aeCreateTimeEvent”,但它是否暴露给客户端?如果我们从Redis外部执行此操作,我们需要一种可靠的方法来调用代码来减少存储在Redis中的计数器。我所说的可靠是指:托管“每“x”秒递减一次”程序的节点故障不应导致此设置失败。也就是说,可能有一个分布式程序来递减听起来像很多工作。因此,最好在Redis中内置一些东西。 最佳答案 不,aeCreateTimeEvent因为所有简单事件库(在AE_H中描述)仅在Redis内部
您会选择哪一个作为您的代理键实现?本地UUID在应用程序本地生成,无需网络访问但长度较长,会影响您的存储大小使用量带有长UUID的长URL最怕发生UUID冲突或者..Network-unique-counterid(不确定什么是正确的术语)我想象一个带有原子INC的远程Redis或带有$inc的Mongo网络旅行的费用更短,占用更少空间,导致URL更短不用担心碰撞,即使是集群应用 最佳答案 如果您正在使用MongoDB,您应该考虑使用BSONObjectID:http://www.mongodb.org/display/DOCS/O
您会选择哪一个作为您的代理键实现?本地UUID在应用程序本地生成,无需网络访问但长度较长,会影响您的存储大小使用量带有长UUID的长URL最怕发生UUID冲突或者..Network-unique-counterid(不确定什么是正确的术语)我想象一个带有原子INC的远程Redis或带有$inc的Mongo网络旅行的费用更短,占用更少空间,导致URL更短不用担心碰撞,即使是集群应用 最佳答案 如果您正在使用MongoDB,您应该考虑使用BSONObjectID:http://www.mongodb.org/display/DOCS/O
我目前在Rails中使用计数器缓存列,但我开始对关联(评级)执行更复杂的查询。出于性能原因,我将数据移至Redis。我的问题是,当将所有数据存储在Redis中时,计数器缓存列是否仍然相关,或者Redis是否会使这种方法过时(并且只对Redis存储执行计数)?我想归结为:post.ratings_count#cache_column,tableinsqldatabase$redis.scard("post:123:ratings")当然,post.ratings_count只会获取一个属性,而不是执行查询(因为帖子已经加载)。我唯一担心的是$redis.scard会在Redis存储上执行