02.26 一文带你深入了解Redis高性能缓存

主要内容:

  • Redis简介
  • Redis特性
  • 其他缓存对比
  • Redis集群(主从复制,Sentinel,Cluster)
  • Redis应用场景
  • Redis常用客户端
  • Redis功能演示
  • Redis流量监控

Redis简介

是一个开源的(BSD许可)使用ANSIC语言编写的,内存中的数据结构存储系统(key-value),它可以用作数据库、缓存和消息中间件,它使用字典结构存储数据,它支持多种类型的数据结构,如宇符串(strings) ,散列(hashes) ,到表(lists) ,集合(sets) ,有序集合(sorted sets) ,bitmaps, hyperloglogs 和地理空间_ (geospatial) 索引半径查询。Redis 内置了复制(replication) ,LUA脚本[Lua>

Memcached VS Redis对比

1.性能上:

Redis只使用单核,而Memcached可以使用 多核,所以平均每一个核上Redis在存储小數据时比Memcached性能更高。而在100k以上的数据中,

Memcached性能要高于Redis.

2.内存空间和数据量大小:

Memcached可以修改最大内存,采用LRU算法。Memcached单个key-value大小有限,一个value最大 只支持1MB,而Redis最大 支持512MB

3.操作便利上:

Memcached数据结构单一,而Redis支 持更加丰富的数据类型,在服务器端直接对数据进行丰富的操作,这样可以减少网络|0次数和数据体积。

4.可靠性上:

MemCached不支持数据持文化,断电或重启后数据消失。Redis支 持数据持久化和数据恢复和集群,允许单点故障。

5.应用场景:

Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息,好友信息、文章信息等)。

Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性.读写要求都很高)。

Redis安装部署

  1. 单点
  2. 主从复制Replication
  3. 高可用Sentinel
  4. 集群Cluster

1、Redis 主从复制

1.1、主从复制Replication:

1.一个redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称为Slaves

2.只要网络连接正常,Master会一直将自己的数据更新同步给Slaves, 保持主从同步

3.只有Master可以执行写命令,Slaves只能执行读命令

1.2、主从复制问题:

1.Master下线,无法执行写请求

2.以上过程都是手工完成,无法自动Failover操作

一文带你深入了解Redis高性能缓存


2、Redis Sentinel

高可用Sentinel

1. 监控( Monitoring):Sentinel 会不断地检查主服务器和从服务器是否运作正常。

2. 提醒( Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员

或者其他应用程序发送通知。

3.自动故障迁移( Automatic failover):当主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。

一文带你深入了解Redis高性能缓存

sentinel.conf 配置如下所示:

  • sentinel monitor mymaster 127.0.0.1 6379 1
  • sentinel down-after-milliseconds mymaster 60000
  • sentinel failover-timeout mymaster 180000
  • sentinel parallel-syncs mymaster 1

启动 Sentinel:

启动方式一:redis-sentinel /path/to/sentinel.conf

启动方式二: redis-server /path/to/sentinel.conf –sentinel

一文带你深入了解Redis高性能缓存

3、Redis Cluster集群

Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,必须将这些独立的节点连接起来,构成一个包含多个节点的集群。

1. 3.0 version 支持

2. Redis集群无中心节点

3. 由多个Redis服务器组成的分布式网络服务集群

4. 每个Redis服务器被称为节点Node,节点之间会相互通信( gossip)协议,两两相连

一文带你深入了解Redis高性能缓存

4、Redis Cluster集群原理

4.1、Redis集群分片

1. redis集群中整个数据库被分为 16384个槽位Slot,所有key都会是这些slot中的一个,key的槽位计算公式为slot_number=crc16(key)%16384,其中crc16为16位的循环冗余效验和函数

2. 集群中的每个主节点都可以处理0个至16383个槽,当16384个槽位都有某个节点在负责处理时,集群进入上线状态,并开始处理客户端发送的命令请求

4.2、举例

1. 三个主节点7000,7001,7002平均分配16384个slot槽位

2. 节点7000指派的槽位为0至5460

3. 节点7001指派的槽位为5461至10922

4. 节点7002指派的槽位为10923至16383

由于内容过多,篇幅限制,小编已经把剩下的内容整理成了一份PDF文档,有需要的朋友可以帮忙转发一下文章并关注我,后台私信【redis文档】即可免费获取

一文带你深入了解Redis高性能缓存


一文带你深入了解Redis高性能缓存

一文带你深入了解Redis高性能缓存


分享到:


相關文章: