https://sematext.com/blog/expressjs-best-practices/```

const express = require(‘express’)
const app = express()
const redis = require(‘redis’)

const redisClient = redis.createClient(6379)

async function getSomethingFromDatabase (req, res, next) {
try {
const { id } = req.params;
const data = await database.query()

// Set data to Redis
redisClient.setex(id, 3600, JSON.stringify(data))

res.status(200).send(data)  

} catch (err) {
console.error(err)
res.status(500)
}
}

function cache (req, res, next) {
const { id } = req.params

redisClient.get(id, (err, data) => {
if (err) {
return res.status(500).send(err)
}

// If data exists return the cached value  
if (data != null) {  
  return res.status(200).send(data)  
}  


// If data does not exist, proceed to the getSomethingFromDatabase function
next()
})
}


app.get('/data/:id', cache, getSomethingFromDatabase)
app.listen(3000, () => console.log(Server running on Port ${port}))