15158846557 在线咨询 在线咨询
15158846557 在线咨询
所在位置: 首页 > 营销资讯 > 网站运营 > 一文看懂Python Web开发常见数据库MangoDB, Memcached和Redis

一文看懂Python Web开发常见数据库MangoDB, Memcached和Redis

时间:2023-05-23 20:36:01 | 来源:网站运营

时间:2023-05-23 20:36:01 来源:网站运营

一文看懂Python Web开发常见数据库MangoDB, Memcached和Redis:在Python Web和Django开发过程中我们有必要根据不同的应用场景来选择非关系型的数据库(no-SQL)来提升网站性能。当我们的网站流量变得非常大时,从传统关系型数据库如MYSQL中读写数据会变得很消耗时间和计算资源。例如当MySQL单表数据达到5GB以上时,读写性能会有显著的下降,这时我们就需要考虑使用其它类型数据库来补充了。目前最流行的no-SQL数据库非MangoDB, Memcached和Redis莫属了。今天我们就来介绍下它们的区别及应用场景。




MangoDB

mongodb是文档型的非关系型no-SQL数据库,其优势在于查询功能比较强大,能存储海量数据。对于中小型网站而言,MySQL和其它关系型数据库完全能胜任,不需要使用MangoDB。对于大中型网站而言,MangoDB可以作为关系性数据库很好的补充。MongoDB由于侧重海量数据写入性能, 而非事务安全, 所以很适合存储业务系统中海量“低价值”的数据。对于事务要求很高的应用比如银行交易系统,MangoDB是不适用的。




MangoDB常见应用场景包括爬虫爬来数据的存储,存储网站的日志,存储海量用户的评论。




值得一提的是,mongodb数据和MySQL的数据都是保存在磁盘中的,而不是内存中,这是它与Memcached和Redis最大的区别。MangoDB本质上来看是用来永久存储数据的数据库,而Memcached和Redis主要用来做缓存,从这个角度讲Memcached和Redis更像。




Memcached

Memcached是内存性数据库,数据以Key-Value形式存储,主要用来提供高性能分布式内存缓存服务。在实际Web开发过程中,学会利用缓存是非常重要的。在动态网站中,用户每次请求一个页面,服务器都会执行以下操作:查询数据库,渲染模板,执行业务逻辑,最后生成用户可查看的页面。这会消耗大量的资源,当访问用户量非常大时,就要考虑这个问题了。缓存就是为了防止重复计算,把那些消耗了大量资源的结果保存起来,下次访问时就不用再次计算了,这样可以大大减轻数据库的负载。




由于memcached保存的数据都存储在memcached内置的内存存储空间中, 因此重启memcached、重启操作系统会导致全部数据消失。另外,内容容量达到指定值之后,就基于LRU(Least Recently Used)算法自动删除不使用的缓存。




Memcached的应用场景只有一个: 缓存。例如缓存一个页面,一个数据集或整个网站。




Redis




Redis也是一个开源的key-value存储系统。与Memcached类似,Redis将大部分数据存储在内存中,但支持数据类型更多,包括:字符串、哈希表、链表等。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。




Redis一般也用来提供高效的缓存服务,而不是做数据的永久存储。其应用场景有缓存和记录网站日志。




Redis和Memcached都可以设置缓存数据过期。在实际Web开发中,数据库缓存Redis和Memcached基本上是二选一。Redis作为后期之秀,越来越多抢了Memcached的风头。




Memcached和Redis的区别




后续我们会介绍Django的缓存系统,及如何使用Redis和Memcached缓存。如果你喜欢我们的文章,欢迎订阅我们的微信公众号【Python与Django大咖之路】

关键词:数据

74
73
25
news

版权所有© 亿企邦 1997-2025 保留一切法律许可权利。

为了最佳展示效果,本站不支持IE9及以下版本的浏览器,建议您使用谷歌Chrome浏览器。 点击下载Chrome浏览器
关闭