C# Redis缓存架构设计二

2018-11-16  本文已影响0人  城市里永远的学习者

一、概述

由于架构设计一里面如果多平台公用相同Key的缓存更改配置后需要多平台上传最新的缓存配置文件来更新,比较麻烦,更新了架构设计二实现了缓存配置的集中管理,不过这样有有了过于中心化的问题,后续在看看如何修改

总体设计思路如下:

image

项目结构如下:

image

二、服务端(提供Key配置文件管理及将Key配置存到缓存中)

KeyConfigList.xml缓存Key配置文件【与前一版一致】

image

KeyConfigList.xml

KeyEntity.cs是对应xml文件的数据实体类(与客户端通用)

image

KeyEntity.cs

RedisManager.cs是Redis的管理类使用的StackExchange.Redis.dll(与客户端通用)

image

RedisManager.cs

KeyServer.cs是提供缓存配置文件管理、监听、存储等功能的核心类

image

KeyServer.cs

服务端会读取消息来监控缓存是否含有配置信息所以服务端需要挂在成一个WindowsService服务

image

测试调用代码

三、客户端(根据KeyNames获取缓存中的配置,然后根据配置读取缓存数据或创建缓存数据,如果没有配置则会返回NULL并发送消息申请创建缓存配置,主业务不会中断会直接穿透到数据库取值)

**KeyEntity.cs **和 RedisManager.cs的代码和服务端的一致,有需要拷贝即可!

CacheProvider.cs是对外提供缓存功能的类【与前一版一致】

image

CacheProvider.cs

MQProvider.cs是对外提供队列功能的类【与前一版一致】

image

MQProvider.cs

KeyNames.cs配置缓存Key的名称,用于寻找Key配置【与前一版一致】

image

KeyNames.cs

KeyClient.cs是对于使用缓存时寻找Key对应配置信息的核心类

image

KeyClient.cs

客户端使用只会接触到CacheProvider.cs和MQProvider.cs两个对外开放的操作类

使用步骤:

1、向KeyNames.cs中添加一个唯一的KeyName用于找到指定的Key配置;

2、向服务端的KeyConfigList.xml中添加此KeyName的缓存配置(此功能的提供方式可以自己定义,如直接修改文件或提供管理程序等);

3、使用Cache或者MQ的操作类传递KeyNames的枚举值,再传递缓存值即可;

image

测试调用代码

如有什么可以改进的地方还请不吝指点,谢谢

上一篇 下一篇

猜你喜欢

热点阅读