软件架构-Nosql之redis

主要从0到1熟悉redis,之前也简单的介绍过redis,但是根本不够深入,这次深入的一起解析下这个redis。

  • 总结

完全开源免费的、高性能的 key-value 数据库.支持数据持久化、支持多种数据结构存储。可能老铁都有感觉,系统比较慢,不是cpu和内存的问题,硬盘是机械的,如果换个固态效果很明显。为什么mac本那么快,新的mac本都是固态硬盘的。办公室有个机械硬盘的imac慢的一笔。
redis数据的存储:内存
mysql数据的村塾:硬盘

  • 适用场景

适用场景:存储缓存、投票、会话 session、排行榜(如果是mysql,要使用order by,group by 才可以查询的到)、计数器、发布订阅等。

  • Redis 单机版

在一台机器部署了redis应用。

特性

  1. 复制(Replication)扩展系统对于读的能力
  2. 哨兵(Sentinel) 为服务器提供高可用特性,减少故障停机出现
  3. 集群(Cluster) 扩展内存容量,增加机器,提高性能读写能力和存储以及提供高可用特性。 人多力量大,合理化的分工,分工明确,效率增加。
  • 复制

Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的 络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。

特点

  1. 保证高可用
  2. 监控各个节点
  3. 自动故障迁移

缺点:主从模式,切换需要时间丢数据没有解决 master 写的压力。

  • 集群(proxy )

之前的情况都是有个proxy层,类型先过个nginx的代码。通过proxy层进行转向。负载均衡,分片来使用的。需要指定master。

特点

  1. 多种 hash 算法:MD5、CRC16、CRC32、CRC32a、hsieh、murmur、Jenkins。
  2. 支持失败节点自动删除。
  3. 后端 Sharding 分片逻辑对业务透明,业务方的读写方式和操作单个 Redis 一致。

缺点

  1. 增加了新的 proxy,需要维护其高可用。
  2. failover 逻辑需要自己实现,其本身不能支持故障的自动转移可扩展性差,进行扩缩容都需要手动干预。
  • 集群(直连)

Redis 3.0的最重要特征是对Redis集群的支持,此外,该版本相对于2.8版本在性能、稳定性等方面都有了重大提高。类似zookeeper是通过选举来的。master自动指定的。

软件架构-Nosql之redis

特点

  1. 无中心架构(不存在哪个节点影响性能瓶颈),少了 proxy 层。
  2. 数据按照 slot 存储分布在多个节点,节点间数据共享,可动态调整数据分布。
  3. 可扩展性,可线性扩展到 1000 个节点,节点可动态添加或删除。
  4. 高可用性,部分节点不可用时,集群仍可用。通过增加 Slave 做备份数据副本
  5. 实现故障自动 failover,节点之间通过 gossip 协议交换状态信息,用投票机制完成 Slave
    到 Master 的角色提升。

缺点

  1. 资源隔离性较差,容易出现相互影响的情况,通过上边的图也是可以看到的,redis之前的关系很复杂。
  2. 数据通过异步复制,不保证数据的强一致性。
  3. 最低要求三主三从,不适合小公司。
  • 自研型

国美:Gcache
京东:JimDB

PS:这次主要说说redis集群的理论,下次一起实践下。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年6月15日
下一篇 2021年6月15日

相关推荐