Yac 2.1 升级说明
2018-04-08 00:00
671 查看
Yac (Yet Another cache)也是之前我在微博的时候开发的一个为PHP使用的,Lock-free, Shared Memory, User Data Cache,用来替代当时微博在PHP机器上装的本地Memcache和APC,因为当时的需求特点,最初做了完全无锁的设计,但是这样有一个隐患就是用户有可能获得“错误”的数据,虽然之前的测试概率非常非常低。 关于Yac的设计,可以参考我7年前写的Yac (Yet Another Cache) - 无锁共享内存Cache。
作为我的Ya全家桶的重要一员, 在我优化完一轮Yaf, Yar, Yaconf以后,Yac当然也不能少了。
2.1.0主要做了如下的优化:
- 使用cas原子操作,保护对key的读写,在Yac中,为了避免冲突,key中包含了很多信息,包括最重要的对内容的crc校验,这次升级采用了cas原子操作, 在保证lock-free, 和性能的前提下,只对key的读写做了保护,从而可以大幅降低冲突的概率,继而大幅降低获取到错误数据的可能。
- 使用SSE4.2的内建crc32指令,取代原来的crc32,这样Yac中大量调用的crc32来验证数据正确性的性能有非常明显的性能提升。 (不得不说,SSE真香 🙂
- 一些内存优化,降低内存占用
经过这次全新的升级,Yac的稳定性会得到很大的提升,可以用来在PHP中做一些跨PHP进程的内容交换和Cache。
Yac 2.1 已经发布: Yac At PECL
使用文档以及使用中有任何问题,来Github: Yac At Github
enjoy!
Related Posts
相关文章推荐
- OpenJWeb基于Spring Security框架升级改造说明
- 轻量级数据持久层 Seaking.PL 2.1 使用说明 (一)
- EFW框架源代码版本升级记录说明
- DS9208升级说明 V3
- defy(Moto 525)的升级,从Android 2.1到Android2.2
- Oracle RAC ASM 实例 从10.2.0.1 升级到 10.2.0.4 说明
- LX3 日本版本 转成 英文界面 并从2.1固件升级到2.2过程
- System.Data.Silverlight V2.1版本升级说明
- resin2.1.x 配置说明
- Struct2.1.*升级到2.5.13文档
- [更新设计]跨平台物联网通讯框架ServerSuperIO 2.0 ,功能、BUG、细节说明,以及升级思考过程!
- Struts从2.1升级到2.3版本过程
- Elastic-Job 1.1.0升级说明
- Android中数据库升级onUpgrade方法说明
- android开发之自动化编译ota升级包脚本说明
- rpmbuild 升级包的使用说明
- AEAI HR_v1.5.2升级说明,开源人力资源管理系统
- AndroidStudio低版本(1.5)升级到高版本(2.1)之后你可能会遇到的其中一个项目构建问题
- RFS的web自动化验收测试——RIDE升级说明(顺便解决0.47及之后版本执行显示中文乱码)
- etcd 2.1发布,可不宕机滚动升级