第三篇:快取資料庫Redis
阿新 • • 發佈:2018-11-05
快取資料庫的介紹請百度 學習資料
本文主要使用Redis製作簡單的使用者賬戶和排行榜
先看一個圖
這裡是Redis不同資料型別 應用的不同場景,再根據我們的要求,我們選擇了
賬戶使用 Hash 來進行儲存,排行榜使用 Sorted Set 進行儲存
賬戶儲存
class UserDB
{
private static RedisClient m_Redis;
private static string DB_NAME = "usertable";
public static RedisClient Redis
{
set
{
m_Redis = value;
}
}
/// <summary>
/// 儲存新玩家
/// </summary>
/// <param name="user"></param>
public static void Save(User user)
{
string data = JsonConvert.SerializeObject(user);
m_Redis.SetEntryInHash(DB_NAME, user.m_UserId.ToString(), data);
}
/// <summary>
/// 判斷是否是新玩家
/// </summary>
/// <param name="userId">玩家id</param>
/// <returns></returns>
public static bool IsNewUser(long userId)
{
return !m_Redis.HashContainsEntry(DB_NAME, userId.ToString());
}
}
排行榜儲存
public class RankDB
{
private static RedisClient m_Redis;
private static string DB_NAME = "ranktable";
public static RedisClient Redis
{
set
{
m_Redis = value;
}
}
/// <summary>
/// 獲取某個玩家的排名
/// </summary>
/// <param name="userId">玩家id</param>
/// <returns></returns>
public static double GetRank(string userId)
{
return m_Redis.GetItemIndexInSortedSet(DB_NAME, userId);
}
/// <summary>
/// 獲取某個玩家的分數
/// </summary>
/// <param name="userId"></param>
/// <returns></returns>
public static double GetScore(string userId)
{
return m_Redis.GetItemScoreInSortedSet(DB_NAME, userId);
}
/// <summary>
/// 獲取排行榜
/// </summary>
/// <param name="count">排行榜人數</param>
/// <returns></returns>
public static List<string> GetRankList(int count)
{
return m_Redis.GetRangeFromSortedSet(DB_NAME, 0, count);
}
/// <summary>
/// 獲取全服排名
/// </summary>
/// <returns></returns>
public static List<string> GetGlobalRankList()
{
return m_Redis.GetAllItemsFromSortedSet(DB_NAME);
}
/// <summary>
/// 新增玩家
/// </summary>
/// <param name="key"></param>
/// <param name="score"></param>
public static void Add(string key, double score) {
m_Redis.AddItemToSortedSet(DB_NAME, key, score);
}
}
測試
class Program
{
static string ranktable = "ranktable";
static ServiceStack.Redis.RedisClient redis;
static void Main(string[] args)
{
redis = new ServiceStack.Redis.RedisClient("localhost", 6379, "", 0);
UserDB.Redis = redis;
RankDB.Redis = redis;
if (UserDB.IsNewUser(10000001))
{
User user = new User();
user.m_UserId = 10000001;
user.m_UserName = "pengdongwei";
UserDB.Save(user);
Console.WriteLine("新使用者註冊");
}
else
{
Console.WriteLine("老使用者註冊");
}
Console.Read(); Console.Read();
RankDB.Add("10000001", 10);
Console.WriteLine("存分");
Console.Read(); Console.Read();
RankDB.Add("10000001", 99);
Console.WriteLine("修改分");
Console.Read(); Console.Read();
}
}
由於這裡太簡單所以就直接上程式碼了,需要學習的東西最好還是認真看下上面貼的學習連結,然後你會感嘆Redis的小巧而又強大的功能
Redis起碼學習目標:
表格:每種資料型別的CRUD操作,
資料庫:備份,恢復,切換,
安全 : 設定密碼,驗證登入