Redis介绍(二)
六 实现排序
1 有时候一个网页,比图说我们网盘可以查询保存时间按时间顺序显示,还有发的博客,也常常是按时间先后顺序排版!而有序的集合,常常使用场景是大数据排版,所以也很少取得全部数据!Redis认为,开发者在做完交集和并集运算后不需要直接获得全部结果!二是希望将其存进新的键中方便后续处理!
实现排序,就应该用到有序的集合类型。
2 sort命令 实现id由小到大排序!
七 redis可以实现任务队列
优点:松耦合 易于扩展
8 redis 集群
1 容量看:单个redis在性能上容易成为储存瓶颈所以需要数据分片 分担压力
2 结构看:redis单点故障问题,所以数据需备份到多个redis服务器!
8.1 复制
通过持久化功能,redis保证了即使在服务器重启后数据也不会丢失,或者减少损失! 做法是,将数据库复制多个副本以部署在不同的服务器。这样即使一台服务器出现故障,其他服务器怡然可以提供服务。
原理实现:
一个从数据库启动时,给主数据库发送SYNC命令,主数据库接手后,开始在后台保存快照,将保存快照期间接受到的命令缓存,完成后,redis将快照文件和所有缓存的命令发送给从数据(复制初始化),复制初始化1后,主数据库每当接收到写命令就会将命令同步给从数据库!从而保证主从一致的问题!
当网络波动后恢复后,会将期间执行的增删改命令重新传进从数据库!
当然,从数据库也还可以有其他从数据库!
8.2读写分离一致性
一般,为了缓解压力。主数据库用来写,从数据库用来读。
8.3 从数据库持久化
持久化比较消耗时间。Redis为了提高性能,一般主数据库禁用持久化,从数据库持久化。
当从数据库崩溃,连接后 可以直接从持久化内存中读取数据。
当主数据库崩溃,则:
1从数据库新选为主数据库
2老的主数据库连接上后,变成了从数据库,然后再同步回来!
8.4 哨兵
监听redis系统运行状况!
1 监控主数据库和从数据库是否正常运行!
2 主数据库出现故障,监听后,自动将从数据库转化为主数据库!
实现原理: 哨兵会连接主节点,同时监听多个主从,需要指定不同主从代号不同
每10s发动info信息,从主从节点获取info返回的结果,包括从节点状态,记录到哨兵内存
每秒想所有的集群节点发动心跳检测。
如果发现宕机:
1从节点宕机:哨兵在内存上记录一份宕机状态!
2 主节点宕机:
发起投票选举,让所有哨兵进程判断,过半投票。选出从节点升为主节点,
(可以在配置文件设置从节点优先级)
一旦重新选举完成,烧饼会修改从节点的redis。Conf文件。记录他是主节点,之前的主节点连接后,哨兵讲其变成新上任的主节点的从节点!
九 哨兵集群实现的分布式
Redis3.0 最大的特性就是支持集群,而且拥有单机同样的性能!同时在网络分区后能够提供一定的可访问性以及对主从数据库故障恢复的支持!
插槽的分配
在一个集群中,所有的键都会通过算法分配到16384个插槽中(通过键名进行CEC算法计算散列值,然后对16384取余),每个主数据库会负责一部分插槽。
槽道使用示意图: