是否有任何像 SQL 中的 SCN(系统更改编号)可以在 Redis 数据库中复制?
Is there any SCN (System Change Number) like in SQL that can be replicated in Redis Database?
我需要找出某行数据是否被修改,以便下次获取值时知道该特定行已在 Redis 数据库中被修改?有点像 Sql 中的 SCN 值,但在 Redis 数据库中。这可能吗?
虽然 Redis 不会公开键的最后修改时间戳,但您可以通过将该信息存储在不同的键上(可能)以您正在跟踪的键命名:对于每次修改例如,名为 key 的密钥,您还可以立即将名为 key_modified_on 的密钥设置为当前时间戳。
要使操作类似于交易,您可以使用 MULTI/EXEC transaction(如果需要,甚至可以使用 Lua 脚本):
var transaction = database.CreateTransaction();
transaction.StringSetAsync("mykey", "myvalue");
transaction.StringSetAsync("mykey_modified_on", DateTime.UtcNow.ToString("O"));
await transaction.ExecuteAsync();
话虽如此,Redis 通过 OBJECT
命令为每个键公开一个 空闲时间(读取或写入操作未请求),提供(根据documentation) maxmemory-policy
设置为 LRU 策略或设置 noeviction
和 maxmemory
。在这种情况下,您可以只使用 KeyIdleTimeAsync()
方法:
var idleTime = await database.KeyIdleTimeAsync("mykey");
我需要找出某行数据是否被修改,以便下次获取值时知道该特定行已在 Redis 数据库中被修改?有点像 Sql 中的 SCN 值,但在 Redis 数据库中。这可能吗?
虽然 Redis 不会公开键的最后修改时间戳,但您可以通过将该信息存储在不同的键上(可能)以您正在跟踪的键命名:对于每次修改例如,名为 key 的密钥,您还可以立即将名为 key_modified_on 的密钥设置为当前时间戳。
要使操作类似于交易,您可以使用 MULTI/EXEC transaction(如果需要,甚至可以使用 Lua 脚本):
var transaction = database.CreateTransaction();
transaction.StringSetAsync("mykey", "myvalue");
transaction.StringSetAsync("mykey_modified_on", DateTime.UtcNow.ToString("O"));
await transaction.ExecuteAsync();
话虽如此,Redis 通过 OBJECT
命令为每个键公开一个 空闲时间(读取或写入操作未请求),提供(根据documentation) maxmemory-policy
设置为 LRU 策略或设置 noeviction
和 maxmemory
。在这种情况下,您可以只使用 KeyIdleTimeAsync()
方法:
var idleTime = await database.KeyIdleTimeAsync("mykey");