Michael,
Canvas has two uses for Redis - as a normal in-memory cache that can
lose data with the only consequence being the app slowing down while
the cache refills. This one is configured in cache_store.yml. The
other use is as a high-performance semi-volatile data store for
certain features (search the code for Canvas.redis to see where it is
used), configured in redis.yml. It's perfectly fine for the caching
redis instance to be set to allkeys-lru (especially since Canvas
doesn't set an expiration policy for every cache key it uses), but if
you set that for the data redis instance (or if you use the same
instance for both), it's possible that some features won't work
correctly sometimes when the cache is full. The optimal configuration
(and how Instructure has it configured) is to have a separate redis
instance for caching and data, with the eviction policy set to
allkeys-lru on the caching instance, and volatile-lru on the data
instance. Note that you can run both instances on the same server, and
you can also set the maxmemory lower for the data instance (especially
if you have PageViews disabled, or configured to not go to redis
first).
Hope you understood that,
Cody Cutrer
Software Engineer
Instructure
> --
>
>
>