Predis integration into Nette/DI
composer require contributte/redis
extensions:
redis: Contributte\Redis\DI\RedisExtension # For Nette 3+
redis: Contributte\Redis\DI\RedisExtension24 # For Nette 2.4
redis:
# Setup Tracy panel
debug: %debugMode%
# Default client factory
clientFactory: Predis\Client
connection:
default:
uri: tcp://127.0.0.1:6379
# Options passed directly to Predis\Client
# https://github.com/nrk/predis#client-configuration
options: []
Setup Nette\Http\Session to store session with Redis
redis:
connection:
default:
sessions: true
## you can also configure session
sessions:
ttl: 3600 # time in seconds after which is session invalidated
Replaces Nette\Caching\IStorage in DIC with RedisStorage
redis:
connection:
default:
storage: true
To use custom serializer for storage you need to implement Contributte/Redis/Serializer/Serializer
interface.
After that, register serializer as a service and place it under redis.serializer
key.
redis:
serializer: @customSerializer
connection:
default:
storage: true
services:
customSerializer: App\Serializers\YourSerializer
This package provides several serializers:
- DefaultSerializer
- IgbinarySerializer
- SnappySerializer
In the need of passing down ENV variables to the configuration you can use nette/configurator
and dynamic parameters.
$configurator->addDynamicParameters([
'env' => getenv(),
]);
redis:
connection:
default:
uri: %env.REDIS_HOST%
When using sessions and cache make sure you use 2 different databases. One for cache and one for sessions. In case you will use only 1 database for both you will loose sessions when clearing cache. This would be preferred config:
connection:
default:
uri: tcp://127.0.0.1:6379
sessions: false
storage: true
options: ['parameters': ['database': 0]]
session:
uri: tcp://127.0.0.1:6379
sessions: true
storage: false
options: ['parameters': ['database': 1]]