13

Yac 2.1 升级说明

 4 years ago
source link: https://www.laruence.com/2020/03/25/5657.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Yac (Yet Another cache)也是之前在微博的时候开发的一个PHP的本机缓存,用来替代当时微博在PHP机器上装的本地Memcache, 因为当时的需求特点,最初做了完全无锁的设计,但是这样有一个隐患就是用户有可能获得“错误”的数据,虽然之前的测试概率非常非常低。 关于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来验证数据正确性的性能有非常明显的性能提升。
  • 一些内存优化,降低内存占用

经过这次全新的升级,Yac的稳定性会得到很大的提升,可以用来在PHP中做一些跨PHP进程的内容交换和Cache。

Yac 2.1 已经发布: Yac At PECL

使用文档以及使用中有任何问题,来Github: Yac At Github

enjoy!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK