Redis 是一個開源的使用 ANSI C語言編寫的支持網路、可基於記憶體也可持久化的日誌型、Key Value 資料庫。 常用它來存儲緩存數據,能非常輕鬆的實現緩存過期刷新機制。 多種語言都可以連接到 Redis 資料庫伺服器,本文將推薦一個非常簡潔的 C 連接 Redis 資料庫的開源項目。 一般 ...
Redis 是一個開源的使用 ANSI C語言編寫的支持網路、可基於記憶體也可持久化的日誌型、Key-Value 資料庫。
常用它來存儲緩存數據,能非常輕鬆的實現緩存過期刷新機制。
多種語言都可以連接到 Redis 資料庫伺服器,本文將推薦一個非常簡潔的 C# 連接 Redis 資料庫的開源項目。
一般推薦
通常,C# 使用 Redis 會推薦使用添加 NuGet 包 StackExchange.Redis 的方式來使用。
使用時代碼形式如下:
ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("127.0.0.1:6379,password=CeshiPassword");
IDatabase db = redis.GetDatabase();
string value = "name";
db.StringSet("mykey", value);
Console.WriteLine(db.StringGet("mykey"));
個人覺得,其使用方式不夠直觀。
如 ConnectionMultiplexer 這個名稱不是可猜測的,甚至看到它也想不起它與 Redis 有什麼關係。然後,從最簡使用的角度,它還需要用戶瞭解到裡邊 Database 的概念。
推薦一個簡潔版本 csredis
項目地址:https://github.com/ctstone/csredis
其名稱接地氣,使用方便,形式如下。
using (var redis = new RedisClient("localhost"))
{
redis.Auth("password");
redis.Set("mykey", "name", 25); // 有效期25秒
Console.WriteLine(redis.Get("mykey"));
}
一個簡單的輔助類
這裡進行簡單的封裝,使得使用時只關心鍵與值,以及其有效時長,這樣一樣,普通的 token 緩存場景就可以滿足了。
public class RedisHelper
{
private static RedisClient _RedisCli;
private static RedisClient RedisCli
{
get
{
if (_RedisCli == null)
{
_RedisCli = new RedisClient("192.168.0.100");
_RedisCli.Auth("redispassword");
}
return _RedisCli;
}
}
/// <summary>
/// 取得緩存值
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetKey(string key)
{
return RedisCli.Get(key);
}
/// <summary>
/// 保存值並設置有效期(second)
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expireSeconds"></param>
public static void SetKey(String key, String value, int expireSeconds)
{
RedisCli.Set(key, value, expireSeconds);
}
}