【workbunny】高速共享缓存

0.5.6 版本
2024-09-27 版本更新时间
272 安装
27 star

Build Status Latest Stable Version PHP Version Require License

webman-shared-cache

计划

0.5 版本已发布

  1. 增加Hash key ttl的支持
  2. 增加Hask key Recycle的支持
  3. 完善测试用例
  4. 适配workerman 5.0

实践分享

https://www.workerman.net/a/1589

最新文档

https://github.com/workbunny/webman-shared-cache/blob/main/README.md

常见问题

1. 它与 Redis/Memcache 的区别

  • shared-cache是基于APCu的本地缓存,它的底层是带有锁的MMAP共享内存;
  • Redis和Memcache本质上是“分布式”缓存系统/K-V数据库,存在网络IO;
  • shared-cache没有持久化,同时也无法实现“分布式”,仅可用于本地的多进程环境(进程需要有亲缘关系);
  • shared-cache是μs级别的缓存,redis是ms级别的缓存;
  • 网络IO存在内核态和用户态的多次拷贝,存在较大的延迟,共享内存不存在这样的问题;

2. 它的使用场景

  • 可以用作一些服务器的本地缓存,如页面缓存、L2-cache;
  • 可以跨进程做一些计算工作,也可以跨进程通讯;
  • 用在一些延迟敏感的服务下,如游戏服务器;
  • 简单的限流插件;

3. 与redis简单的比较

  • 运行/tests/simple-benchmark.php
    • redis使用host.docker.internal
    • 在循环中增加不同的间隔,模拟真实使用场景
    • 结果如下:
      1^ "count: 100000"
      2^ "interval: 0 μs"
      ^ "redis: 73.606367111206"
      ^ "cache: 0.081215143203735"
      ^ "-----------------------------------"
      1^ "count: 100000"
      2^ "interval: 1 μs"
      ^ "redis: 78.833391904831"
      ^ "cache: 6.4423549175262"
      ^ "-----------------------------------"
      1^ "count: 100000"
      2^ "interval: 10 μs"
      ^ "redis: 79.543494939804"
      ^ "cache: 7.2690420150757"
      ^ "-----------------------------------"
      1^ "count: 100000"
      2^ "interval: 100 μs"
      ^ "redis: 88.58958697319"
      ^ "cache: 17.31387090683"
      ^ "-----------------------------------"
      1^ "count: 100000"
      2^ "interval: 1000 μs"
      ^ "redis: 183.2620780468"
      ^ "cache: 112.18278503418"
      ^ "-----------------------------------"

简介

  • 基于APCu拓展的轻量级高速缓存,读写微秒级;
  • 支持具备亲缘关系的多进程内存共享;
  • 支持具备亲缘关系的多进程限流;

安装

  1. 自行安装APCu拓展
    # 1. pecl安装
    pecl instanll apcu
    # 2. docker中请使用安装器安装
    curl -sSL https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions -o - | sh -s apcu
  2. 安装composer包
    composer require workbunny/webman-shared-cache
  3. 使用命令进行php.ini的配置(非webman环境)
    • 非webman环境
      • 进入 /config/plugin/workbunny/webman-shared-cache 目录
      • 运行
        # 帮助信息
        sh ./shared-cache-enable.sh --help
        # or
        bash ./shared-cache-enable.sh --help
    • webman环境
      • 运行
        # 帮助信息
        ./webman workbunny:shared-cache-enable --help
        # or
        php webman workbunny:shared-cache-enable --help
赞助商