Redis 原子GETSET操作的一些用例是什么?

Redis 原子GETSET操作的一些用例是什么?,redis,atomic,database,nosql,Redis,Atomic,Database,Nosql,我一直在阅读Redis的文档。我想不出有哪种情况可以使用GETSET,但通过推送或插入到列表中处理它不会更好。当必须以原子方式检索旧值但不存储旧值时,有哪些特定用例?文档显示原子计数器获取和重置模式,但通常此命令适用于在以原子方式获取前一个值时需要设置(字符串)值的任何情况。就我个人而言,我还没有看到该命令被广泛使用,因此我无法证明其他用例 列表方法也可以用于类似的效果,但当您弹出一个元素时,您会更改列表本身-旧值不再存在,可能会有其他操作(除非您使用MULTI/EXEC)在推送新值之前执行。是

我一直在阅读Redis的文档。我想不出有哪种情况可以使用GETSET,但通过推送或插入到列表中处理它不会更好。当必须以原子方式检索旧值但不存储旧值时,有哪些特定用例?

文档显示原子计数器获取和重置模式,但通常此命令适用于在以原子方式获取前一个值时需要设置(字符串)值的任何情况。就我个人而言,我还没有看到该命令被广泛使用,因此我无法证明其他用例


列表方法也可以用于类似的效果,但当您弹出一个元素时,您会更改列表本身-旧值不再存在,可能会有其他操作(除非您使用MULTI/EXEC)在推送新值之前执行。

是否可以添加一个指向问题中所指文档的链接?在现实场景中,GETSET可以用作手动过期管理SETNX-based locks()的一部分或用于具有任意时间步长的重置计数器。例如,您上次访问时发生了X个事件。所以您可以捕获计数器值并在一个命令中重置它。