免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4850 | 回复: 1
打印 上一主题 下一主题

[C] 本地缓存库libshmcache中文介绍 [复制链接]

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2017-01-11 14:32 |只看该作者 |倒序浏览
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 size)。释放value buffer后,若striping已使用空间变为0,回收整个striping;
  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

    欢迎大家下载试用,有问题请随时交流。

论坛徽章:
9
程序设计版块每日发帖之星
日期:2015-10-18 06:20:00程序设计版块每日发帖之星
日期:2015-11-01 06:20:00程序设计版块每日发帖之星
日期:2015-11-02 06:20:00每日论坛发贴之星
日期:2015-11-02 06:20:00程序设计版块每日发帖之星
日期:2015-11-03 06:20:00程序设计版块每日发帖之星
日期:2015-11-04 06:20:00程序设计版块每日发帖之星
日期:2015-11-06 06:20:00数据库技术版块每周发帖之星
日期:2015-12-02 15:02:47数据库技术版块每日发帖之星
日期:2015-12-08 06:20:00
2 [报告]
发表于 2017-01-12 21:18 |只看该作者
本帖最后由 wlmqgzm 于 2017-01-12 21:53 编辑

没有看代码, 只是讨论一下思路:

1)测试过一般一个查询get或者更新set的效率吗, 大约需要多少微秒, 主要是hash和管理的效率,
只是减少了网络层的开销,如果是127.0.0.1本地地址,这个延时和开销应该是很小的,大约5微秒可以完成一个收包一个发包,

2)shm内存预分配,是会浪费一些内存, 即使这部分内存从来没有被使用过, 比常规内存多分配一点不浪费相比,内存效率不够高。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP