首页 > 数据库 >C# 中使用 Redis 简单存储

C# 中使用 Redis 简单存储

时间:2022-11-07 18:11:39浏览次数:68  
标签:存储 C# Redis redis RedisCli static key

原文网址:https://www.cnblogs.com/timeddd/p/11117787.html

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);
    }
}
关注“时间维度”公众号,来一场时空交织!

标签:存储,C#,Redis,redis,RedisCli,static,key
From: https://www.cnblogs.com/bruce1992/p/16866919.html

相关文章

  • Python decorator
    此处只做标记,没有深入更深层次了解!!!初步的了解,是decorator库可以通过注解的方式扩展方法,扩展是在不改变原有函数的情况下进行的,如下图所示:    另外,网上也看到一些......
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
    前言 该篇介绍的内容如题,就是利用redis实现接口的限流( 某时间范围内最大的访问次数) 。正文 惯例,先看下我们的实战目录结构:首先是pom.xml核心依赖: <!--用于redis......
  • Springboot Async异步扩展使用 结合 CompletableFuture
    前言很早前,出过一篇介绍springboot怎么使用异步线程的文章(如果你还未了解异步的使用,可以先看看这篇)《SpringBoot最简单的使用异步线程案例@Async》:然后近期有些小伙伴使用......
  • SpringCloud GateWay 网关 在GlobalFilter 拿出返回数据response
    前言文章主旨:  将返回数据拿出来,然后各种处理。正文 先看该篇文章的示例接口:红色框框里面就是返回的 response数据。现在我们想要的就是在返回给到调用方(前端、......
  • Springboot 整合 WebSocket ,使用STOMP协议 ,前后端整合实战 (一)《SpringBoot 整合WebSoc
    前言websocket,对于我来说已经是老朋友了。  很久很久以前,我写过两篇websocket相关的文章。  一篇极简风,最最最基础的方式整合websocket:《SpringBoot整合WebSocket......
  • CMD-SeaJS模块化
    下载sea.js,并引入官网:http://seajs.org/github:https://github.com/seajs/seajs将sea.js导入项目:js/libs/sea.js创建项目结构|-js|-libs|-sea.js|-modules|-mod......
  • vue2.0引入css文件后报错
    vue2.0的main.js中引入css文件后报错。报错示例:UncaughtError:Moduleparsefailed:/Users/**/Desktop/vue2/node_modules/.1.0.0-rc.5@element-ui/lib/theme-default/i......
  • 并发编程 - Atomic & Unsafe
    1.全面地走一遍Atomic包下面的原子类;2.CAS->原子比较与交换算法的bug-ABA问题;3.魔法类-Unsafe,ini->堆外内存Atomic1.atomic底层实现是基于无锁算法-cas;......
  • Springboot Condition 实用讲解,只看一遍包学会
    前言该篇文章,还是一贯的风格,源码+示例+自言自语的分析,目的只有一个:就是想让大家都会玩 Condition、Conditional。正文先看看Condition是被放在包springcontext(上下文/......
  • Vue 3.x 的 script setup 语法糖用法详解
    由于原来vue3中的setupCompositionAPI语法太过于冗长麻烦,官方又出了这么个语法糖,非常的好用了。这里介绍一些常用的语法:一、如何开始使用?1、需要关闭vetur插件,安装Vol......