总是听说很多javaweb系统用redis或memcache做缓存,具体怎么 *** 作的

总是听说很多javaweb系统用redis或memcache做缓存,具体怎么 *** 作的,第1张

其实就相当于在应用程序和数据库之间开了一块内存区域,将一些高频访问的数据放在其中,避免每次都请求数据库。至于之所以用memcached和redis,而不是自己在程序里开个hashmap,是因为这块区域可以共享且容易管理,在集群环境下更方便使用。

有些做法是直接将数据序列化后存在redis的string或是memcached中,也有些其他做法是利用redis特有的数据结构存储一些关系,例如用sorted set存排行榜,string用来计数,set做一些倒排索引、用户好友关系之类的。我觉得这些都可以称之为缓存。

Nosql的全称是NotOnlySql,这个概念很早就有人提出。Nosql指的是非关系型数据库,而我们常用的都是关系型数据库。就像我们常用的mysql,oralce、sqlserver等一样,这些数据库一般用来存储重要信息,应对普通的业务是没有问题的。但是,随着互联网的高速发展,传统的关系型数据库在应付超大规模,超大流量以及高并发的时候力不从心。而就在这个时候,Nosql应运而生。

上面说的是NOSQL的定义Nosql和关系型数据库的区别,这里我说明一比较重要的区别。

存储格式:关系型数据库是表格式的,存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而Nosql数据库则与其相反,他是组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。举个例子,例如在游戏里面玩家的背包数据,我们都知道一个游戏里面的道具是很多,而且不确定玩家什么时候获取什么道具,这个时候如果想在关系数据库里面存储数据,这个表怎么建立就是一个很大的问题,如果你把所有的道具ID当做表头,那么后续每增加一个道具,就需要修改这张表。如果你的表结构是:

用户ID|道具ID|道具数量|道具特殊属性

那么可以想象一下这张表随着用户的增多会变的多么的庞大。所以这个时候我们就需要一个能直接像 *** 作玩家对象一样的数据库,这里比较代表性的就是mongo,通过这个我们就可以看出nosql数据库更适合存储结构不确定的数据。

存储扩展:这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中, *** 作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。

上面的的例子已经说明了这个问题。在现代互联网时代大家都是希望能横线扩展服务。这样付出的代价是最小的。

对于上面关系型数据库和NOSQL数据库的区别其实还有很多。我相信大家在用的都会感觉到。上面列出的只是我感觉区别最大的。

那么NOSQL这么好用,是不是都可以用了呢,显示不是这样,NOSQL对于聚合查询显示不是他的强项。这个时候就需要关系型数据库。我是这样建议,对于结构统一,应该存储于关系型数据库,对于结构不统一的可以存储到NOSQL数据库例如mongo。但是这个不是绝对的,在实际的项目的开发过程中,需要根据的自己的业务,仔细揣摩一下,做好最合适的划分。

常见关系型数据库通常有SQLServer,Mysql,Oracle等。主流的Nosql数据库有Redis,Memcache,MongoDb。大多数的关系型数据库都是付费的并且价格昂贵,成本较大,而Nosql数据库通常都是开源的。在互联网行业用大多也是免费的MYSQL(这里偷笑一下)。

在实际的项目中大家的项目都是如何选择的呢?大家可以关注我,私信或者在评论区留言。

区块链是去中心化的系统,但是由于区块链中的区块能保存的数据有限,因而区块链+数据库(云存储、分布式数据库等)这种形式是在区块链项目中应用比较多的一种设计。

在这种前提下,可以选择的数据库也有很多,比如轻量级的sqlite,可以作为app的基础数据存储支持,需要更大数据量性能支持的也有mysql、oracle可以使用,另外在项目缓存服务中也可以选择使用各种key-value数据库,如常用的redis,Memcache等来作为缓存支持,当然各种分布式数据库系统也是现今发展的一个方向,比如阿里巴巴研发的OceanBase就是一款金融级分布式关系数据库,RethinkDB则是一款拥有免费授权与商用授权的分布式数据库。总之,需要学习的数据库不是一个两个的问题,而是需要根据实际情况入手从基本的关系型数据库开始学习,在此基础上再不断提高,学习NoSql数据库以及分布式数据库系统开发是比较好的一个学习路线。链乔在线诚意奉上。

以上就是关于总是听说很多javaweb系统用redis或memcache做缓存,具体怎么 *** 作的全部的内容,包括:总是听说很多javaweb系统用redis或memcache做缓存,具体怎么 *** 作的、常用的关系型数据库有哪些(常用的关系型数据库有哪些各有哪些优点)、区块链开发学什么数据库比较好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9392214.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存