Redis不仅仅是缓存

在谈论缓存和共享缓存时,我们大多数人都会想到memcached。Memcached轻巧,易于配置并且具有非常好的性能。但是,当缓存的数据更重要时会发生什么呢?让我们来看看Redis!

由于服务器中断而导致的缓存会话的丢失并不是很糟糕,但是当需要重新登录时,可能客户的厌烦。当数据变得越来越重要时,大多数人会想到持久性,备份,还原和高可用性。这就是Redis发挥作用的关键点,它提供了很多功能,可以同时使用:一方面是快速键值内存数据库,另一方面是数据持久性,高可用性,复制。

Redis支持的数据结构

Redis本身不是简单的键值存储。它甚至处理和支持具有不同类型值的数据结构。以下是受支持的类型和结构的简短概述:

  • 二进制安全字符串
  • Lists:字符串集合,按插入时间排序
  • Sets:唯一,未排序字符串的集合
  • Sorted sets:字符串通过称为得分的浮点数排序(可能会超出范围:给我前十名或后十名)
  • 哈希:由具有值的字段组成的地图(类似于python和ruby哈希)
  • 位数组(位图):处理字符串值,例如数组。分别设置和清除位。
  • HyperLogLogs:估计集合的基数

LRU缓存

将Redis用作缓存系统时,它可以处理数据集并自动清除旧数据。
通常,您可以设置“ maxmemory”指令来限制数据集的内存量。

您可以在Redis上配置不同的行为,当达到内存限制时,就会采用清除策略。

主从复制

主服务器和从服务器之间的复制设置非常容易配置。“ slaveof”选项将节点定义为从节点。
有关复制的基本事实是:

  • 使用异步复制
  • 主节点可以有多个从节点,从节点也可以有从节点。
  • 复制在主服务器上无阻塞
  • 复制在从属服务器上是非阻塞的,从属服务器可以在初始同步期间处理来自数据集旧版本的查询
  • 可用于扩展只读查询或数据冗余
  • 最佳实践是在主服务器上启用磁盘持久性

为了获得一点安全性,您可以通过密码添加基本身份验证,以便只有允许的从属才能复制。

持久化

AOF

  • 记录每个写操作
  • 万一Redis停止工作,数据丢失最少
  • 日志是人类可读的,可以删除命令(例如flushall)
  • 损坏的文件很容易重建

RDB

  • 时间点快照,非常适合备份
  • 非常紧凑
  • 易于转移和还原
  • Redis将派生一个子进程。它将用于写时复制。

AOF + RDB

  • 可以同时启用两者
  • 当RDB和AOF文件同时存在时,将在启动时使用AOF

高可用性

当您的数据集变得越来越重要时,您可能会考虑在没有任何人工干预的情况下实现高可用性,Redis会失败。Redis Sentinel仅提供:监视,通知和自动故障转移。另外,它还充当客户端的配置提供程序。

功能

  • 监视: Sentinel检查主机和从机是否按预期工作
  • 通知: Redis实例出现问题时通过API进行通知
  • 自动故障转移:如果主服务器无法按预期工作,则Sentinel可以启动故障转移过程。一个从站将升级为主站,其他从站会自动重新配置。通知应用程序要使用的新地址。
  • 配置提供程序:客户端可以使用Sentinel进行服务发现,以获取当前的Redis主服务器。

Redis slave and master

更多

Redis支持更多功能,其中一些是:

  • 事务
  • 订阅/分发
  • Lua脚本
  • KEY的过期时间
  • 开发和使用自己的模块
  • Redis集群
  • 通过CLI访问
  • 大多数编程语言可以与Redis一起使用
每日科技资讯 | 20200807
每日科技资讯 | 20200806
Tags: