gpt4 book ai didi

redis - 理解 Redis ServiceStack 示例的问题

转载 作者:IT王子 更新时间:2023-10-29 06:10:08 26 4
gpt4 key购买 nike

我正在尝试掌握 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/

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