如何在 .NET 中使用 Redis缓存

译文链接:https://www.infoworld.com/article/3187905/how-to-work-with-redis-cache-in-net.html

缓存是一种状态管理机制,通常用于提升你的应用程序性能,它很大程度上能够减少一个请求对你系统资源的消耗。

Redis是一个开源的,高性能的,NoSql数据库,它的速度非常快,而且所有的数据都是灌入到内存中,从内存中读写数据的性能开销真的是微乎其微,值得一提的是 Redis 采用的是BSD  license,说明你可以将它用于商业和非商业的用途。

Redis是什么,我为什么要用它?

Redis 是最流行的开源,NoSQL,基于内存的数据存储,而且非常????的是:它的数据存储支持多个数据结构,eg:strings,hashes,sets,lists 等等,Redis内部也提供了对 复制分发 和 事务 的支持,同时在数据持久化方面也做的非常好。

如果你的应用程序需要读取大量的数据,并且你的机器有很多的空闲内存,在这样的场景下如果你有提升性能的需求,采用 Redis 是一个非常好的选择,将Redis应用到你的程序中操作步骤也是非常简单的,接下来我们会一起讨论下如何去安装,配置和使用。

安装Redis

本篇讨论下如何在 Windows 平台上安装 Redis,安装包可以到 GitHub:https://github.com/MSOpenTech/redis/releases  去下载,在安装的过程中,记得勾选一下 add Redis to the PATH environmental variable,将 Redis的路径添加到环境变量中,等到安装程序执行完毕之后,可以通过 Run -> service.msc 到 windows 的服务面板去看下 redis service 是否已经安装成功。

使用 Redis Client Sdk

现在 redis 已经成功安装到你的系统中了,接下来你需要一个 client sdk  去连接 redis server 来读取数据,在下面的例子中,我会使用开源的 ServiceStack 这个sdk,接下来在 Visual Studio 中创建一个 Console 应用程序,然后通过 NuGet packkage manager 来安装 ServiceStack.Redis

假定现在 ServiceStack.Redis 已经通过 NuGet 成功安装,下面的两个方法展示了连接 Redis server 来发送和读取数据。

private static bool Save(string host, string key, string value){bool isSuccess = false;using (RedisClient redisClient = new RedisClient(host)){if (redisClient.Get<string>(key) == null){isSuccess = redisClient.Set(key, value);}}return isSuccess;}private static string Get(string host, string key){using (RedisClient redisClient = new RedisClient(host)){return redisClient.Get<string>(key);}}

注意 RedisClient 的 Set 和 Get 方法是如何从 Redis 中发送和读取数据的,我准备留给你一件事情,你可以试着修改一下这两个方法让其支持泛型,这样的话你的两个方法就可以支持任何类型了,对吧。

接下来看一下如何在 Main 方法中调用,代码如下:

