gpt4 book ai didi

c# - 系统重启后 Ignite 缓存变空

转载 作者:行者123 更新时间:2023-11-30 20:28:41 25 4
gpt4 key购买 nike

我在玩 ignite 并有一个简单的测试应用程序来探索它的持久性特性:

using System;
using Apache.Ignite.Core;
using Apache.Ignite.Core.PersistentStore;

namespace IgniteDemo
{
internal class Item
{
public int Number { get; set; }
public DateTime PointInTime { get; set; }
public override string ToString() => $"Item:{{Number={Number} ,PointInTime={PointInTime}}}";
}

class Program
{
static void Main(string[] args)
{
const string itemCacheName = @"Items";
var random = new Random();

var igniteConfig = new IgniteConfiguration{
JvmInitialMemoryMb = 1024,
PersistentStoreConfiguration = new PersistentStoreConfiguration()
};

using (var ignite = Ignition.Start(igniteConfig))
{
ignite.SetActive(true);

var cache = ignite.GetOrCreateCache<Guid, Item>(itemCacheName);
cache.LoadCache(null);

// put random item into cache
cache.Put(Guid.NewGuid(), new Item {Number = random.Next(), PointInTime = DateTime.Now});

//print all items in the cache
Console.WriteLine(@"Cache content:");
foreach (var cacheEntry in cache)
Console.WriteLine(cacheEntry);

Console.WriteLine("\nPress any key to Close");
Console.ReadKey();
}
}
}
}

一切正常。在应用程序执行之间,数据保留在缓存中。但是如果我重新启动我的系统,所有缓存数据都会消失。我的第一个猜测是问题发生在默认情况下 Temp 文件夹中的工作目录。所以我决定将工作目录移动到自定义文件夹:

        var igniteConfig = new IgniteConfiguration
{
JvmInitialMemoryMb = 1024,
WorkDirectory = @"D:\Store\Wd",
PersistentStoreConfiguration = new PersistentStoreConfiguration()
{
PersistentStorePath = @"D:\Store\Data",
WalStorePath = @"D:\Store\Wal",
WalArchivePath = @"D:\Store\Wal\Archive"
}
};

那是没有收获。

我已阅读下面列出的官方资源

https://apacheignite.readme.io/docs

https://ptupitsyn.github.io/

但我还是不明白为什么我的缓存数据消失了。我是否错过了关于 Ignite 持久性的重要信息?


我使用 NuGet 获取 Ignite 并在我的机器上安装了 Java 1.8.0_151

最佳答案

如果查看 PersistentStorePath 文件夹的内容,您会看到类似 0_0_0_0_0_0_0_1_127_0_0_1_172_25_4_66_2001_0_9d38_6abd_388e_bade_3c6f_269_47500 的文件夹(有关名称生成的更多详细信息|1045|79)。

重启机器会导致这个ID改变,这是一个here使用 Ignite 2.1 和 2.2(在即将发布的 2.3 中修复)。解决方法是设置 IgniteConfiguration.consistentId 属性,但它在 Ignite.NET 中不可用(也在 2.3 中添加)。

所以你的选择是:

  • 等待 Ignite 2.3 发布,或使用 known issue
  • 通过nightly build设置consistentId并使用 IgniteConfiguration.SpringConfigUrl 属性加载它

关于c# - 系统重启后 Ignite 缓存变空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46933605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com