- public IActionResult Index()
- {
- var cts = new CancellationTokenSource();
- cache.Set("cts", cts);
- MemoryCacheEntryOptions options =
- new MemoryCacheEntryOptions();
- options.AddExpirationToken(
- new CancellationChangeToken(cts.Token));
- options.RegisterPostEvictionCallback
- (MyCallback, this);
- cache.Set<string>("timestamp",
- DateTime.Now.ToString(), options);
- cache.Set<string>("key1", "Hello World!",
- new CancellationChangeToken(cts.Token));
- cache.Set<string>("key2", "Hello Universe!",
- new CancellationChangeToken(cts.Token));
- return View();
- }
代码起首创建了一个 CancellationTokenSource 对象,该对象被存储为一个自力的缓存项 cts。然后像之前那样创建出 MemoryCacheEntryOptions 对象。这时刻调用 MemoryCacheEntryOptions 的 AddExpirationToken() 办法来指定过时令牌。我们不会在这里商量 CancellationChangeToken 的细节。可以如许懂得,过时令牌能让你有权力让一个缓存项过时。如不雅令牌处于晃荡状况的话,则缓存项就会在缓存中保持,而如不雅令牌被撤消掉落了,则该缓存项就将大年夜缓存中删除掉落。一旦缓存项大年夜缓存中删除掉落了,MyCallback 就像之前一样被调用。之后代码又创建了两个缓存项—— key1 和 key2。在添加这两个缓存项时,Set() 的第三个参数将基于之前所创建的 cts 对象传递一个 CancellationChangeToken。
如许做就意味着这里我们有了三个键 - timestamp 是主键,而 key1 和 key2 则依附于 timestamp。当 timestamp 被删除时,key1 和 key2 也应当被删除掉落。要删除 timestamp,你须要在代码中的某个处所撤消其令牌。我们可以零丁的一个 action(Remove())中进行如许的操作。
- public IActionResult Remove()
- {
- CancellationTokenSource cts =
- cache.Get<CancellationTokenSource>("cts");
- cts.Cancel();
- return RedirectToAction("Show");
- }
这里我们先获取到之前存储的 CancellationTokenSource 对象,并调用它的 Cancel() 办法。如许做会把 timestamp,key1 以及 key2 都删除掉落。 你可以经由过程在 Show() 这个 action 中获取一下所有这三个键来确认它们是否已经被删除掉落了。
推荐阅读
引言pymysqlpool 是数据库对象包中新成员,目标是能供给一个实用的数据库连接池中心件,大年夜而避免在应用中频繁地创建和释放数据库连接资本。功能 连接池本身是线程安然的,可在多线>>>详细阅读
地址:http://www.17bianji.com/lsqh/35873.html
1/2 1