我想将数据更改记录到sql update trigger中的redis db,由c#dll调用。 但我不想让触发延迟。好像日志记录redis操作异步。
有没有办法让这种情况发生?
答案 0 :(得分:1)
试试这个,它使用PubSub,但概念几乎相同:
链接的重点:
[SqlProcedure]
public static void Publish(SqlString redisServerAddress, SqlInt32 redisServerPort, SqlString channel, SqlString message)
{
using (RedisConnection rc = GetRedisConnection(redisServerAddress.Value, redisServerPort.Value))
{
rc.Publish(channel.Value, message.Value);
}
}
CREATE PROCEDURE Redis.Publish(@RedisServerAddress NVARCHAR(1024), @RedisServerPort INT, @Channel NVARCHAR(1024), @Message NVARCHAR(MAX))
AS EXTERNAL NAME [MindFlavor.RESP.SQLCLR]. [MindFlavor.RESP.SQLCLR.Redis].Publish;
GO
EXEC [MindFlavor].[Redis].[Publish] N'ubuntu-spare.pelucchi.local', 6379, N'msbackup:sql', @txt;
请注意,在某些环境(例如Azure)中,您需要将clr标记为safe
,如果您的dll或依赖项破坏clr {{1},则会引发一些问题实践。