日志统计redis和mongo对比

1.Redis适合做key少value大的计数统计

mongo适合使用聚合做key多value少的计数统计,使用聚合的方式

2.mongo可以直接使用key-value做计数而不是聚合,但是这种方式只试用统计访问总数,而不是访问人次

3.使用mongo聚合的方式统计更加灵活,可以扩充功能。比如统计dxh的访问量扩充cbs下,book下总访问量.使用聚合可以减少对db的写操作,一个集合可以做多种数据统计

好的,这里是一个基于Node.js、MongoDB和Redis的简单缓存实现示例: ``` const express = require('express'); const mongoose = require('mongoose'); const redis = require('redis'); const util = require('util'); // 创建Express应用 const app = express(); // 连接MongoDB mongoose.connect('mongodb://localhost:27017/mydb', { useNewUrlParser: true }); const db = mongoose.connection; // 定义数据模型 const UserSchema = new mongoose.Schema({ name: String, email: String, age: Number }); const User = mongoose.model('User', UserSchema); // 连接Redis const client = redis.createClient(); client.get = util.promisify(client.get); // 定义路由 app.get('/users/:id', async (req, res) => { const { id } = req.params; // 先从Redis中查找数据 const cachedUser = await client.get(`user:${id}`); if (cachedUser) { console.log('从Redis缓存中获取用户数据'); return res.send(JSON.parse(cachedUser)); } // 如果Redis中不存在,则从MongoDB中查找数据 const user = await User.findById(id); if (!user) { return res.status(404).send('用户不存在'); } // 将数据存入Redis缓存 console.log('从MongoDB中获取用户数据'); client.set(`user:${id}`, JSON.stringify(user), 'EX', 60); // 缓存60秒 res.send(user); }); // 启动应用 app.listen(3000, () => console.log('服务器已启动')); ``` 该示例中,我们使用了`mongoose`库连接MongoDB,并定义了一个名为`User`的数据模型。在路由中,我们先从Redis缓存中查找数据,如果存在则直接返回,否则从MongoDB中查找数据并将其存入Redis缓存。在存入Redis缓存时,我们使用了`EX`选项来设置过期时间。 需要注意的是,该示例只是一个简单的实现,实际应用中还需要考虑缓存穿透、缓存雪崩等问题,对缓存进行更加细致的控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值