redis.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. const promisify = require('util').promisify;
  2. module.exports = function(config) {
  3. const redis_lib =
  4. config.env === 'development' && config.redis_host === 'localhost'
  5. ? 'redis-mock'
  6. : 'redis';
  7. //eslint-disable-next-line security/detect-non-literal-require
  8. const redis = require(redis_lib);
  9. var client_config = {
  10. host: config.redis_host,
  11. port: config.redis_port,
  12. retry_strategy: options => {
  13. if (options.total_retry_time > config.redis_retry_time) {
  14. client.emit('error', 'Retry time exhausted');
  15. return new Error('Retry time exhausted');
  16. }
  17. return config.redis_retry_delay;
  18. }
  19. };
  20. if (config.redis_user != null && config.redis_user.length > 0)
  21. client_config.user = config.redis_user;
  22. if (config.redis_password != null && config.redis_password.length > 0)
  23. client_config.password = config.redis_password;
  24. if (config.redis_db != null && config.redis_db.length > 0)
  25. client_config.db = config.redis_db;
  26. const client = redis.createClient(client_config);
  27. client.ttlAsync = promisify(client.ttl);
  28. client.hgetallAsync = promisify(client.hgetall);
  29. client.hgetAsync = promisify(client.hget);
  30. client.pingAsync = promisify(client.ping);
  31. return client;
  32. };