Senparc.Weixin缓存列队原理
- 微信的AccessToken等数据都使用各类Container进行管理;
- 每个Container都有一个强制约束的ContainerBag,本地缓存信息;
- ContainerBag中的属性被修改时,会将需要对当前对象操作的过程放入消息列队(SenparcMessageQueue);
- 每个消息列队中的对象都带有一个委托类型属性,其动作通常是通过缓存策略(实现自IContainerCacheStragegy,可以是本地缓存或分布式缓存)更新缓存;
- 一个独立的线程会对消息列队进行读取,依次执行列队成员的委托,直到完成当前所有列队的缓存更新操作;
- 上一个步骤重复进行,每次执行完默认等待2秒。此方案可以有效避免同一个ContainerBag对象属性被连续更新的情况下,每次都和缓存服务通讯而产生消耗。
测试结果:
缓存测试运行中……