一、简介1.1 哨兵的概述哨兵(Sentinel)是 Redis 分布式系统中用于监控和管理多个 Redis 服务器的组件。它的主要目标是确保 Redis 系统的高可用性,通过实时监测主节点和从节点的状态,及时发现并自动处理故障,保证系统的稳定运行。1.2 为什么需要哨兵?引入Redis哨兵的原因主要与以下几个方面有关:高可用性需求:在生产环境中,确保Red ......
226
0
0
2024-03-09
一、引言1.1 概念介绍Redis管道是一种用于优化多个命令执行的机制,允许客户端将多个命令一次性发送给服务器,然后一次性接收所有命令的返回结果。这种机制可以减少客户端与服务器之间的网络往返次数,从而提高性能。1.2 作用提高性能: 管道的主要作用是提高性能和吞吐量。通过将多个命令打包在一个请求中发送给服务器,可以减少网络延迟和通信开销,从而加速数据传输和处 ......
225
0
0
2024-03-08
一、发布订阅模式概述1.1 什么是发布订阅发布订阅(Publish-Subscribe)是一种消息传递模式,用于在软件系统中实现解耦和灵活的组件通信。在发布订阅模式中,消息的发送者(发布者)并不直接将消息发送给特定的接收者(订阅者),而是将消息发送到一个中心化的调度机制,通常称为消息代理或主题(topic)。订阅者可以通过订阅特定的主题来接收感兴趣的消息,从 ......
273
0
0
2024-03-03
C# 实现时间来到新的一天时触发事独立观察员 2023 年 12 月 19 日看到知乎有人提问《C# 如果要实现一个任务每天 0 点执行,用什么方法等待更高效?》,回想起之前写过的一个方法,现在翻出来大家讨论讨论。新建一个时间事件帮助类(单例),通过定时器,到第二天 0 点后触发 [新的一天] 事件,使用的地方订阅这个事件即可。/// <summary ......
176
0
0
2024-02-29
一、引言事务是数据库管理系统中的一个基本概念,用于管理对数据库的一系列操作,以确保数据的一致性和完整性。在Redis中,事务通过MULTI、EXEC、DISCARD和WATCH等命令实现。事务中的操作要么全部执行,要么全部回滚,保证了原子性。通过WATCH命令,Redis实现了乐观锁,确保在事务执行期间没有其他客户端对监视的键进行修改,以保证事务的隔离性。事 ......
262
0
0
2024-02-24
一、简介C# 中通过 StackExchange.Redis 库可以方便地操作 Redis,实现高性能的数据缓存和存储。StackExchange.Redis 提供了强大的 API,允许开发者轻松连接、读取和写入 Redis 数据。通过使用 ConnectionMultiplexer 类,可以建立与 Redis 服务器的连接,并使用 IDatabase 接口 ......
261
0
0
2024-02-24
1.前言 Ref这个关键字其实就是非托管里面的指针。它可能是一级指针也可能是二级指针。它可以直接通过托管操控内存。本篇来看下。2.概述 一:例子 先上简单例子代码:static string ABC(string str) { return str; } static string DEF(ref string str) { ret ......
179
0
0
2024-02-05
英文:devblogs.microsoft.com 译文:cnblogs.com/xiaoxiaotank/p/13206569.html 译者:xiaoxiaotank前言Task类是在.NET Framework 4引入的,位于System.Threading.Tasks命名空间下,它与派生的泛型类Task<TResult>已然成为.NET编 ......
174
0
0
2024-02-03
本文中将会对就重要的特性进行介绍,并用代码示例展示这些特性。有些特征已经发布!RecordsRecords 是一种全新的简化的 C# class 和 struct 的形式。现在当我们需要声明一个类型用来保存数据,并且支持数据的解构的话,需要像如下一样写出大量的样板代码:class Point : IEquatable<Point> { ......
206
0
0
2024-01-27
何为反射? 首先我们通过两个实例来说明反射的大体概念。 B超:大家体检的时候大概都做过B超,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了。地球内部结构:地球的内部结构大体可以分为三层:地壳 ......
237
0
0
2024-01-27
1.概要什么是不可变类型?在C#中,不可变类型(Immutable Types)是指一旦创建后,其状态或内容不能被修改的数据类型。不可变类型是基于函数式编程的概念,它们通常用于创建不可更改的对象,从而提高代码的可靠性、可维护性和线程安全性。不可变类型有哪些?Tuple元组 (Tuple) 是C#中的一个泛型类型,它允许将多个值打包成一个单一的不可变对象。元组 ......
185
0
0
2024-01-19
1.概要乐观锁(Optimistic Locking)乐观锁的核心思想是假设在大多数情况下,资源不会发生冲突,因此允许多个用户或线程同时读取和修改资源。只有在真正发生冲突的时候才会进行冲突解决。乐观锁的工作原理如下:版本标识或时间戳:在资源中引入一个版本标识(Version)或时间戳(Timestamp)字段,用于记录资源的修改版本或修改时间。读取资源:当一 ......
233
0
0
2024-01-19
前言编程其实就是写代码,而写代码目的就是实现业务,所以,语法和框架也是为了实现业务而存在的。因此,不管多么高大上的目标,实质上都是业务。所以,我认为不要把写代码上升到科学的高度。上升到艺术就可以了,因为艺术本身也没有高度。。。。软件设计存在过度设计,语法和框架的理解,也存在过度理解。比如,反编译下,看看反射是怎么实现的。。。有兴趣是好事,但就算知道了反射的本 ......
172
0
0
2024-01-19
反射和动态编程是C#和其他现代编程语言中重要的高级主题,它们具有以下重要性:灵活性和扩展性:反射允许程序在运行时动态地获取和操作类型信息、成员和对象实例,这使得程序更加灵活和具有扩展性。动态编程则使得程序能够根据运行时的需求生成和执行代码,从而适应不同的场景和数据。插件和扩展:反射和动态编程在创建插件系统和扩展性架构中非常有用。它们允许应用程序在不修改源代码 ......
201
0
0
2024-01-07
C# 字符串排序时指定偏好的排列顺序独立观察员 2023 年 8 月 25 日不知道大家有没有遇到过某些字符串数据在显示到界面上时需要按一定顺序排列的情况,如果内容是数值或字母自然好办,默认的排序功能就搞定了。那么如果是中文字符串呢?本文将会提供一个能在调用 OrderBy 方法时传入的字符串比较器,能够在一定程度上指定你偏爱的排列顺序,下面就一起来看看吧。 ......
211
0
0
2024-01-06