Redis

1. Redis

1.1 Redis介绍

Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

1.2 Redis性能

读:11.2万/秒
写:8.6万/秒
平均: 10万/秒 吞吐量

2. Redis分片机制

2.1 Redis分片介绍

Redis分片实现了redis内存的扩容,使用多个redis节点,共同为用户提供服务,内存空间翻倍。用户使用时当做一个整体,并且内存保存的数据不一。

2.2 Hash一致性算法

2.2.1 Hash一致性说明

所有节点都是通过ip地址加算法计算获取的。

2.2.2 Hash一致性特性

● 均衡性 均衡性要求节点中的数据尽可能的平均。
● 单调性 当节点新增时,能够实现数据的自动的迁移。
● 分散性 由于分布式原因,导致系统不能获取全部的内存空间,导致一个key有多个位置。
● 负载 由于分布式原因,系统不能获取全部的内存地址,导致同一个位置保存多个数据。

3. Redis持久化策略

3.1 持久化策略说明

Redis中的数据都在内存中,如果断电宕机则内存数据丢失。所以数据会持久化保存,不允许丢失。

3.2 持久化策略模式

3.2.1 RDB模式

RDB模式是Redis中默认的持久化策略。保存的是redis的内存快照,占用的资源少,持久化效率高。
RDB特点:
● RDB模式能够定期持久化,但是有丢失数据的风险
● RDB模式做内存的快照, 效率高
● 占用磁盘空间较小

3.2.2 AOF模式

AOF模式可以实现数据的实时持久化,记录的是用户的操作过程,但是持久化文件会比较大,效率低。
RDB特点:
● AOF模式可以实现数据的实时持久化
● 记录的是用户的操作过程
● 持久化文件会比较大
● 持久化效率低
● AOF模式默认是关闭的
● AOF模式持久化是异步的

3.3 Redis缓存策略说明

  1. 如果有并发查询时.如果缓存服务器宕机/缓存失效,则查询数据库,可能导致数据库宕机, 俗称缓存雪崩。
  2. 如果用户高并发查询一个不存在的数据时,后台数据库有宕机的风险,俗称缓存穿透 。
  3. 如果高并发条件下,当某一个热点的key超时或者失效时,数据库有宕机的风险,俗称缓存击穿。

4. Redis内存机制

4.1 说明

Redis中的数据都保存内存中,内存中的数据如果一味的新增,不删除则内存数据很快存满,导致新的数据保存错误。

4.2 内存策略

4.2.1 LRU算法

内存管理的一种页面置换算法,,选择最近最久未使用的页面予以淘汰,该算法给每个页面一个访问字段,用来记录一个页面自上次被访问以来所经历的时间 t,当须淘汰一个页面时,选择现有页面中其 t 值最大的,即最近最少使用的页面予以淘汰。

4.2.1 LFU算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不经常使用页置换算法,要求在页置换时置换引用计数最小的页,因为经常使用的页应该有一个较大的引用次数。但是有些页在开始时使用次数很多,但以后就不再使用,这类页将会长时间留在内存中,因此可以将引用计数寄存器定时右移一位,形成指数衰减的平均使用次数。根据数据使用的次数多少删除数据。

4.3 内存优化策略

  1. volatile-lru
    设定超时时间的数据采用LRU算法删除数据.
  2. allkeys-lru
    所有的数据采用LRU算法删除数据
  3. volatile-lfu
    设定了超时时间的数据采用LFU删除数据
  4. allkeys-lfu
    所有的数据采用LFU算法删除数据
  5. volatile-random
    设定了超时时间的随机删除
  6. allkeys-random
    所有key随机删除
  7. volatile-ttl
    设定了超时时间的数据排序,将马上要超时的数据提前删除
  8. Noeviction
    不删除数据,如果内存数据存满则报错返回. 该策略是默认策略

5. Redis主从同步

5.1 说明

利用技术手段实现了当服务器宕机,自动的实现故障的迁移。Redis的最终形态必须实现高可用,实现高可用的前提必须满足主从同步。当发生故障,由于从机与主机的数据是相同的,所以可以非常灵活实现数据的故障迁移。

5.2 Redis哨兵

5.2.1 Redis哨兵作用

Redis哨兵主要实现了redis节点的高可用。

5.2.2 实现步骤

  1. redis哨兵会监听redis主节点,检查主节点是否存活,获取连接主节点的从机IP和端口。
  2. 利用ping-pong检测机制检查主节点是否存活,当哨兵连续3次检测都没有数据返回,则表明主节点宕机。
  3. 哨兵根据从主节点获取的从节点信息,进行推选。从中挑选一台新的从节点当做现在的主节点。将新的主从关系写入其他节点的redis.conf文件中。
  4. 当服务器重启后,能够了解当前主从关系,实现redis高可用。
  • 6
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值