博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET Core 使用 Redis 客户端
阅读量:7048 次
发布时间:2019-06-28

本文共 3337 字,大约阅读时间需要 11 分钟。

Mac OS 安装 Redis(用于连 Redis 服务器,方便查看数据):

  1. wget http://download.redis.io/redis-stable.tar.gz(没有wget命令,手动下载)
  2. tar xvzf redis-stable.tar.gz
  3. cd redis-stable
  4. make
  5. sudo make install
  6. make test(测试安装是否成功)

安装好之后,我们就可以使用redis-cli命令了,

连接 Redis 服务器:

$ redis-cli -h 12.22.10.33 -p 6379 -a "password"12.22.10.33:6379> pingPONG

查看 key 是否存在(1 表示存在):

$ exists test_key(integer) 1

查看指定 key 的值类型:

$ type test_keystring

获取指定 key 的字符串值:

$ get test_key"hello world"

上面是一些简单的redis-cli命令,更多命令查看:


ASP.NET Core 使用 Redis 客户端,最好的选择当然是 StackExchange.Redis,GitHub 地址:

使用很简单,首先安装程序包:

PM> Install-Package StackExchange.Redis

使用简单示例:

static void Main(string[] args){    //var configurationOptions = new ConfigurationOptions    //{
// EndPoints = // {
// "10.11.22.1", "6379", // "10.11.22.2", "6379", // "10.11.22.3", "6379" // }, // Password = "aqsea3491" //}; ConnectionMultiplexer redis = ConnectionMultiplexer.Connect("10.11.22.1:6379,10.11.22.1:6379,10.11.22.1:6379,password=123456"); IDatabase db = redis.GetDatabase(); string value = "abcdefg"; db.StringSet("test_key", value); value = db.StringGet("test_key"); Console.WriteLine(value); Console.ReadLine();}

当然,如果用于生产环境的话,需要再进行封装下,如果我们使用的是 ASP.NET Core 的话,还有一种不用自己封装的选择,那就是 Microsoft.Extensions.Caching.Redis,GitHub 地址:

Microsoft.Extensions.Caching.Redis 是微软自己封装的 Redis 组件,内部使用的还是 StackExchange.Redis,但在 ASP.NET Core 中使用起来,非常简单。

首先安装程序包:

PM> Microsoft.Extensions.Caching.Redis

Startup.ConfigureServices配置:

public void ConfigureServices(IServiceCollection services){    // Add framework services.    services.AddMvc();    // For redis    // install-package Microsoft.Extensions.Caching.Redis    services.AddDistributedRedisCache(options =>    {        options.InstanceName = "";        options.Configuration = "10.11.22.1:6379,10.11.22.1:6379,10.11.22.1:6379,password=123456";    });}

简单使用:

public class ValuesController : Controller{    private readonly IDistributedCache _distributedCache;    public ValuesController(IDistributedCache distributedCache)    {        _distributedCache = distributedCache;    }    // GET api/values    [HttpGet]    public async Task
Get() { // redis operate var key = "test_key"; var valueByte = await _distributedCache.GetAsync(key); if (valueByte == null) { await _distributedCache.SetAsync(key, Encoding.UTF8.GetBytes("world22222"), new DistributedCacheEntryOptions().SetSlidingExpiration(DateTimeOffset.Now.AddSeconds(3000))); valueByte = await _distributedCache.GetAsync(key); } var valueString = Encoding.UTF8.GetString(valueByte); return valueString; }}

测试过程中,发现 Microsoft.Extensions.Caching.Redis 有一个问题,虽然IDistributedCache提供了SetStringAsync方法,但实际插入到 Redis 的值类型,并不是string,而是hash,可以用redis-cli命令进行测试:

114.55.56.213:6379> get test_key(error) WRONGTYPE Operation against a key holding the wrong kind of value114.55.56.213:6379> type test_keyhash

所以,没办法,只能使用SetAsync,然后读取再由byte转换为string

另外,微软封装的Caching,除了 Microsoft.Extensions.Caching.Redis,还有:

  • Microsoft.Extensions.Caching.Abstractions
  • Microsoft.Extensions.Caching.Memory
  • Microsoft.Extensions.Caching.SqlServer(使用 SqlServer 数据库,作为缓存存储)

详细使用,请查看:

本文转自田园里的蟋蟀博客园博客,原文链接:http://www.cnblogs.com/xishuai/p/asp-net-core-use-redis.html,如需转载请自行联系原作者

你可能感兴趣的文章
nginx 源码学习笔记(二)——nginx精粹-模块
查看>>
DirectX截图黑屏的解决办法
查看>>
Expanding Cat5e LAN segments over 100 metres using OUTREACH Ethernet LAN extenders
查看>>
关于Oracle冷备份与热备份的对比
查看>>
C#条件判断-嵌套if结构
查看>>
Selenium:Hello,World!
查看>>
Dev GridControl数据修改后实时更新数据源
查看>>
理解AngularJS的作用域Scope
查看>>
HibernateTemplate 查询
查看>>
WebMatrix教程(四) (读取数据库)
查看>>
CCD是什么
查看>>
[WCF-Discovery]让服务自动发送上/下线通知[实例篇]
查看>>
服务器 防Dos攻击
查看>>
Smarty介绍安装及配置
查看>>
android游戏开发框架libgdx的使用(二)--图形绘制
查看>>
分享一些牛人的心得
查看>>
ListView控件的基本操作
查看>>
jQuery 参考手册 - 属性操作
查看>>
C–gcc命令行下的参数
查看>>
oracle之表管理
查看>>