C#中如何使用redis

所属分类: 软件编程 / C#教程 阅读数: 104
收藏 0 赞 0 分享

redis 是一个非关系型高性能的key-value数据库。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

下面介绍下,在C#中如何使用redis

1、引用 StackExchange.Redis

2、redis 工具类

public class RedisHelper
  {
    private static ConnectionMultiplexer multiplexer { get; set; }
    static RedisHelper()
    {
    }

    public static IDatabase GetDataBase(int dbNums = 1)
    {
      if (multiplexer == null)
        Init();
      return multiplexer.GetDatabase(dbNums);
    }

    public static ConnectionMultiplexer GetMultiplexer()
    {
      if (multiplexer == null)
        Init();

      return multiplexer;
    }
    public static bool IsConnect(string key, IDatabase redisDb, string module, string action)
    {
      if (!redisDb.IsConnected(key))
      {
        LogHelper.Error("current redis is not connect", null, module, action);
        return false;
      }
      return true;
    }

    private static void Init()
    {
      try
      {
        var configString = ConfigurationManager.AppSettings["RedisConfigString"];
        ConfigurationOptions options = ConfigurationOptions.Parse(configString);
        multiplexer = ConnectionMultiplexer.Connect(options);
      }
      catch (Exception ex)
      {
        LogHelper.Error(ex, "RedisHelper", "Static");
      }
    }
  }

3、常用操作

IDatabase _cacheClient = RedisHelper.GetDataBase(4);
//key是否存在
_cacheClient.KeyExists("key")
//设置key-vaule
_cacheClient.StringSet("key", "value");
//设置过期时间
_cacheClient.KeyExpire("key", TimeSpan.FromMinutes(1));
//删除
_cacheClient.KeyDelete("key");

4、redis 虽然也可以做消息队列,实现也简单,但弊端同样明显,不推荐

//发布
ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer();
ISubscriber sub = multiplexer.GetSubscriber();
var queue = sub.Publish("channel name", "message");

//订阅
ConnectionMultiplexer multiplexer = RedisHelper.GetMultiplexer();
ISubscriber sub = multiplexer.GetSubscriber();
sub.Subscribe("channel name", (channel, message) =>
{
  //TODO
});

5、计数器,用于秒杀、抢购控库存

//取值,不存在则初始为0
long num = _cacheClient.StringIncrement("key", 0)

//判断,比如和缓存里的商品总库存比较

//计数增加
_cacheClient.StringIncrement("key", 2)

以上就是C#中如何使用redis的详细内容,更多关于C#使用redis的资料请关注脚本之家其它相关文章!

更多精彩内容其他人还在看

C#实现写系统日志的方法

这篇文章主要介绍了C#实现写系统日志的方法,涉及C#针对系统日志的创建、写入及删除等技巧,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程实现自定义热键的方法

这篇文章主要介绍了C#编程实现自定义热键的方法,涉及C#键盘按键设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#实现读取被进程占用的文件实现方法

这篇文章主要介绍了C#实现读取被进程占用的文件实现方法,涉及C#进程操作及文件读取的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#获取任务栏显示进程的方法

这篇文章主要介绍了C#获取任务栏显示进程的方法,涉及C#针对进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#调用dos窗口获取相关信息的方法

这篇文章主要介绍了C#调用dos窗口获取相关信息的方法,涉及C#调用dos窗口及进程操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#通过Semaphore类控制线程队列的方法

这篇文章主要介绍了C#通过Semaphore类控制线程队列的方法,涉及Semaphore类操作线程队列的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#使用Dispose模式实现手动对资源的释放

这篇文章主要介绍了C#使用Dispose模式实现手动对资源的释放,涉及C#采用Dispose模式操作资源的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#动态创建button的方法

这篇文章主要介绍了C#动态创建button的方法,涉及C#按钮属性动态设置的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C#编程获取资源文件中图片的方法

这篇文章主要介绍了C#编程获取资源文件中图片的方法,涉及C#针对项目中资源文件操作的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

WinForm实现窗体最大化并遮盖任务栏的方法

这篇文章主要介绍了WinForm实现窗体最大化并遮盖任务栏的方法,涉及C#实现WinForm窗体全屏显示的实现及调用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多