文档章节

重新认识Redis

 最胖的瘦子
发布于 04/15 19:46
字数 966
阅读 1
收藏 0

Redis支持的数据类型:

 

String、list、hash、set

 

单线程的redis为什么速度那么快?

  1. 数据是存储在内存中的,内存的访问处理速度本身就是非常优秀的
  2. 底层是采用了NIO的设计方式,依靠多路复用器达到同步非阻塞的好处
  3. Redis是单线程的。。。多线程在切换时是有上下文的切换开销的,这个是有时间性能损耗的

 

Redis的持久化实现

Reids相较于memcached优秀的一点是他可以做磁盘持久化,默认是通过RDB,还有一种方式是AOF

 

  1. RDB持久化

通过bgsave命令触发,父进程会执行fork创建子进程,子进程创建一个RDB的二进制文件,然后将此副本文件存储在硬盘中

优点:RDB的数据恢复速度是远高于AOF的

缺点:由于RDB文件的生成是命令触发的,并不是实时在持久化的,所以每次去生成这个文件的开销会比较大

 

  1. AOF持久化

AOF是实时持久化的,redis每次去执行一个修改数据的命令,都会把修改的命令保存到AOF文件中

优点:实时在做持久化操作的

缺点:随着时间的推移,AOF文件会变得越来越大,需要定期重写来降低文件体积,而且AOF的加载速度更慢

 

 

Redis的选举机制

哨兵提供监控服务,通过心跳机制,ping节点是否在正常状态下,若是发现ping不通,则会主观的认为该节点故障,当半数的哨兵发现都ping不通时,则会认为该节点宕机,从而运用roft算法(选举机制),选出新的节点作为主节点

 

 

Redis的缓存更新机制

惰性过期:当访问该key值时,若是已经超过了超时时间,就会清除。若是不访问,即使超时了也不会对其进行处理

定期过期:每隔一段时间(Redis默认是100MS)随机抽取一部分key进行检查一次,对已经过期的Key值进行清除处理

 

Redis是同时使用了这两种策略的惰性过期和定期过期,看似定期过期好,但是存在一个问题是,定期过期若是同一时间下去处理大量过期的key值,那他也只会处理这其中的一部分,剩下的交给惰性处理。为的是避免redis处理大量key值时,影响其的性能

 

 

Redis的数据淘汰策略

最常用的一种策略allkeys-lru:当内存出现不足以容纳新数据写入时,在键空间中,移除最近最少使用的键值

 

其他策略

  1. noeviction:当目前内存不足以容纳新数据写入时,直接报错
  2. allkeys-random:当目前内存不足以容纳新数据写入时,随机挑选一个key值删除
  3. volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)
  4. volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
  5. volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除

 

 

 

© 著作权归作者所有

粉丝 4
博文 34
码字总数 19073
作品 0
杭州
私信 提问
keras搬砖系列-重新认识Sequential()模型

keras搬砖系列-重新认识Sequential()模型 重新认识一下Sequential()模型,虽然之前经常写,但是时候总结一下。 Sequential()传递一个layer 的列表来进行构建 通过.add的方法就可以加入新的一...

googler_offer
2018/01/16
0
0
重新认知 linux chmod 命令

”想当然“是一件可怕的事, 第一次接触chmod命令已经是很久前的事情了, 今天重新认识了一下它。chmod的数值的是这样的。 1 执行 2 写 3 写和执行 4 读 5 读和执行 6 读和写 7 读、写执行...

AdaAda
2017/06/08
0
0
博客、笔记里用“标签”有啥用?

这时就可以使用“标签”,可以给文章打很多个标签,表示它的类型,而不像传统的分类那样只能归在一个类别下。以后再查资料时再根据这些"标签"来找,比如搜索时加上“标签”关键字,或者直接选...

佣兵0926
2015/10/17
72
0
CSS样式的权重问题

便于记忆的顺序:“important > 内联 > ID > 类 > 标签 伪类 属性选择 > 伪对象 > 通配符 > 继承”。 参考博文 深入解析CSS样式层叠权重值 深入解析CSS样式层叠权重值 重新认识CSS的权重...

Mobile-DEV彬
2016/04/25
55
0
光谷码农·每日新闻(2019-05-08)

光谷码农·每日新闻(2019-05-08)https://guanggu-coder.cn Flutter 谷歌官方微博正式宣布正式Flutter成为前后端手机设备通吃的跨平台框架: https://developers.googleblog.com/2019/05/Flutt...

chai2010
05/08
16
0

没有更多内容

加载失败,请刷新页面

加载更多

只需一步,在Spring Boot中统一Restful API返回值格式与统一处理异常

统一返回值 在前后端分离大行其道的今天,有一个统一的返回值格式不仅能使我们的接口看起来更漂亮,而且还可以使前端可以统一处理很多东西,避免很多问题的产生。 比较通用的返回值格式如下:...

晓月寒丶
昨天
59
0
区块链应用到供应链上的好处和实际案例

区块链可以解决供应链中的很多问题,例如记录以及追踪产品。那么使用区块链应用到各产品供应链上到底有什么好处?猎头悬赏平台解优人才网小编给大家做个简单的分享: 使用区块链的最突出的优...

猎头悬赏平台
昨天
28
0
全世界到底有多少软件开发人员?

埃文斯数据公司(Evans Data Corporation) 2019 最新的统计数据(原文)显示,2018 年全球共有 2300 万软件开发人员,预计到 2019 年底这个数字将达到 2640万,到 2023 年达到 2770万。 而来自...

红薯
昨天
65
0
Go 语言基础—— 通道(channel)

通过通信来共享内存(Java是通过共享内存来通信的) 定义 func service() string {time.Sleep(time.Millisecond * 50)return "Done"}func AsyncService() chan string {retCh := mak......

刘一草
昨天
58
0
Apache Flink 零基础入门(一):基础概念解析

Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速...

Vincent-Duan
昨天
60
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部