相关疑难解决方法(0)

StackExchange.Redis server.Keys(pattern:"IsVerySlow*")

我是redis的新手,所以我做错了,我敢肯定:

我在Azure Redis中存储了大约16,000个键/值.

我使用以下代码来写入键/值

      foreach (var worksheet in wksList)
      {
        var wksYYMM = string.Format("{0}{1:00}", worksheet.ReviewDt.Year, worksheet.ReviewDt.Month);
        var wksKey = string.Format("{0}:{1}:{2}", provCode, wksYYMM, worksheet.AcctNbr);
        string jsonStr = JsonConvert.SerializeObject( MakeWsListDto(worksheet, provCoderList, rvrList));
        cache.StringSet(wksKey, jsonStr);
      }
Run Code Online (Sandbox Code Playgroud)

所以我的键看起来像这样:"AP:201401:AZ5798BK"

当我尝试查找时:

    var keys = server.Keys(pattern: "AP:201401:*"); // returns in milliseconds
    var keyAry = keys.ToArray(); // returns in over one minute
    (note: this returns 12 keys)
Run Code Online (Sandbox Code Playgroud)

返回键需要1分12秒.一旦我有了密钥,它需要几毫秒来检索那些值.如果我迭代键的值并返回值,我得到类似的结果.我做了ToArray()只是为了隔离问题.

如果我在redis-cli.exe中尝试相同的查询,它会在几毫秒内回来.

我错误地使用此命令了吗?

stackexchange.redis azure-redis-cache

15
推荐指数
2
解决办法
9515
查看次数

.NET Core 在另一个单例服务中注入单例服务

我正在使用StackExchange.Redis从 .NET Core 连接到 Redis 服务器。如何将单例注入IConnectionMultiplexer另一个单例服务?

启动文件

public void ConfigureServices(IServiceCollection services)
{
    ...
    services.AddSingleton<IConnectionMultiplexer>(ConnectionMultiplexer.Connect(GetRedisConnectionString()));
    services.AddSingleton<IMyService>(new MyService(new DbContext(optionsBuilder.Options)), ???);
    ...
}
Run Code Online (Sandbox Code Playgroud)

我的服务.cs

private DbContext _dbContext;
private IConnectionMultiplexer _redis;

public MyService(DbContext dbContext, IConnectionMultiplexer redis)
{
    _dbContext = fitDBContext;
    _redis = redis;
}
Run Code Online (Sandbox Code Playgroud)

我需要放什么而不是放进???ConfigureServices?还有其他方法吗?

StackExchange.Redis建议(链接)我们保存ConnectionMultiplexer.Connect(...)调用的返回值并重用它。因此,我为它创建了单例服务(它基于另一个StackOverFlow 问题)可以注入,但我没有任何运气将它注入另一个 SINGLETON 服务MyService

c# dependency-injection redis stackexchange.redis asp.net-core

3
推荐指数
1
解决办法
2412
查看次数