主要内容:
- 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安装部署
- 单点
- 主从复制Replication
- 高可用Sentinel
- 集群Cluster
1、Redis 主从复制
1.1、主从复制Replication:
1.一个redis服务可以有多个该服务的复制品,这个Redis服务称为Master,其他复制品称为Slaves
2.只要网络连接正常,Master会一直将自己的数据更新同步给Slaves, 保持主从同步
3.只有Master可以执行写命令,Slaves只能执行读命令
1.2、主从复制问题:
1.Master下线,无法执行写请求
2.以上过程都是手工完成,无法自动Failover操作
2、Redis Sentinel
高可用Sentinel
1. 监控( Monitoring):Sentinel 会不断地检查主服务器和从服务器是否运作正常。
2. 提醒( Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员
或者其他应用程序发送通知。
3.自动故障迁移( Automatic failover):当主服务器不能正常工作时,Sentinel 会开始一次自动故障迁移操作,它会将失效主服务器的其中一个从服务器升级为新的主服务器,并让失效主服务器的其他从服务器改为复制新的主服务器;当客户端试图连接失效的主服务器时,集群也会向客户端返回新主服务器的地址,使得集群可以使用新主服务器代替失效服务器。
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
3、Redis Cluster集群
Redis提供的分布式数据库方案,集群通过分片来进行数据共享,并提供复制和故障转移功能。一个Redis集群通常由多个节点(node)组成,在刚开始的时候,每个节点都是相互独立的,它们都处于一个只包含自己的集群当中,要组建一个真正可工作的集群,必须将这些独立的节点连接起来,构成一个包含多个节点的集群。
1. 3.0 version 支持
2. Redis集群无中心节点
3. 由多个Redis服务器组成的分布式网络服务集群
4. 每个Redis服务器被称为节点Node,节点之间会相互通信( gossip)协议,两两相连
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文档】即可免费获取
閱讀更多 Java高級架構師 的文章