diff --git a/src/cache.js b/src/cache.js
index 9deb51b83d5d651dfc1ee1a4a19cfcc8dab96a67..bb56d038833675c1d75e6765cd5de110f0c4ded8 100644
--- a/src/cache.js
+++ b/src/cache.js
@@ -16,7 +16,7 @@ export function set (key, value) {
   if (cache[key] === value) return
   cache[key] = value
   if (redis.isEnabled()) {
-    return redis.client.set(key, value)
+    return redis.client.set(key, value).catch(err => logger.error(err))
   }
 }
 
@@ -35,7 +35,7 @@ export function get (key, fallback) {
 
   const promise = (async () => {
     if (redis.isEnabled()) {
-      let result = await redis.client.get(key)
+      let result = await redis.client.get(key).catch(err => logger.error(err))
       if (result) {
         logger.debug(`[Cache] Resolve from redis: ${key}`)
         result = JSON.parse(result)
@@ -50,7 +50,7 @@ export function get (key, fallback) {
     if (fallbackResult) {
       logger.debug(`[Cache] Found a getter for: ${key}`)
       cache[key] = fallbackResult
-      if (redis.isEnabled()) redis.client.set(key, JSON.stringify(fallbackResult))
+      if (redis.isEnabled()) redis.client.set(key, JSON.stringify(fallbackResult)).catch(err => logger.error(err))
     }
     return fallbackResult
   })()
@@ -79,7 +79,10 @@ export function getFile ({ name, version }, fallback) {
       const [body, meta = '{}'] = await Promise.all([
         redis.client.getBuffer(bodyKey),
         redis.client.get(metaKey)
-      ])
+      ]).catch((err) => {
+        logger.error(`[Cache] could not access redis: ${err}`)
+        return []
+      })
 
       if (body) {
         logger.debug(`[Cache] Resolve file from redis: ${key}`)
@@ -96,8 +99,8 @@ export function getFile ({ name, version }, fallback) {
     if (redis.isEnabled()) {
       logger.debug(`[Cache] Store file in redis: ${key}`)
       const { body, ...rest } = dataFromServer
-      redis.client.set(bodyKey, createWritable(body))
-      redis.client.set(metaKey, JSON.stringify(rest))
+      redis.client.set(bodyKey, createWritable(body)).catch(err => logger.error(`[Cache] could not store ${bodyKey}: ${err}`))
+      redis.client.set(metaKey, JSON.stringify(rest)).catch(err => logger.error(`[Cache] could not store ${metaKey}: ${err}`))
     }
 
     // overwrite cache with synchronous data
diff --git a/src/redis.js b/src/redis.js
index b1c8aee5d13df3a14edcb1fef9119e52315a69f7..9286d086c4f013731fba08925e1e42ec521cc94f 100644
--- a/src/redis.js
+++ b/src/redis.js
@@ -9,8 +9,8 @@ const createClient = (type, options = {}) => {
   if (!isEnabled()) {
     return new Proxy({
       getBuffer () {},
-      get () {},
-      set () {},
+      get () { return Promise.resolve() },
+      set () { return Promise.resolve() },
       del () {},
       flushdb () { return {} },
       status: '',
@@ -47,7 +47,7 @@ export async function isReady () {
   }).catch(() => false)
 }
 
-export const client = createClient('common client')
+export const client = createClient('common client', { maxRetriesPerRequest: 1 })
 export const pubClient = createClient('pub client')
 export const subClient = createClient('sub client', commonQueueOptions)