记一次 缓存 更新

复制代码
 1小小应用: 

Dictionary<string, string> dic = new Dictionary<string, string>(); 2 dic.Add("巴萨主帅", "哈维"); 3 dic.Add("曼城主帅", "瓜迪奥拉"); 4 5 MemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions() { }); 6 7 foreach (var item2 in dic) 8 { 9 memoryCache.Set(item2.Key, item2.Value, new MemoryCacheEntryOptions 10 { 11 SlidingExpiration = TimeSpan.FromSeconds(10),//本行代码 表示 10秒 后 无数据更新,则缓存消失,否则更新缓存 12 }); 13 14 } 15 16 foreach (var item in list) 17 { 18 if (memoryCache.Get(item).ToString()=="哈维"|| memoryCache.Get(item).ToString() =="瓜迪奥拉") 19 { 20 Console.WriteLine(item); 21 } 22 //return; 23 }
复制代码

 测试代码:

复制代码
 1 using Microsoft.Extensions.Caching.Memory;
 2 using System;
 3 using System.Threading;
 4 
 5 namespace 缓存测试
 6 {
 7     class Program
 8     {
 9         static void Main(string[] args)
10         {
11             MemoryCache memoryCache = new MemoryCache(new MemoryCacheOptions() { });
12             
13             memoryCache.Set("mykey", "myvalue");
14 
15             //2.绝对过期时间,3秒后过期
16             memoryCache.Set("key1", "value1", new DateTimeOffset(DateTime.Now.AddSeconds(3)));
17             //3.绝对过期时间,效果同上
18             memoryCache.Set("key2", "value2", TimeSpan.FromSeconds(3));
19             //4.滑动过期时间,3秒后,即三秒钟内被访问,则重新刷新缓存时间为3秒后
20             memoryCache.Set("key3", "value3", new MemoryCacheEntryOptions
21             {
22                 SlidingExpiration = TimeSpan.FromSeconds(3),
23             });
24 
25             Console.WriteLine("-----------暂停2秒");
26             Thread.Sleep(2000);//暂停2秒
27             Console.WriteLine($"key1的值:{memoryCache.Get("key1") ?? "key1被清除"}");
28             Console.WriteLine($"key2的值:{memoryCache.Get("key2") ?? "key2被清除"}");
29             Console.WriteLine($"key3的值:{memoryCache.Get("key3") ?? "key3被清除"}");
30 
31             Console.WriteLine("-----------暂停2秒");
32             Thread.Sleep(2000);//再次暂停2秒
33             Console.WriteLine($"key1的值:{memoryCache.Get("key1") ?? "key1被清除"}");
34             Console.WriteLine($"key2的值:{memoryCache.Get("key2") ?? "key2被清除"}");
35             Console.WriteLine($"key3的值:{memoryCache.Get("key3") ?? "key3被清除"}");
36 
37             Console.WriteLine("-----------暂停4秒");
38             Thread.Sleep(4000);//再次暂停4秒
39             Console.WriteLine($"key1的值:{memoryCache.Get("key1") ?? "key1被清除"}");
40             Console.WriteLine($"key2的值:{memoryCache.Get("key2") ?? "key2被清除"}");
41             Console.WriteLine($"key3的值:{memoryCache.Get("key3") ?? "key3被清除"}");
42         }
43     }
44 }
复制代码

 

posted on   泰坦尼克号上的活龙虾  阅读(29)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

导航

统计

点击右上角即可分享
微信分享提示