2019-08-06

今天让我们聊一聊redis数据库以及redis缓存;    

        首先了解一下,什么是redis数据库: redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API.并且redis数据库还支持多种类型的存储:例如tring(字符串)、list(链表)、set(集合)和zset(有序集合),而且这些类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

因此redis数据库是一个高性能的key-value数据库。

        接下来跟随着脚步欣赏一下redis缓存魅力  redis缓存可以分成几个部分进行慢慢的深入了解一下

            1.Redis缓存的数据一致性

                    真正意义上来讲数据库的数据和缓存的数据是不可能一致的,数据分为最终一直和强一致两类。如果业务中对数据的要求必须强一直那么就不能使用缓存。缓存能做的只能保证数据的最终一致性。但是我们能做到的是尽可能的保证数据的一致性。

            2.Redis的过期和内存淘汰

                    redis过期删除采用的是定期删除,默认是每100ms检测一次,遇到过期的key则进行删除,这里的检测并不是顺序检测,而是随机检                     测。那这样会不会有漏网之鱼?显然Redis也考虑到了这一点,当我们去读/写一个已经过期的key时,会触发Redis的惰性删除策略,直接回 干掉过期的key

           内存淘汰是指用户存储的一部分key是可以被Redis自动的删除,从而会出现从缓存中查不到数据的情况。体现了redis设计的初衷:缓存、持久存储

        3.缓存雪崩

         缓存雪崩就是指缓存由于某些原因(比如 宕机、cache服务挂了或者不响应)整体crash掉了,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统崩溃,发生灾难,也就是上面提到的缓存击穿。

你可能感兴趣的:(2019-08-06)