此代码片段是Redis的t_set.c文件中sremCommand函数的一部分。
srem command
从键指定的集合中删除一个或多个成员。
当成功删除一个或多个成员时,deleted 变量被设置为 1,触发 if 条件内内容的执行。
if (deleted) {
signalModifiedKey(c,c->db,c->argv[1]);
notifyKeyspaceEvent(NOTIFY_SET,"srem",c->argv[1],c->db->id);
if (keyremoved)
notifyKeyspaceEvent(NOTIFY_GENERIC,"del",c->argv[1],
c->db->id);
server.dirty += deleted;
}
在 if 条件内,函数
notifyKeyspaceEvent
用于传递 type
、event
、key
和 dbid
。 我很好奇这个功能到底是如何运作的。
我也想知道它是否与“Redis pub/sub”有关。
如果有连接,请解释一下Redis pub/sub中如何使用notifyKeyspaceEvent。
祝你有美好的一天 - 凯文
Redis keyspace 通知 是一项可选功能,您可以通过 redis.conf 文件或使用 CONFIG SET 命令打开。
通知类型有相当多的选项,但所有这些选项都是使用 Redis 中已有的 PubSub 机制进行通信。这些事件是监视密钥过期、删除和驱逐的好方法。您可以根据键名或事件类型获取事件。因此,您可以监控单个键的所有事件。或者所有键的单个事件。