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

项目地址:

其名称接地气,使用方便,形式如下。

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);
    }
}