redis 那些事儿
1 我的数据存入redis了但是怎么不见了?
redis的内存使用是有限的,一直向redis中写入数据(如果配置了allkeyLRU)就会触发内存淘汰机制,将最近没有访问过的的key,value删除掉。
2 数据设置了过期时间,到时间以后内存仍然看不到明显被释放呢?
redis如果key设置了过期时间,清除算法是 “随机淘汰机制”+“被动删除机制”;当redis有一批key到达了过期时间,则会随机抽样删除一部分key,但是很多key会在你访问的时候去校验,如果过期则直接删除给你返回空值。这样做大大提升了redis的性能,否则加入几十万个key同时国企,redis又要完全主动删除则会非常消耗cpu!!!
3 redis为什么性能这么好
1)基于内存的数据存储;
2)单线程内存模型,相比多线程会省去很多并发处理的内部逻辑,从而提高了效率‘
3)多路复用机制,数据插入时由带有Looper监控的异步队列处理机制控制,并发性极好
4)采用RESP协议,实现容易,解析速度快,而且可读性很高。
4 redis的主从复制原理
1)redis主从同步是基于RDB的快照进行的,当发生数据同步时,master节点会fork出子进程来进行dump.rdb的生成,如果配置了无磁盘化的操作时则将rdb直接发送给slave节点,并不会将dump.rdb放在本地一份;salve收到dump.rdb数据以后会落地磁盘然后将数据加载到内存。
2)那么redis2.8以后也支持断点续传,重启后任然可以根据offset继续发送数据。
5 reids“集群脑裂”和“异步复制”丢失数据问题:
(1)如果master写入数据后直接挂掉,slave还没来得及同步数据。
(2)脑裂:1个master,2个slave节点,如果master突然出现网络分区那么剩余的两个slave节点就会从中选举出一个节点作为master。这个时候集群中就会出现两个master,而这时有可能client还没有指向到新的master;而被分区的master恢复正常以后重新以slave身份加入集群会清除掉自己的数据,然后重新同步新的master数据,在这里会丢失数据。
解决办法:
配置参数min-slaves-to-write:1 master至少有1个slave节点挂接否则将拒绝客户端写入。
配置参数min-slaves-max-lag:10 如果master异步复制到slave的节点数据ack超过10秒,则master拒绝客户端写入
这样配合设置能够保证最多只丢失10秒的数据;当master拒绝后,客户端无法链接时jedis提供了mapcache机制,暂时保存数据,等到切换master成功后会将数据发送过去。
6 redis的savecheck检查点
- 5分钟 1个key变化就复制一份
- 1分钟100个key变化就复制一份
- 1秒钟1000key变化就复制一份
redis 那些事儿的更多相关文章
- 聊一聊Redis事务
没错,Redis也有事务管理,但是功能很简单,在正式开发中也并不推荐使用.但是面试中有可能会问到,所以本文简单谈一谈Redis的事务. 通过这篇文章,你会了解 Redis为什么要提供事务? Redis ...
- Redis可以做哪些事儿?
Redis可以作为数据库,提供高速缓存,消息队列等功能,这里介绍Redis可以做的其中两件事: 1.提供缓存功能,作为缓存服务器; 2.轻量级的消息队列(MQ)进行使用. /// <summar ...
- Redis缓存哪些事儿
一提到Redis缓存,我们不得不了解的三个问题就是:缓存雪崩.缓存击穿和缓存穿透.这三个问题一旦发生,会导致大量的请求直接请求到数据库层.如果并发压力大,就会导致数据库崩溃.那p0级的故障是没跑了. ...
- Redis 1:简介
导读:在今日开讲的项目中,用到了redis数据库.老听大家在说,我都不知道是个啥玩意儿.然后这两天在准备知识分享的事儿,我先大概了解了解,然后讲的时候,能有点共鸣.所以,本篇博客,是在自己跟读完MVA ...
- 【redis】06Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存
上节课详细讲解了redis数据库的常用命令,以及redis数据库高级应用当中的, 安全性,跟咱们的主从复制, 这节课呢,咱们继续来讲咱们的高级应用, 首先来看一下咱们的事务处理, 事务处理 我前面说过 ...
- [转载] 十五分钟介绍 Redis数据结构
转载自http://blog.nosqlfan.com/html/3202.html?ref=rediszt Redis是一种面向“键/值”对类型数据的分布式NoSQL数据库系统,特点是高性能,持久存 ...
- 豌豆夹Redis解决方式Codis源代码剖析:Proxy代理
豌豆夹Redis解决方式Codis源代码剖析:Proxy代理 1.预备知识 1.1 Codis Codis就不详细说了,摘抄一下GitHub上的一些项目描写叙述: Codis is a proxy b ...
- Spring+SpringMVC+MyBatis+easyUI整合进阶篇(十四)Redis缓存正确的使用姿势
作者:13 GitHub:https://github.com/ZHENFENG13 版权声明:本文为原创文章,未经允许不得转载. 简介 这是一篇关于Redis使用的总结类型文章,会先简单的谈一下缓存 ...
- 豌豆夹Redis解决方案Codis源码剖析:Proxy代理
豌豆夹Redis解决方案Codis源码剖析:Proxy代理 1.预备知识 1.1 Codis Codis就不详细说了,摘抄一下GitHub上的一些项目描述: Codis is a proxy base ...
随机推荐
- 模板 - 字符串/数据结构 - 字典树/Trie
使用静态数组的nxt指针的设计,大概比使用map作为nxt指针的设计要快1倍,但空间花费大概也大1倍.在数据量小的情况下,时间和空间效率都不及map<vector,int>.map< ...
- HDU 6194 string string string ——(2017沈阳网络赛,后缀数组)
思路见:http://blog.csdn.net/aozil_yang/article/details/77929216. 代码如下: #include <stdio.h> #includ ...
- 44个Java性能优化
44个Java性能优化 首先,代码优化的目标是: 减小代码的体积 提高代码运行效率 代码优化细节 1 .尽量指定类.方法的final修饰符 带有final修饰符的类是不可派生的.在Java核心AP ...
- hive(2)数据类型和文件格式
基本的数据类型 Hive支持关系型数据中大多数基本的数据类型,同时也支持关系型数据库中很少出现的三种集合数据类型. 集合数据类型 Hive中的列支持使用struct.map.array集合数据类型,下 ...
- archlinux安装nvidia-1050ti闭源驱动教程,亲测
link:https://blog.csdn.net/u014025444/article/details/91454059
- 【洛谷】P2261 [CQOI2007]余数求和
题面?? 点我获得题面QAQ 我这个咕儿终于在csp初赛前夕开始学习数论了! 我是绝对不会承认之前不学数学是因为去年刚开始学OI的时候就跟yyq他们学莫比乌斯反演然后自闭的 分析 对于k mod i, ...
- GO语言html模板
模板 一个模板是一个字符串或一个文件,里面包含了一个或多个由双花括号包含的{{action}}对象.大部分的字符串只是按面值打印,但是对于actions部分将触发其它的行为.每个actions都包含了 ...
- 微信小程序“一劳永逸”的接口封装
前言 最近都在研究小程序了,我可以的! 需求 之前都是用vue来开发项目的,接口模块我特意封装了一下.感觉也可以记录一下 小程序的接口虽说简单,但是重复调用那么多,显得不专业(一本正经的胡说八道) 还 ...
- python中requests里.text和.content方法的区别
requests对象的get和post方法都会返回一个Response对象,这个对象里面存的是服务器返回的所有信息,包括响应头,响应状态码等.其中返回的网页部分会存在.content和.text两个对 ...
- UK Biobank专题
这个时代的生信,统计遗传,不懂或不会用这个数据库就说不过去了. 看看10年GWAS里是如何定位和评价UK biobank的: For the near future, the UK Biobank i ...