首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用.net核心中的部分键在redis中获取数据

使用.net核心中的部分键在redis中获取数据
EN

Stack Overflow用户
提问于 2022-03-02 21:42:52
回答 1查看 1.1K关注 0票数 0

我在我的redis服务器中有这些密钥和它们的数据:

代码语言:javascript
复制
AdminIpoChangeEntity:0
AdminIpoChangeEntity:1
AdminIpoChangeEntity:2
AdminIpoChangeEntity:3

我只想把AdminIpoChangeEntity传递给我的方法,我的方法应该返回四个记录。这是我的redis存储库:

代码语言:javascript
复制
 private IDatabase RedisDb => _connection.Value.GetDatabase();
    //

    private string Key(TEntity entity) => $"{typeof(TEntity).Name}:{entity.Id}";
    private string Key(string id) => $"{typeof(TEntity).Name}:{id}";

    public async Task<OperationResult> AddOrUpdateAsync(TEntity entity)
    {
            var val = System.Text.Json.JsonSerializer.Serialize(entity);
            var res = await RedisDb.StringSetAsync(Key(entity), val);

            return OperationResult<TEntity>.Succeed();
    }
   public async Task<OperationResult<TEntity>> GetByIdAsync(string id)
    {
            var value = await RedisDb.StringGetAsync(Key(id));
            if (value.HasValue)
            {
                var result = System.Text.Json.JsonSerializer.Deserialize<TEntity>(value.ToString());
                return OperationResult<TEntity>.Succeed(result);
            }
            return OperationResult<TEntity>.Succeed(null);

    }

我需要这个:

代码语言:javascript
复制
public async Task<OperationResult<IList<TEntity>>> GetAllAsync()
{

        var value = await RedisDb.StringGetAsync(Key(nameof(TEntity)));

        throw new NotImplementedException();

}

我的实体名是AdminIpoChangeEntity

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-04 12:44:44

我应该找到与我的值匹配的所有键,然后将它们传递到getstring以查找所有值,下面是我的最后代码:

代码语言:javascript
复制
public async Task<OperationResult<IList<TEntity>>> GetAllAsync()
{
    EndPoint endPoint = _connection.Value.GetEndPoints().First();
    RedisKey[] keys = _connection.Value.GetServer(endPoint).Keys(pattern: typeof(TEntity).Name+"*").ToArray();
    var value = await RedisDb.StringGetAsync(keys);
    if (value.Count()>0)
    {
      var result=  value.Select(d => System.Text.Json.JsonSerializer.Deserialize<TEntity>(d)).ToArray();
      //  var result = System.Text.Json.JsonSerializer.Deserialize<IList<TEntity>>(value.ToString());
        return OperationResult<IList<TEntity>>.Succeed(result);
    }
    return OperationResult<IList<TEntity>>.Succeed(null);

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71329501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档