我想要了解ServiceStack Redis示例和Redis本身,現在有一些問題。瞭解Redis ServiceStack的問題示例
問題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 =「urn:someusername」。 SetEntry如何作爲Redis Set存儲或只是一個額外的密鑰?
問題3:
這更Redis的關係,但我試圖找出一切是如何存儲在Redis的,以獲得在該示例一握,所以我做:
入門Redis的-cli.exe在控制檯
類型化 '鍵*' 這顯示了所有鍵
類型化 '獲得編號:用戶:顯示名稱:約瑟夫'這表明「金塔:用戶:1」
類型化「得到甕:用戶:1」這說明用戶
現在我也看到了鍵,如「甕:用戶>問:1」或'urn:tags'如果我做一個'get urn:tags'我得到錯誤'ERR操作對一個持有錯誤類型值的鍵'。並嘗試其他Redis命令,如smembers,但我找不到正確的查詢命令。
非常感謝!用你的TYPE提示,例如'type urn:tags'可以確定它是一個zset。 'zrange urn:tags 0 -1'顯示了範圍。 – Stackbever