我试图抓住ServiceStack Redis示例和Redis本身,现在有一些问题。
问题1:
我看到定义了一些静态索引,例如:
static class TagIndex
{
public static string Questions(string tag) { return "urn:tags>q:" + tag.ToLower(); }
public static string All { get { return "urn:tags"; } }
}
这是什么'>' (大于)签到吗?这是某种惯例吗?
问题2:
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 =&#34; urn:someusername&#34;。如何将SetEntry存储为Redis Set或只是一个额外的密钥?
问题3:
这与Redis有关,但我试图找出Redis中的所有内容是如何存储的,以便掌握示例,所以我做了:
在控制台中启动redis-cli.exe
键入&#39;键*&#39;这显示了所有键
输入&#39;获取ID:用户:DisplayName:joseph&#39;这显示了&#39; urn:user:1&#39;
键入&#39; get urn:user:1&#39;这显示了用户
现在我也看到像&#39; urn:user&gt; q:1&#39;或者&#39; urn:tags&#39;如果我做了一个&#39;得到urn:标签&#39;我得到错误&#39; ERR操作对一个持有错误类型值的密钥&#39;。并尝试了其他Redis命令,如smembers但我找不到正确的查询命令。
答案 0 :(得分:3)
问题1:return "urn:tags>q:" + tag.ToLower();
为您提供给定标签的密钥(字符串); &#34;&gt;&#34;对Redis没有任何意义,它是该示例开发人员的惯例,可能是任何其他角色。
问题3:使用TYPE命令确定密钥的类型,然后您将在redis文档中找到正确的命令来获取值。