大家好,关于redis为什么要fork一个进程而不是线程很多朋友都还不太明白,今天小编就来为大家分享关于redis建不建议持久化的知识,希望对各位有所帮助!
本文目录
业务数据可不可以放在redis中
1、可以。
2、Redis是一款高性能内存数据库,具有快速读写、高并发、数据持久等特点,适用于高速数据缓存和快速查询。
3、对于一些业务数据需要频繁访问的情况,可以将其存放在Redis中,加快访问速度,提高系统性能。
redis和本机内存哪个快
redis快
1.读写速度,不考虑并发问题,本地缓存自然是最快的。但是如果本地缓存不加锁,那应并发了咋办呢?所以,我们以加锁方式再比较一次。
场景使用,同一数据,从数据库取出来,放到redis只要一次,而放到本地缓存,则需要n个集群次
本地缓存无法用于重复点击,重复点击会分发请求到多台服务器,而用本地缓存只能防止本机重复点击,redis则可以防止,但是时间间隔也需要在redis的读写差之外。
redis内存可能n多扩充,而本地扩大堆内存代价是很大的。
本地缓存需要自己实现过期功能,实现不好可能导致极其严重的后果,而redis经过大量的流量验证,许多漏洞无需考试,安全。
本地缓存无法提供丰富的数据结构,redis可以。
redis可以写磁盘,持久化,本地缓存不可以或者说很麻烦要考虑的东西太多。
各位开发同学水平差别大,使用本地缓存极有可能导致严重的线程安全问题,并发考虑严重。
加本地缓存后,代码复杂度急剧上升,后面进来的开发很难一下领会原有开发想法。间接提升维护成本。
其实在map和redis取值这里省的时间,可能在我们写得乱七八糟的代码里,早都不算啥了,所有有时候咱们真的没必要较那几毫秒的真!
redis为什么要fork一个进程而不是线程
Redis有RDB和AOF两种持久化方式,RDB容易都数据,AOF由于保存的历史,会使得文件非常非常大,就得启用rewrite的功能。所以都会有fork出一个子进程,有子进程将数据写入磁盘。之前有人说子进程会完全copy父进程的内存,所以必须让redis留出一半的内存空着才会安全。其实是不准确的,在进行RDB或者rewriteAOF的时候,redis也会利用Linux'Copy-on-write的思想。
简单来说就是子进程并不会真正copu父进程的内存数据,只是在新对象的内存映射表中保存旧数据的指针,只有旧数据有更改,才会把这部分数据copy到新的内存空间吧?
最终就是在写snapshot期间被修改的页面的大小。
redis面试必问的三大问题
三大问题:
1.缓存穿透
2.缓存击穿
3.缓存雪崩
详细介绍:
缓存穿透正常情况下,如果用户在redis缓存中没有查询到自己想要的数据,就会去mysql数据库中查询。
文章分享结束,redis为什么要fork一个进程而不是线程和redis建不建议持久化的答案你都知道了吗?欢迎再次光临本站哦!