Skip to main content

Redis best practices (Windows)

Informer uses Redis as a temporary memory exchange for importing and exporting content and a few internal functions:

  • Importing files (CSV, JSON packages, or Bundles)
  • Exporting files
  • Running sample queries
  • Flow steps (Percent of Total, Flush)
  • UI logs
  • Progress monitors
  • OAuth

These processes load data into Redis (its memory assets are called keys) and remove it when finished. Redis on Windows is currently limited to version 3.2 due to limited Windows support. Informer does not use all of Redis's features, so a few configuration changes help get the most from it.

Redis tuning

Redis on Windows runs as a service using redis.windows-service.conf (by default in C:\Program Files\Redis). If you do not know the location, it is listed on the Redis Windows service properties dialog.

Reduce disk I/O by disabling save-to-disk snapshotting. Add a save "" line and comment out the three active save lines:

save ""

#save 900 1
#save 300 10
#save 60 10000

Improve fault tolerance so Redis does not stop accepting work when a background save fails. Since Informer uses Redis only as a temporary exchange, change stop-writes-on-bgsave-error from yes to no:

stop-writes-on-bgsave-error no

After any change, save the file and restart the Redis Windows service. Redis can be recycled while Informer is running.

Vulnerabilities

All known Redis vulnerabilities require remote execution. By default Redis only accepts connections from the local loopback address, so it is not exposed to remote-execution attacks. If your Redis allows remote connections (for example on a dedicated server), contact Support to confirm only the Informer server may reach redis-cli. As a best practice, even on the loopback, consider enabling Redis authentication.

Optional advanced tuning

Most deployments need no advanced tuning. By default, Redis on Windows has no memory limit and may use the Windows page file. On systems with heavy, high-frequency exports, capping memory with an eviction policy can make the system more reliable.

Set a maximum memory in redis.windows-service.conf (uncomment #maxmemory), using mb for megabytes:

maxmemory 2048mb

Then set the eviction policy (change noeviction to volatile-lru):

maxmemory-policy volatile-lru

Save and restart the Redis Windows service.

Maxmemory guidelines

Setting maxmemory too low can evict active keys and cause out-of-memory errors in Informer; too high wastes resources. There is no single right value; it depends on server resources and how Informer uses Redis. Start in the middle of the range for your server memory, then test in 2 GB increments (assuming all components run on the same server):

16 GB server: maxmemory 1024mb - 4096mb
32 GB server: maxmemory 4096mb - 8192mb
64 GB server: maxmemory 8192mb - 24576mb

Testing may take weeks, since most demand comes from Jobs and not every Job runs daily. Use a long enough sample period to capture most unique Jobs.