using Apq.Cfg.Redis;
namespace Apq.Cfg.Samples.Demos;
///
/// 示例 9: Redis 配置源
/// 注意:需要运行 Redis 服务才能执行此示例
///
public static class RedisDemo
{
public static async Task RunAsync(string baseDir)
{
Console.WriteLine("═══════════════════════════════════════════════════════════════");
Console.WriteLine("示例 9: Redis 配置源");
Console.WriteLine("═══════════════════════════════════════════════════════════════\n");
Console.WriteLine("注意:此示例需要运行 Redis 服务 (localhost:6379)\n");
try
{
// 构建 Redis 配置源
Console.WriteLine("9.1 连接 Redis 配置源:");
var cfg = new CfgBuilder()
.AddRedis(options =>
{
options.ConnectionString = "localhost:6379";
options.KeyPrefix = "apq:samples:";
options.Database = 0;
options.ConnectTimeoutMs = 3000;
}, level: 0, isPrimaryWriter: true)
.Build();
Console.WriteLine(" 已连接到 Redis");
// 写入配置
Console.WriteLine("\n9.2 写入配置到 Redis:");
cfg.SetValue("App:Name", "RedisApp");
cfg.SetValue("App:Version", "1.0.0");
cfg.SetValue("Database:Host", "db.example.com");
cfg.SetValue("Database:Port", "5432");
await cfg.SaveAsync();
Console.WriteLine(" 已写入 4 个配置项");
// 读取配置
Console.WriteLine("\n9.3 从 Redis 读取配置:");
Console.WriteLine($" App:Name = {cfg["App:Name"]}");
Console.WriteLine($" App:Version = {cfg["App:Version"]}");
Console.WriteLine($" Database:Host = {cfg["Database:Host"]}");
Console.WriteLine($" Database:Port = {cfg.GetValue("Database:Port")}");
// 检查配置是否存在
Console.WriteLine("\n9.4 检查配置是否存在:");
Console.WriteLine($" Exists(App:Name) = {cfg.Exists("App:Name")}");
Console.WriteLine($" Exists(NotExist) = {cfg.Exists("NotExist")}");
// 删除配置
Console.WriteLine("\n9.5 删除配置:");
cfg.Remove("App:Name");
cfg.Remove("App:Version");
cfg.Remove("Database:Host");
cfg.Remove("Database:Port");
await cfg.SaveAsync();
Console.WriteLine(" 已清理测试配置");
cfg.Dispose();
Console.WriteLine("\n[示例 9 完成]\n");
}
catch (Exception ex)
{
Console.WriteLine($" [跳过] Redis 服务不可用: {ex.Message}");
Console.WriteLine("\n[示例 9 跳过]\n");
}
}
}