🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,优快云博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年优快云博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
Redis是一个高性能的开源键值对存储系统,可以用作数据库、缓存、消息中间件等多种用途。Redis支持多种数据结构,包括字符串、哈希表、列表、集合和有序集合,可以对这些数据结构进行快速的读写操作。Redis还提供了一些高级特性,如事务、发布/订阅、Lua脚本等。
Redis的作用和应用场景包括:
-
缓存:Redis可以作为缓存来加速读取频繁的数据,在访问数据库之前将数据存储在Redis中,从而加快数据的响应速度。
-
计数器:Redis提供原子操作,可以用来实现计数器的功能,例如网站的PV/UV统计、抽奖活动的抽奖次数等。
-
排行榜:Redis提供了有序集合,可以存储一些带权值的元素,可以用来实现排行榜。
-
队列:Redis提供了列表的操作,可以进行队列的操作,例如任务队列、消息队列等。
-
分布式锁:Redis可以作为分布式锁来保证同步性,避免出现多个客户端同时修改某个数据的情况。
Redis作为一个高性能的存储系统,可以被广泛应用于各种场景,它具备快速、高效、可靠、可扩展等优点。
本文主要介绍DeveloperSharp的使用,DeveloperSharp是一个研发中大型项目必备的系统平台,也是一个低代码平台。
它主要包括了如下一些功能:
- 基于Sql语句、存储过程、事务、分页的数据库操作。并几乎支持市面上所有种类的数据库。
- 图片操作。裁剪、缩放、加水印。
- http请求调用(Post与Get)
- 高效分页
- Web服务/WebApi的负载均衡
- 数据库的负载均衡,以及读写分离
- CORS跨域访问
- UUID全球通用唯一识别码
- MQ消息队列(请另行使用DeveloperSharp.RabbitMQ包)
- Redis缓存(请另行使用DeveloperSharp.Redis包)
- “异种数据库”的负载均衡
- 其他相关功能
🚀一、Redis缓存
🔎1.安装包
DeveloperSharp
🔎2.添加配置文件
在.Net Core环境下,要在appsettings.json文件中添加“DeveloperSharp.Redis”节点(如下配置示例),并把appsettings.json文件放到程序执行目录中(即bin目录下与dll、exe等文件的同一目录中)(放错了位置会报错)
{
"DeveloperSharp.Redis":[{
"HostName":"132.294.52.135",
"Database":10,
"Password":"Admin123",
"Port":6379
}]
}
🔎3.使用
using DeveloperSharp.Redis;
------------------------------
//1.存取“字符串”示例
//首先,向Redis缓存中存入字符串"世界,你好"
RedisHelper.SetStringKey("MyText", "世界,你好");
//然后,从Redis缓存中取出字符串"世界,你好"
string aa = RedisHelper.GetStringKey("MyText");
//2.存取“对象”示例
//首先,向Redis缓存中存入对象teacher
teacher obj = new teacher { name = "王老师", age = 42 };
RedisHelper.SetStringKey("MyTeacher", obj);
//然后,从Redis缓存中取出对象teacher
teacher t = RedisHelper.GetStringKey<teacher>("MyTeacher");
string Name = t.name;
int Age = t.age;
🔎4.自定义redis
实现手写Redis连接库是一个复杂的过程,需要了解Redis协议以及如何通过套接字与Redis服务器通信。以下是基本的步骤:
- 创建连接对象
首先,你需要使用System.Net.Sockets.Socket类创建一个TCP套接字,并连接到Redis服务器。这个过程需要指定Redis服务器的地址和端口号。
using System.Net.Sockets;
var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("localhost", 6379);
- 执行操作
一旦你连接到Redis服务器,就可以通过套接字发送各种Redis命令。这些命令需要遵循Redis协议,具体可以参考Redis官方文档中的协议描述。
例如,下面的代码实现了SET和GET命令:
var setCommand = Encoding.UTF8.GetBytes("*3\r\n$3\r\nSET\r\n$3\r\nkey\r\n$5\r\nvalue\r\n");
socket.Send(setCommand);
var getCommand = Encoding.UTF8.GetBytes("*2\r\n$3\r\nGET\r\n$3\r\nkey\r\n");
socket.Send(getCommand);
var buffer = new byte[1024];
var length = socket.Receive(buffer);
var response = Encoding.UTF8.GetString(buffer, 0, length);
Console.WriteLine(response);
在这个例子中,我们手动编码了Redis命令并通过套接字发送给服务器。然后,我们通过套接字接收服务器的响应,并将其解码为字符串。
- 关闭连接
在你的程序结束时,你需要关闭套接字,以确保资源得到释放。
socket.Close();
由于Redis协议比较复杂,实现一个完整的Redis连接库是一项非常耗时和复杂的工作。如果你想在C#中使用Redis,我建议使用第三方现有的客户端库,它们已经实现了完整的Redis协议和其他功能。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”