Redis8月份专题
徐明曉
这个作者很懒,什么都没留下…
展开
-
Redis哨兵(Sentinel)模式
链接:https://www.jianshu.com/p/06ab9daf921d主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。一、哨兵模式概述哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。这里的哨兵有两个作用通过发送命令,让Re.原创 2020-08-06 09:29:57 · 175 阅读 · 0 评论 -
Redis持久化方式
已订正1. Redis 提供了不同级别的持久化方式:RDB(Redis DataBase)持久化:Redis 可以通过创建快照来存储内存里面的数据在某个时间点上的副本到本地数据库中,如果系统,Redis或者硬件其中之一崩溃,那么Redis将丢失最近一次创建快照之后写入的所有数据.AOF(Append Only File)持久化:AOF持久化会将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化.它可以做到每秒一次的频率对AOF文件进行同步.不持久化:如果你只希望数据在服务器运行的时候.原创 2020-08-06 09:29:23 · 127 阅读 · 0 评论 -
多线程的 Redis
link相信redis6.0以前一直都是单线程,到了6的版本才加入了多线程.一、问题概述Redis 6.0 之后的版本抛弃了单线程模型这一设计,原本使用单线程运行的 Redis 也开始选择性使用多线程模型,乍一看Redis的作者这么牛,也逃不过“真香定律”,这个问题其实可以拆分,拆分为两个主要的问题:(1)为什么 Redis 一开始选择单线程模型(单线程的好处)?(2)为什么 Redis 在 6.0 之后加入了多线程(在某些情况下,单线程出现了缺点,多线程可以解决)?随着时间的推移,单线程出现原创 2020-08-06 09:28:55 · 458 阅读 · 0 评论 -
Redis的I/O多路复用
Redis的I/O多路复用[1] 为什么 Redis 中要使用 I/O 多路复用?[2] I/O 多路复用模型[3] select[4] poll[5] epoll[6] Reactor 设计模式[7] 封装 epoll 函数[8] select & poll & epoll比较[9] 深入理解select、poll和epoll及区别:杂文https://www.jianshu.com/p/311f9d276b2a[1] 为什么 Redis 中要使用 I/O 多路复用?首先,Redis原创 2020-08-06 09:28:14 · 2915 阅读 · 0 评论 -
Redis分布式锁
Redis分布式锁[1] 分布式锁[2] redis[3] redisson[4] 牛客网总结[5] 常用的分布式锁[6] 分布式锁三种实现方式https://www.jianshu.com/p/47fd7f86c848在Java中,关于锁我想大家都很熟悉.在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题.通常,我们以synchronized 、Lock来使用它.但是Java中的锁,只能保证在同一个JVM进程内中执行.如果在分布式集群环境下呢?[1] 分布式锁分布式锁,是一种思想,原创 2020-08-06 09:26:57 · 354 阅读 · 0 评论 -
Redis的过期策略
Redis的过期策略[1] 定期删除(主动)[2]惰性删除(被动)[3] 定期删除+惰性删除[4] 内存淘汰机制[5] LRU算法Redis keys过期有两种方式:定期扫描和惰性删除.[1] 定期删除(主动)定时删除,用一个定时器来负责监视所有key,当key过期则自动删除key.虽然内存及时释放,但是十分消耗CPU资源.在大并发请求下,会影响redis的性能.[2]惰性删除(被动)客户端尝试访问key时,被访问的key会被发现并主动的过期缺陷:有些过期的keys,永远不会访问他们,那么他们原创 2020-08-06 09:25:34 · 157 阅读 · 0 评论 -
Redis底层数据结构
redis底层实现的8种数据结构SDS simple synamic string:支持自动动态扩容的字节数组 list :链表 dict :使用双哈希表实现的, 支持平滑扩容的字典 zskiplist :附加了后向指针的跳跃表 intset : 用于存储整数数值集合的自有结构 ziplist :一种实现上类似于TLV, 但比TLV复杂的, 用于存储任意数据的有序序列的数据结构 quicklist:一种以ziplist作为结点的双链表结构, 实现的非常不错 zipmap : 一种用于在小规模原创 2020-08-06 09:24:43 · 101 阅读 · 0 评论 -
使用redis可能出现的问题
使用redis可能出现的问题[1] 缓存雪崩[2] 缓存击穿[3] 缓存穿透[4] 三种问题区别记忆方法[5] 数据库和缓存的双写一致性问题首先我们应该先明确缓存处理的流程:前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果.[1] 缓存雪崩指缓存由于某些原因(比如 宕机、cache服务挂了或者不响应)整体失效了,导致大量请求到达后端数据库,从而导致数据库崩溃,整个系统崩溃,发生灾难.解决办法:可以给缓存设置原创 2020-08-06 09:23:59 · 1006 阅读 · 0 评论 -
Redis有哪五种不同类型的值?应用场景有哪些?
Redis有哪五种不同类型的值?应用场景有哪些?[1] String(字符串)[2] Hash(哈希)[3] List(列表)[4] Set(集合)[5] zset (sorted set:有序集合)string:redis 中字符串 value 最大可为512M.可以用来做一些计数器(也是实际工作中最常见的).hash:键值对集合,是一个字符串类型的 Key和 Value 的映射表,也就是说其存储的Value是一个键值对(Key- Value).可以用来存放一些具有特定结构的信息.用于用户信息管理.原创 2020-08-06 09:22:44 · 472 阅读 · 0 评论 -
Redis是什么?
Redis[1] 什么是远程字典服务器?[2] 为什么redis是高性能的?[3] 分布式的含义?[4] NoSQL的含义?Redis (REmote DIctionary Server)是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列,是一个高性能的key-value数据库.Redis与其他key-value缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用.Redis不仅支持简单的key-val原创 2020-08-06 09:21:21 · 730 阅读 · 0 评论