pstaender/silverstripe-redis-cache

为SilverStripe启用Redis缓存

安装次数: 62,942

依赖关系: 0

建议者: 1

安全: 0

星标: 11

关注者: 4

分支: 5

开放问题: 0

类型:silverstripe-vendormodule

v0.0.3 2023-05-09 15:01 UTC

This package is auto-updated.

Last update: 2024-09-15 09:33:42 UTC


README

启用SilverStripe使用redis缓存。

status

要求

  • SilverStripe v4 / v5
  • Redis
  • 在PHP 7.3+上测试

预安装

确保您的环境中已安装redis,并在php.ini文件中进行配置,以确保PHP知道如何访问Redis。

要安装Redis,只需使用操作系统名称和版本、PHP版本以及您正在工作的服务器及其版本(例如Apache或NGINX)进行快速Google搜索,就应该会找到一系列安装说明,例如这个安装说明示例。

将以下内容添加到您的php.ini或conf.d/{your-custom-php-config-file}.ini中,以便PHP知道如何与Redis通信以存储会话数据:注意:缺少此步骤将在与AWS等提供商一起工作时导致登录问题,其中您的网站在多个pod上运行,但需要会话在这些pod之间统一。

session.save_handler  = redis
session.save_path     = {your_redis_url}

安装和使用

使用composer将此模块拉入您的项目

  $ composer require pstaender/silverstripe-redis-cache

要启用SilverStripe项目中的Redis缓存,请将以下yaml配置之一添加到您的项目中的/app/_config/,无论是它们自己的yaml文件,还是在现有文件(例如mysite.yml)中。

注意: REDIS_URL必须是指定的redis实例的URL,例如tcp://127.0.0.1:6379

在您的项目中使用

---
Name: silverstripe-redis-cache
After:
  - '#corecache'
  - '#assetscache'
Only:
  envvarset: REDIS_URL
---
SilverStripe\Core\Injector\Injector:
  RedisClient:
    class: Predis\Client
    constructor:
      0: '`REDIS_URL`'
  RedisCacheFactory:
    class: Zeitpulse\RedisCacheFactory
    constructor:
      client: '%$RedisClient'
  SilverStripe\Core\Cache\CacheFactory: '%$RedisCacheFactory'

  # vendor/silverstripe/assets/_config/assetscache.yml
  Psr\SimpleCache\CacheInterface.InterventionBackend_Manipulations:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.FileShortcodeProvider:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.ImageShortcodeProvider:
    factory: RedisCacheFactory

  # vendor/silverstripe/assets/_config/assetscache.yml
  Psr\SimpleCache\CacheInterface.Sha1FileHashingService:
    factory: RedisCacheFactory

  # vendor/silverstripe/cms/_config/cache.yml
  Psr\SimpleCache\CacheInterface.CMSMain_SiteTreeHints:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.SiteTree_CreatableChildren:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.SiteTree_PageIcons:
    factory: RedisCacheFactory

  # vendor/silverstripe/cms/_config/permissions.yml +
  # vendor/silverstripe/framework/_config/cache.yml
  Psr\SimpleCache\CacheInterface.InheritedPermissions:
    factory: RedisCacheFactory

  # vendor/silverstripe/framework/_config/cache.yml
  Psr\SimpleCache\CacheInterface.cacheblock:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.VersionProvider_composerlock:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.RateLimiter:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.ThemeResourceLoader:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.DatabaseAdapterRegistry:
    factory: RedisCacheFactory
  Psr\SimpleCache\CacheInterface.EmbedShortcodeProvider:
    factory: RedisCacheFactory

与flysystem资产存储一起使用

---
Name: silverstripes3-flysystem-redis
Only:
  envvarset:
    - REDIS_URL
After:
  - '#silverstripes3-flysystem'
---
SilverStripe\Core\Injector\Injector:
  League\Flysystem\Cached\Storage\Memory.public:
    class: League\Flysystem\Cached\Storage\Predis
  League\Flysystem\Cached\Storage\Adapter.public:
    class: League\Flysystem\Cached\Storage\Predis
  League\Flysystem\Cached\Storage\Adapter.protected:
    class: League\Flysystem\Cached\Storage\Predis

许可证

MIT