apoc.ttl.expireIn

过程 Apoc 扩展

CALL apoc.ttl.expireIn(node,timeDelta,'time-unit') - 通过设置 :TTL 标签和 ttl 属性,在指定时间长度后使节点过期

签名

apoc.ttl.expireIn(node :: NODE?, timeDelta :: INTEGER?, timeUnit :: STRING?) :: VOID

输入参数

名称 类型 默认

节点

NODE?

null

时间差 (timeDelta)

整数?

null

时间单位 (timeUnit)

STRING?

null

启用 TTL

默认情况下 TTL 是禁用的。我们可以通过在 apoc.conf 中设置以下属性来启用它

apoc.conf
apoc.ttl.enabled=true

使用示例

本节中的示例基于以下示例图

CREATE (TheMatrix:Movie {title:'The Matrix', released:1999, tagline:'Welcome to the Real World'})
CREATE (Keanu:Person {name:'Keanu Reeves', born:1964})
CREATE (Carrie:Person {name:'Carrie-Anne Moss', born:1967})
CREATE (Laurence:Person {name:'Laurence Fishburne', born:1961})
CREATE (Hugo:Person {name:'Hugo Weaving', born:1960})
CREATE (LillyW:Person {name:'Lilly Wachowski', born:1967})
CREATE (LanaW:Person {name:'Lana Wachowski', born:1965})
CREATE (JoelS:Person {name:'Joel Silver', born:1952})
CREATE
(Keanu)-[:ACTED_IN {roles:['Neo']}]->(TheMatrix),
(Carrie)-[:ACTED_IN {roles:['Trinity']}]->(TheMatrix),
(Laurence)-[:ACTED_IN {roles:['Morpheus']}]->(TheMatrix),
(Hugo)-[:ACTED_IN {roles:['Agent Smith']}]->(TheMatrix),
(LillyW)-[:DIRECTED]->(TheMatrix),
(LanaW)-[:DIRECTED]->(TheMatrix),
(JoelS)-[:PRODUCED]->(TheMatrix);

我们可以通过运行以下查询来让任何制作过电影的人过期

MATCH (movie:Movie)<-[produced:PRODUCED]-(person:Person)
CALL apoc.ttl.expireIn(person, 10,'s')
RETURN movie, produced, person;
表 1. 结果
movie produced person

(:Movie {tagline: "Welcome to the Real World", title: "The Matrix", released: 1999})

[:PRODUCED]

(:Person:TTL {name: "Joel Silver", ttl: 1605698768575, born: 1952}

此节点(及其关系)将在 1605698768575(撰写本文时起 10 秒后)过期

RETURN datetime({epochMillis: 1605698768575}) AS expiryTime;
表 2. 结果
过期时间 (expiryTime)

2020-11-18T11:26:08.575Z

当下一次过期任务运行时,我们将在 neo4j.log 中看到以下输出

neo4j.log
2020-11-18 11:26:40.357+0000 INFO  [apoc] TTL: Expired 1 nodes 1 relationships

如果我们尝试查找我们的制片人

MATCH (movie:Movie)<-[produced:PRODUCED]-(person:Person)
RETURN movie, produced, person;

我们将得不到任何结果

表 3. 结果
movie produced person
© . This site is unofficial and not affiliated with Neo4j, Inc.