RedisWrapper.coffee 885 B

12345678910111213141516171819202122232425262728
  1. Settings = require 'settings-sharelatex'
  2. redis = require 'redis-sharelatex'
  3. ioredis = require 'ioredis'
  4. logger = require 'logger-sharelatex'
  5. # A per-feature interface to Redis,
  6. # looks up the feature in `settings.redis`
  7. # and returns an appropriate client.
  8. # Necessary because we don't want to migrate web over
  9. # to redis-cluster all at once.
  10. # TODO: consider merging into `redis-sharelatex`
  11. module.exports = Redis =
  12. # feature = 'websessions' | 'ratelimiter' | ...
  13. client: (feature) ->
  14. redisFeatureSettings = Settings.redis[feature] or Settings.redis.web
  15. if redisFeatureSettings?.cluster?
  16. logger.log {feature}, "creating redis-cluster client"
  17. rclient = new ioredis.Cluster(redisFeatureSettings.cluster)
  18. rclient.__is_redis_cluster = true
  19. else
  20. logger.log {feature}, "creating redis client"
  21. rclient = redis.createClient(redisFeatureSettings)
  22. return rclient