Redis 是一個(gè)開源的使用 ANSI C語言編寫的支持網(wǎng)絡(luò)跌造、可基于內(nèi)存也可持久化的日志型担钮、Key-Value 數(shù)據(jù)庫(kù)刀脏。
常用它來存儲(chǔ)緩存數(shù)據(jù)止吐,能非常輕松的實(shí)現(xiàn)緩存過期刷新機(jī)制。
多種語言都可以連接到 Redis 數(shù)據(jù)庫(kù)服務(wù)器箭昵,本文將推薦一個(gè)非常簡(jiǎn)潔的 C# 連接 Redis 數(shù)據(jù)庫(kù)的開源項(xiàng)目税朴。
一般推薦
通常,C# 使用 Redis 會(huì)推薦使用添加 NuGet 包 StackExchange.Redis 的方式來使用家制。
使用時(shí)代碼形式如下:
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"));
個(gè)人覺得正林,其使用方式不夠直觀。
如 ConnectionMultiplexer 這個(gè)名稱不是可猜測(cè)的颤殴,甚至看到它也想不起它與 Redis 有什么關(guān)系觅廓。然后,從最簡(jiǎn)使用的角度涵但,它還需要用戶了解到里邊 Database 的概念杈绸。
推薦一個(gè)簡(jiǎn)潔版本 csredis
項(xiàng)目地址: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"));
}
一個(gè)簡(jiǎn)單的輔助類
這里進(jìn)行簡(jiǎn)單的封裝,使得使用時(shí)只關(guān)心鍵與值芥永,以及其有效時(shí)長(zhǎng)篡殷,這樣一樣,普通的 token 緩存場(chǎng)景就可以滿足了埋涧。
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>
/// 保存值并設(shè)置有效期(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);
}
}