static void Main(string[] args){string host = "localhost";string key = "IDG";// Store data in the cachebool success = Save(host, key, "Hello World!");// Retrieve data from the cache using the keyConsole.WriteLine("Data retrieved from Redis Cache: " + Get(host,key));Console.Read();}   

正如我之前所说,Redis的功能特别多,在后续的文章中,我会和大家一起讨论Redis的高级特性,比如说:持久化,发布订阅,失败转移 等等,你也可以利用 RDB (单个压缩文件) 或者 AOF 的方式去持久化数据,那我应该选择哪一种持久化呢?你可以在 高性能,持久化,磁盘IO 这些方面综合权衡一下。

如果想了解 Redis 的更多知识,可以参考官方文档:https://redis.io/documentation

对了,如果你想用一个可视化界面去管理 Redis 数据,可以试一下这款工具: Redis Admin UI tool, 下载地址:https://github.com/ServiceStackV3/mythz_blog/blob/master/pages/381.md

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/306643.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git push被拒绝_规范git项目提交并自动生成项目commit log

commit message 是开发的日常操作, 好的 log 不仅有助于他人 review, 还可以有效的输出 CHANGELOG, 对项目的管理实际至关重要, 但是在平时工作时&#xff0c;只依赖大致的开发规范和自觉&#xff0c;很难形成一种普遍约束。而通过本文&#xff0c;对项目进行一些基础配置&…

算法设计与分析——递归与分治策略——全排列

算法设计与分析——递归与分治策略——全排列 全排列问题的解决是通过分治与递归思想来解决的 首先判断是否递归到了最后一位&#xff0c;如果递归到了最后一位&#xff0c;则输出他当前的全排列序列。 如果没有到达最后一位&#xff0c;则循环的交换该第K个元素与其后面的所有…

asp.net core 集成 prometheus

asp.net core 集成 prometheusIntroPrometheus 是一个开源的现代化&#xff0c;云原生的系统监控框架&#xff0c;并且可以轻松的集成 PushGateway, AlertManager等组件来丰富它的功能。对于 k8s 下部署的系统来说使用 Prometheus 来做系统监控会是一个比较不错的选择&#xff…

vba 不等于_EXCEL中VBA基础语句(1)

萌二笔记分类目录及书单一、If-Then语句 说明&#xff1a;条件判断&#xff0c;如果......那么......例1&#xff1a;A2单元格的成绩大于等于60&#xff0c;则弹出对话框提示“及格”。Sub 判断成绩()If Range("A2") > 60 Then MsgBox "及格"End Sub操作…

PHP大势已去,PHP宝藏可为我所用

编者注&#xff1a; PHP有着庞大的生态系统&#xff0c;还是可以为我dotnet所用&#xff1a;介绍一个基于 .NET 的船的新 PHP SDK Runtime: PeachPie。PHP 8 昨天发布了&#xff0c;今天不写代码&#xff0c;聊聊我对 PHP 的看法。昨天在今日头条发了一条微头条&#xff0c;引…

leetcode——242. 有效的字母异位词

问题描述&#xff1a; 给定两个字符串 s 和 t &#xff0c;编写一个函数来判断 t 是否是 s 的字母异位词。 示例 1: 输入: s “anagram”, t “nagaram” 输出: true 示例 2: 输入: s “rat”, t “car” 输出: false 说明: 你可以假设字符串只包含小写字母。 进阶: 如…

python常用函数和操作_python一条语句分析几个常用函数和概念 -

前言 过年也没完全闲着&#xff0c;每天用一点点时间学点东西&#xff0c;本文为大家介绍几个python操作的细节&#xff0c;包含all、any、for in等操作&#xff0c;以及介绍我解决问题的思路。 一、开篇 先从我看到的一个简单的语句开始。 刚看到这个语句的时候我整个人完全懵…

.NET5发布了,腾讯招聘点名要求精通MySQL,而不是SQLServer!

.NET5正式发布&#xff0c;社区一片欢腾&#xff0c;.NET相关技术栈也会迎来大变革&#xff0c;而大厂的招聘要求可谓是技术风向标&#xff01;紧盯腾讯网易顺丰等大厂的招聘&#xff0c;会发现都在明确要求。MySQL&#xff0c;而不是SQL Server了。究其根本&#xff0c;还是跨…

leetcode——344. 反转字符串

leetcode——344. 反转字符串 问题概述&#xff1a; 编写一个函数&#xff0c;其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间&#xff0c;你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假…

python面向对象编程思想书籍_Python的面向对象编程思想

什么是Python的多态&#xff1f;多态的好处就是&#xff0c;当我们需要传入Dog、Cat、Tortoise……时&#xff0c;我们只需要接收Animal类型就可以了&#xff0c;因为Dog、Cat、Tortoise……都是Animal类型&#xff0c;然后&#xff0c;按照Animal类型进行操作即可。由于Animal…

C# WPF:把文件给我拖进来!!!

❝首发公众号&#xff1a;Dotnet9作者&#xff1a;沙漠之尽头的狼日期&#xff1a;202-11-27一、本文开始之前上传文件时&#xff0c;一般是提供一个上传按钮&#xff0c;点击上传&#xff0c;弹出文件&#xff08;或者目录选择对话框&#xff09;&#xff0c;选择文件&#xf…

c++——reverse()函数的使用

c——reverse()函数的使用 使用方式&#xff1a; reverse(vec.begin(),vec.end()); queue和stack容器不支持遍历操作&#xff0c;没有迭代器&#xff0c;所以不能使用算法里的反转函数&#xff0c;其类也没有提供反转的成员函数 因为set和map是关联式容器&#xff0c;在插入元…

python3的float数精度_python浮点数精度问题

python浮点数的计算&#xff0c;结果并不像我们想象的那样&#xff0c;比如&#xff1a;>>> 0.250.25-0.40.09999999999999998>>> 0.60.3-0.260.6399999999999999在计算机上面运算的结果是我们实际期望的结果并不一致&#xff0c;导致这样的根本原因就是&…

.NET应用程序安全操作概述

介绍此页面旨在为开发人员提供.NET安全提示。.NET Framework.NET Framework是Microsoft用于企业开发的主要平台。它是ASP.NET&#xff0c;Windows桌面应用程序&#xff0c;Windows Communication Foundation服务&#xff0c;SharePoint&#xff0c;Visual Studio Tools for Off…

leetcode——面试题 17.10. 主要元素

问题描述&#xff1a; 数组中占比超过一半的元素称之为主要元素。给定一个整数数组&#xff0c;找到它的主要元素。若没有&#xff0c;返回-1。 示例 1&#xff1a; 输入&#xff1a;[1,2,5,9,5,9,5,5,5] 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;[3,2] 输出…

github设置中文_【Github】100+ Chinese Word Vectors 上百种预训练中文词向量

(给机器学习算法与Python学习加星标&#xff0c;提升AI技能) 该项目提供了不同表征(密集和稀疏)上下文特征(单词&#xff0c;ngram&#xff0c;字符等)和语料库训练的中文单词向量。开发者可以轻松获得具有不同属性的预先训练的向量&#xff0c;并将它们用于下游任务。此外&…

服务器重新部署踩坑记

服务器重新部署踩坑记Intro之前的服务器是 Ubuntu 18.04 &#xff0c;上周周末想升级一下服务器系统&#xff0c;从 18.04 升级到 20.04&#xff0c;结果升级升挂了... 后来 SSH 始终连不上&#xff0c;索性删除重新部署了一个&#xff0c;新部署了一个 Centos 8 的系统&#x…

c++——优先队列(priority_queue)

优先队列详解/C 优先队列 1.概念:什么是优先队列呢?在优先队列中&#xff0c;元素被赋予优先级&#xff0c;当访问元素时&#xff0c;具有最高级优先级的元素先被访问 .即优先队列具有最高级先出的行为特征。它可以说是队列和排序的完美结合体&#xff0c;不仅可以存储数据&am…

一个div 上下两行_Django 实战 | 搭一个 GitHub 用户展示网站 02

一、创建公共 HTML 模板在 templates 文件里面新建一个 base.html&#xff0c;再到Bootstrap4中文文档找到 最基本的模板&#xff0c;拷贝代码到 base.html&#xff0c;在 home.html 中引入 base.html&#xff1a;{% extends base.html %}{% block content %}<h1>Hello W…

C#如何回到主线程,如何在委托指定线程执行

在多线程情况下&#xff0c;有时候我们需要在主线程里面执行一些逻辑&#xff0c;比如修改UI控件SynchronizationContex可以帮助我们在指定的线程执行SynchronizationContext.Current 为获取当前线程的同步上下文&#xff0c;拿到线程的上下文之后可以通过调用Send&#xff08;…