Adalah bagus untuk menggunakan data spring. Terdapat mongodb dan redis Ia adalah mudah dan pantas untuk terus menggunakan spring-data-jpa untuk mengendalikan mongodb. Selain itu, musim bunga mempunyai anotasi cache boleh cache, yang boleh disimpan secara automatik dalam cache. alamat data spring
Adalah disyorkan agar redis dan mongo memproses data secara berasingan. Mula-mula dapatkan data dari mongo dan kemudian tetapkannya kepada redis. Cache mongoose-redis yang anda gunakan nampaknya mempunyai kebolehskalaan yang lemah pada masa hadapan, dan bukan mudah untuk mencari pepijat
Saya tidak tahu banyak tentang js, jadi saya melihat secara ringkas kod sambungan yang anda berikan: 1.mongoose-redis-cache: Ia sama dengan membungkus lapisan redis di hadapan mongo berkata, ia akan berguna untuk Pernyataan pertanyaan dicache, kunci = [prefix, collectionName, hash].join ':' Gunakan awalan, collName dan pernyataan pertanyaan untuk menjana kunci dalam redis, mula-mula kembalikan hasil pertanyaan redis, jika tidak, semak mongo apabila hasil pertanyaan mongo dikembalikan, tetapkan redis, tetapkan masa tamat; , dan kemudian panggil panggilan balik ; 2 Seperti yang dikatakan oleh penyoal, "mongoose-redis-cache caches statements. Jika perniagaan pangkalan data berubah, ia tidak boleh disegerakkan ke cache." cache yang tersedia Kesahihan data pasti akan diambil kira, yang biasanya ditetapkan dengan menetapkan tamat masa anda juga boleh melihat dalam kod bahawa tamat masa akan ditetapkan apabila mengisi semula 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
Adalah bagus untuk menggunakan data spring. Terdapat mongodb dan redis Ia adalah mudah dan pantas untuk terus menggunakan spring-data-jpa untuk mengendalikan mongodb. Selain itu, musim bunga mempunyai anotasi cache boleh cache, yang boleh disimpan secara automatik dalam cache.
alamat data spring
Adalah disyorkan agar redis dan mongo memproses data secara berasingan. Mula-mula dapatkan data dari mongo dan kemudian tetapkannya kepada redis. Cache mongoose-redis yang anda gunakan nampaknya mempunyai kebolehskalaan yang lemah pada masa hadapan, dan bukan mudah untuk mencari pepijat
Saya tidak tahu banyak tentang js, jadi saya melihat secara ringkas kod sambungan yang anda berikan:
1.mongoose-redis-cache: Ia sama dengan membungkus lapisan redis di hadapan mongo berkata, ia akan berguna untuk Pernyataan pertanyaan dicache,
kunci = [prefix, collectionName, hash].join ':'
Gunakan awalan, collName dan pernyataan pertanyaan untuk menjana kunci dalam redis, mula-mula kembalikan hasil pertanyaan redis, jika tidak, semak mongo apabila hasil pertanyaan mongo dikembalikan, tetapkan redis, tetapkan masa tamat; , dan kemudian panggil panggilan balik ;
2 Seperti yang dikatakan oleh penyoal, "mongoose-redis-cache caches statements. Jika perniagaan pangkalan data berubah, ia tidak boleh disegerakkan ke cache." cache yang tersedia Kesahihan data pasti akan diambil kira, yang biasanya ditetapkan dengan menetapkan tamat masa anda juga boleh melihat dalam kod bahawa tamat masa akan ditetapkan apabila mengisi semula redis.