LT027296-Mac:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo latest 394204d45d87 3 weeks ago 410MB
redis latest a55fbf438dfd 4 weeks ago 95MB
nginx latest 2bcb04bdb83f 4 weeks ago 109MB
bitnami/mysql latest c5c056b8435c 3 months ago 287MB
LT027296-Mac:~$ docker run --name some-redis -d redis
15e126e26ea452b2b8c2933c549a15d74bb49aece1fe8b5e4b746e67bced6c20
LTB0207296-Mac:~ b0207296$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
15e126e26ea4 redis "docker-entrypoint.s…" About a minute ago Up About a minute 6379/tcp some-redis
LT027296-Mac:~$
嗨 我正在从下面的链接学习redis教程 https://medium.com/tech-tajawal/introduction-to-caching-redis-node-js-e477eb969eab
我执行以下步骤
const express = require('express')
const fetch = require("node-fetch");
const redis = require('redis')
// create express application instance
const app = express()
// create and connect redis client to local instance.
const client = redis.createClient()
// echo redis errors to the console
client.on('error', (err) => {
console.log("Error " + err)
});
// get photos list
app.get('/photos', (req, res) => {
// key to store results in Redis store
const photosRedisKey = 'user:photos';
// Try fetching the result from Redis first in case we have it cached
return client.get(photosRedisKey, (err, photos) => {
// If that key exists in Redis store
if (photos) {
return res.json({ source: 'cache', data: JSON.parse(photos) })
} else { // Key does not exist in Redis store
// Fetch directly from remote api
fetch('https://jsonplaceholder.typicode.com/photos')
.then(response => response.json())
.then(photos => {
// Save the API response in Redis store, data expire time in 3600 seconds, it means one hour
client.setex(photosRedisKey, 3600, JSON.stringify(photos))
// Send JSON response to client
return res.json({ source: 'api', data: photos })
})
.catch(error => {
// log error message
console.log(error)
// send error to the client
return res.json(error.toString())
})
}
});
});
// start express server at 3000 port
app.listen(3000, () => {
console.log('Server listening on port: ', 3000)
});
我收到此错误
Redis与127.0.0.1:6379的连接失败-连接ECONNREFUSED 127.0.0.1:6379
答案 0 :(得分:2)
在运行docker映像时,您还必须发布端口。
docker run --name some-redis -d redis -p 6379:6379
这会将docker
的端口映射到host
的端口
(可选)您还可以通过主机:
-p 127.0.0.1:8001:8001
了解有关发布here
的更多信息