C'est bien d'utiliser Spring-Data. Il existe mongodb et redis. Il est pratique et rapide d'utiliser directement spring-data-jpa pour faire fonctionner mongodb. De plus, Spring dispose d'une annotation de cache pouvant être mise en cache, qui peut être automatiquement stockée dans le cache. adresse spring-data
Il est recommandé que Redis et Mongo traitent les données séparément. Récupérez d’abord les données de mongo, puis définissez-les sur redis. Le cache mongoose-redis que vous avez utilisé semble avoir une mauvaise évolutivité à l'avenir, et il n'est pas facile de localiser les bogues
Je ne connais pas grand-chose à js, alors j'ai brièvement regardé le code de connexion que vous avez donné : 1.mongoose-redis-cache : Cela équivaut à envelopper une couche de redis devant mongo. dit, cela sera utile pour L'instruction de requête est mise en cache, key = [prefix, collectionName, hash].join ':' Utilisez le préfixe, collName et l'instruction de requête pour générer la clé dans redis, renvoyez d'abord le résultat de la requête de redis ; sinon, vérifiez mongo lorsque le résultat de la requête de mongo est renvoyé, définissez d'abord redis, définissez le délai d'attente ; , puis appelez le rappel ; 2. Comme l'a dit l'interrogateur, "mongoose-redis-cache met en cache les instructions. Si l'activité de la base de données change, elle ne peut pas être synchronisée avec le cache." cache disponible La validité des données sera certainement prise en considération, qui est généralement définie en définissant le délai d'attente. Vous pouvez également voir dans le code que le délai d'attente sera défini lors du remplissage de Redis.
hash = crypto.createHash('md5')
.update(JSON.stringify query)
.update(JSON.stringify options)
.update(JSON.stringify fields)
.update(JSON.stringify populate)
.digest('hex')
key = [prefix, collectionName, hash].join ':'
cb = (err, result) ->
if err then return callback err
if not result
# If the key is not found in Redis, executes Mongoose original
# exec() function and then cache the results in Redis
for k, path of populate
path.options ||= {}
_.defaults path.options, cache: false
mongoose.Query::_exec.call self, (err, docs) ->
if err then return callback err
str = JSON.stringify docs
client.setex key, expires, str
callback null, docs
else
# Key is found, yay! Return the baby!
docs = JSON.parse(result)
return callback null, docs
client.get key, cb
C'est bien d'utiliser Spring-Data. Il existe mongodb et redis. Il est pratique et rapide d'utiliser directement spring-data-jpa pour faire fonctionner mongodb. De plus, Spring dispose d'une annotation de cache pouvant être mise en cache, qui peut être automatiquement stockée dans le cache.
adresse spring-data
Il est recommandé que Redis et Mongo traitent les données séparément. Récupérez d’abord les données de mongo, puis définissez-les sur redis. Le cache mongoose-redis que vous avez utilisé semble avoir une mauvaise évolutivité à l'avenir, et il n'est pas facile de localiser les bogues
Je ne connais pas grand-chose à js, alors j'ai brièvement regardé le code de connexion que vous avez donné :
1.mongoose-redis-cache : Cela équivaut à envelopper une couche de redis devant mongo. dit, cela sera utile pour L'instruction de requête est mise en cache,
key = [prefix, collectionName, hash].join ':'
Utilisez le préfixe, collName et l'instruction de requête pour générer la clé dans redis, renvoyez d'abord le résultat de la requête de redis ; sinon, vérifiez mongo lorsque le résultat de la requête de mongo est renvoyé, définissez d'abord redis, définissez le délai d'attente ; , puis appelez le rappel ;
2. Comme l'a dit l'interrogateur, "mongoose-redis-cache met en cache les instructions. Si l'activité de la base de données change, elle ne peut pas être synchronisée avec le cache." cache disponible La validité des données sera certainement prise en considération, qui est généralement définie en définissant le délai d'attente. Vous pouvez également voir dans le code que le délai d'attente sera défini lors du remplissage de Redis.