pstaender / silverstripe-redis-cache
为SilverStripe启用Redis缓存
v0.0.3
2023-05-09 15:01 UTC
Requires
- predis/predis: ^2.1.2
- silverstripe/framework: ~4 || ^5
Requires (Dev)
- phpunit/phpunit: ~9.5
This package is auto-updated.
Last update: 2024-09-15 09:33:42 UTC
README
启用SilverStripe使用redis缓存。
要求
- 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