redis - 理解 Redis ServiceStack 示例的问题

标签 redis servicestack

我正在尝试掌握 ServiceStack Redis 示例和 Redis 本身,现在有一些问题。

问题一:

我看到定义了一些静态索引,例如:

static class TagIndex
{
    public static string Questions(string tag) { return "urn:tags>q:" + tag.ToLower(); }
    public static string All { get { return "urn:tags"; } }
}

“>”(大于)符号的作用是什么?这是某种约定吗?

问题二:

public User GetOrCreateUser(User user)
{
    var userIdAliasKey = "id:User:DisplayName:" + user.DisplayName.ToLower();
    using (var redis = RedisManager.GetClient())
    {
        var redisUsers = redis.As<User>();

        var userKey = redis.GetValue(userIdAliasKey);
        if (userKey != null) return redisUsers.GetValue(userKey);

        if (user.Id == default(long)) user.Id = redisUsers.GetNextSequence();

        redisUsers.Store(user);
        redis.SetEntry(userIdAliasKey, user.CreateUrn());

        return redisUsers.GetById(user.Id);
    }
}

据我所知,首先用户存储有一个唯一的 ID。使用客户端时是否有必要(我知道这不是 Redis 必需的)?我的模型有一个我喜欢使用的有意义的字符串 ID(如电子邮件地址)。我还看到 SetEntry 已完成。 SetEntry 究竟做了什么?我认为这是一个额外的键,只是为了设置 id 和可搜索键之间的关系。我想这在用有意义的键存储对象本身时是没有必要的,所以 user.id = "urn:someusername"。 SetEntry 如何存储为 Redis Set 或只是一个额外的键?

问题三:

这与 Redis 更相关,但我试图弄清楚所有内容是如何存储在 Redis 中的,以便掌握示例,所以我做了:

  • 在控制台中启动了 redis-cli.exe

  • 键入 'keys *' 这会显示所有键

  • 输入 'get id:User:DisplayName:joseph' 这显示 'urn:user:1'

  • 键入 'get urn:user:1' 这会显示用户

现在,如果我执行“get urn:tags”,我还会看到像“urn:user>q:1”或“urn:tags”这样的键,我会收到错误消息“针对持有错误类型值的键进行错误操作” '.并尝试了其他 Redis 命令,如 smembers 但我找不到正确的查询命令。

最佳答案

问题 1:return "urn:tags>q:"+ tag.ToLower(); 为您提供给定标签的键(字符串); “>”对 Redis 没有意义,它是示例开发人员的约定,可以是任何其他字符。

问题 3:使用 TYPE命令来确定键的类型,然后您将在 redis 文档中找到正确的命令来获取值。

关于redis - 理解 Redis ServiceStack 示例的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22508393/

相关文章:

.net - 使用 redis.io 存储对象

ruby - 有没有办法确定 redis 键是否包含列表或集合?

c# - 从终端分离时如何为单声道制作 cpu 友好的无限循环

c# - servicestack ormlite 总是返回匿名对象,即使没有找到

naming-conventions - 是否可以覆盖 ServiceStack 操作命名约定?

c# - 在 C# 中从 SortedSet 中删除元素

java - Redis - key HASH 和 SET 以及 ZSET 如何与 CrudRepository 保存相关?

node.js - node.js 中的 Redis 异步/等待问题

c# - Redis ServiceStack 超时异常 C# Asp.Net

c# - ServiceStack 5.0 AuthenticateAttribute.Execute() 现在返回一个任务