redis是一款开源的、高性能的键-值存储,支持字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)和 有序集合(sorted sets)等数据类型。虽说Redis是一种内存数据库,但同时也支持数据的持久化。redis有两种固化方式:RDB(Redis DataBase)和AOF(Apend Only File) 。
rdb即快照方式,每隔一段时间,内存中的数据会被存储到硬盘上,当下一次服务启动时,直接恢复最近的快照即可,恢复时间快,但占空间多,这是典型的以空间换时间。
aop即命令方式,将服务从开始到当前的所有命令都存储起来,当下一次服务启动时,把这些命令从头到尾执行一遍,恢复时间慢,但占空间少,这是典型的以时间换空间。
缓存穿透是指查询一个一定不存在的数据,redis中找不到的时候,出于容错考虑,系统会再去DB再查找。如果要是有人利用不存在的key频繁查询攻击我们的应用,这就是缓存穿透。解决缓存穿透一般有两种方式,一是采用布隆过滤器,将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被这个bitmap拦截掉,从而避免了对底层存储系统的查询压力;二是直接返回一个空数据,同样也避免了对底层存储系统的查询压力。
缓存雪崩是指在我们设置缓存时采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到DB,DB瞬时压力过重雪崩。解决缓存雪崩可以在原有的失效时间基础上增加一个随机值,比如1-5分钟随机,这样每一个缓存的过期时间的重复率就会降低,就很难引发集体失效的事件。
缓存击穿是指存在一种非常“热点”的数据,在这个热点数据过期的时候,有大量的并发请求过来,这些请求会击穿redis直到后端DB,大量的这种请求可能会瞬间把后端DB压垮。解决缓存击穿可以使用互斥锁或者让这些数据永不过期。
redis集群,为了提升读写能力,保证稳定性,一般会配置redis集群。redis集群会分为主节点[master]和从节点[slave],主节点可读可写,从节点只读,主节点的数据会不断同步到从节点
redis的基本理解
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 导言 大家好,我是南橘,从接触java到现在也有差不多两年时间了,两年时间,从一名连java有几种数据结构都不懂超...
- 缓存的收益与成本 ①收益 加速读写:因为缓存通常都是全内存的(例如Redis、Memcache),而存储层通常读写...
- 原创文章首发于公众号:「码农富哥」,致力于分享后端技术 (高并发架构, 中间件, Linux, TCP/IP, H...