设为首页 收藏本站
查看: 895|回复: 0

[经验分享] libshmcache:速度比远程接口如redis快100倍以上

[复制链接]

尚未签到

发表于 2018-11-4 10:23:12 | 显示全部楼层 |阅读模式
  libshmcache是基于共享内存的本地缓存库。libshmcache写有锁,读无锁,性能非常高。libshmcache直接访问本地共享内存,速度比远程接口如redis快100倍以上。
  libshmcache包含C库和PHP扩展(支持PHP 5和PHP 7)。在众多开源缓存软件的今天,libshmcache作为后起之秀,凭借诸多特性,有望成为本地缓存开源软件的一颗明星。
  1. 高性能特性
  1)写采用pthread互斥锁,读无锁;
  2)使用hash table进行快速set、get和delete;
  3)使用对象池(FIFO队列)对hash table键值对进行分配;

  4)value buffer分配使用striping(条带化)分配机制,在striping内按顺序分配buffer。当释放value buffer时,只需要减少striping已使用空间(used>  5)淘汰算法使用简单高效的FIFO而不是LRU。
  2. 稳定性特性
  1)死锁检测和自动解锁机制。死锁发生场景:正在修改数据的进程挂掉,会导致死锁;
  2)初始化时检查一些关键字段的一致性,当内存相关的参数发生变化时,系统会自动提示共享内存需要清理和重新初始化(已经提供了清理工具);
  3)当回收了有效的(未过期)键值对时,休眠一定时长以避免其他进程读到脏数据。
  3. 其他特性
  1)除了支持有亲缘关系的进程(如父进程和子进程),还支持无亲缘关系的进程(如PHP FPM进程和PHP CLI进程,多个PHP CLI进程等等);
  2)按需增量分配value buffer,有效减少初始内存大小,避免内存浪费(通过配置参数segment_size来设置);
  3)提供丰富的统计信息:get,set和delete次数统计、内存回收统计、锁使用统计等;
  4)支持原子增加(减少);
  5)PHP扩展支持多种序列化方式:igbinary、msgpack、PHP序列化,以及无需序列化。因为键值对中存储了所用的序列化方式,这几种序列化方式可以并存;
  * 友情提示:key长度不能超过64字节。
  libshmcache使用场景
  如果需要缓存的数据量不是太大,比如不超过100w个key,对缓存读写性能要求又比较高的情况下,可以考虑使用libshmcache。总结为一句话:追求极致性能,以空间换时间。
  libshmcache采用的开源协议为BSD,托管在github,地址:https://github.com/happyfish100/libshmcache


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-630545-1-1.html 上篇帖子: redis入门与web管理界面 下篇帖子: redis 单点部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表