Skip to content

Winter Memdb: Embedded In-Memory Database Module

Winter Memdb runs embedded in-memory database engines (Redis, Apache Ignite, Memcached, and Hazelcast) as part of the application lifecycle, auto-starting on boot and stopping on shutdown.

Enable the module in application.yml:

modules:
- module: dev\winterframework\memdb\MemdbModule
enabled: true
configFile: memdb-config.yml

configFile is a file path (relative to the config directory or an absolute path).

The configuration file can define any number of engines, each with its own top-level key:

redis: # see "Redis" below
ignite: # see "Apache Ignite" below
memcached: # see "Memcached" below
hazelcast: # see "Hazelcast" below
redis:
- name: redisServerBean01
serverBinary: /usr/local/bin/redis-server
confFile: redis_1.conf # relative or absolute path
args: ""

You can define several servers. A client bean is created for each one, named after its name (here redisServerBean01).

#[Autowired('redisServerBean01')]
private PhpRedisTemplate $redis;
ignite:
- name: igniteServerBean01
serverBinary: /etc/apache-ignite-2.10.0/bin/ignite.sh
# Optional config
confFile: ignite-config.xml # relative or absolute path
args: ""

You can define several servers. A client bean is created for each one, named after its name (here igniteServerBean01).

#[Autowired('igniteServerBean01')]
private IgniteCacheTemplate $ignite;

This requires the memcached or memcache PHP extension.

memcached:
- name: memcachedServerBean01
serverBinary: /usr/bin/memcached
host: 127.0.0.1
port: 11211
udpPort: 0
unixSocket:
pidfile: "/var/run/memcached_1.pid"
args: "-u memcached "

You can define several servers. A client bean is created for each one, named after its name (here memcachedServerBean01).

// `memcached` php extension installed
#[Autowired('memcachedServerBean01')]
private MemcachedTemplate $memcached;
// OR, if the `memcache` PHP extension is installed instead
#[Autowired('memcachedServerBean01')]
private MemcacheTemplate $memcache;

Hazelcast needs the memcached PHP extension as a client (see the Installation guide).

Hazelcast configuration:

hazelcast:
- name: hazelcastBean01
serverBinary: /etc/hazelcast-4.2.1/bin/start.sh
confFile: /etc/hazelcast/config/hazelcast.xml
bootUpTimeMs: 300
args: ""

You can define several servers. A client bean is created for each one, named after its name (here hazelcastBean01).

#[Autowired('hazelcastBean01')]
private MemcachedTemplate $hazelcast;
<hazelcast>
...
<network>
<memcache-protocol enabled="true"/>
</network>
...
</hazelcast>