摘要: 使用redis作为mysql缓存数据库流程: 先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把读到的数据同步到缓存里,提供下次读请求返回数据。 虽说这样能减轻数据库压力,但是如果修改删除数据,在多线程高并发的场景下会有可能导致缓存和数据库数据不一致问题,那该如何解决呢 阅读全文
posted @ 2019-11-22 15:15 达芬奇vinic 阅读(3532) 评论(0) 推荐(0) 编辑
摘要: 1. Redis是单线程的,省去了很多上下文切换线程的时间;(官方答案:因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。) 2. Redis在内存中存储,读 阅读全文
posted @ 2019-11-22 15:09 达芬奇vinic 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 1.我们使用缓存时的业务流程大概为: 当我们查询一条数据时,先去查询缓存,如果缓存有就直接返回,如果没有就去查询数据库,然后返回。这种情况下就可能出现下面的一些现象。 2.缓存穿透 2.1什么是缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层 阅读全文
posted @ 2019-11-22 14:56 达芬奇vinic 阅读(465) 评论(0) 推荐(0) 编辑
摘要: 对比结论 1. 性能上: 性能上都很出色,具体到细节,由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化 阅读全文
posted @ 2019-11-22 14:21 达芬奇vinic 阅读(667) 评论(0) 推荐(0) 编辑
摘要: 影响最佳线程数的主要因素: 1、IO 2、CPU 根据公式:服务器端最佳线程数量=((线程等待时间+线程cpu时间)/线程cpu时间) cpu数量 一般来说是IO和CPU。IO开销较多的应用其CPU线程等待时间会比较长,所以线程数量可以开的多一些,相反则线程数量要少一些,其实有两种极端,纯IO的应用 阅读全文
posted @ 2019-11-22 09:56 达芬奇vinic 阅读(1585) 评论(0) 推荐(0) 编辑