redis集群与高性能

集群

主从架构

  • 配置 replicaof
  • 只能提供简单的备份。无法自动选举
  • 基于rbd快照去做异步复制
  • 主从复制风暴,多个从几点从主节点复制数据

哨兵架构

  • 每个哨兵都是一个redis实例
  • 当半数以上的哨兵节点发现某个主节点挂了,就会进行自动选举
  • 只有高可用的功能,但是没有分片的功能

集群架构

  • 16384个槽位进行分片,2的14次方用bitmap表示需要2k。(为啥不用16次方即8k的槽位,因为集群中的节点需要互相通信,各个节点会把自己负责的槽位信息用2k大小的bitmap发送给其他节点,2k相对于8k在满足期望的条件下减少了网络通信的压力)
  • 客户端使用CRC16算法定位到指定的槽位
  • 客户端本地会存储一份服务器的槽位映射表,如果错误的话,服务端会返回moved错误重定向,客户端进行重新访问并更新本地映射表。
  • min-replicas-to-write 3 至少有多少节点写入成功,才返回给客户端成功,可有效防止脑裂问题
  • cluster-require-full-coverage yes 集群是否完整才能对外提供服务,为no时,表示当负责一个插槽的主库下线且没有相应的从库进行故障恢复时,集群仍然可用。如果为yes则表示集群不可用。
  • 集群批量操作,例如mset key1 val1 key2 val2。redis集群默认只支持所有的key落在同一个slot的情况,如果有多个key一定要使用mset命令在集群上操作,则可以在key的前面加上{xx},这样参数数据分片hash计算的只会是大括号里面的值,这样能确保不同的key落在同一个slot里面去,示例:mset {user1}:name xx {user1}:age 18

高性能

redis是单线程吗

redis的单线程主要是指redis的网络io和键值对读取是由一个线程来完成的,这也是redis对外提供键值对服务的主要流程。但是redis的其他功能,比如持久化、异步删除、集群数据同步等,其实都是额外的线程完成的。最新版本中网络io也可以由多个线程处理

redis单线程为什么还能那么快

  • 基于内存,所有运算都是内存级别的运算
  • 单线程避免了多线程切换性能损耗问题,所以应该避免那种耗时的操作如keys *,可以用scan+游标cursor代替keys命令,但是这个命令会有不精确的问题
  • redis采用epoll实现io多路复用。将连接信息和事件信息放入队列中。由事件分配器将事件发给事件处理器
  • 高效的数据结构,根据不同的类型设计不同的存储结构,最大程度的节省内存,提高内存的使用率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Celery是一个Python分布式任务队列框架,而Redis是一个高性能的键值存储数据库。当它们结合在一起时,可以构建一个强大的分布式任务队列系统。 Celery和Redis集群的结合可以提供以下功能: 1. 异步任务处理:Celery可以将任务异步地发送到Redis集群中,然后由工作节点处理。这样可以避免任务阻塞主线程,提高系统的响应速度。 2. 分布式任务调度:Redis集群可以作为Celery的消息代理,负责存储和传递任务消息。多个Celery工作节点可以从Redis集群中获取任务,并进行并行处理。 3. 任务结果存储:Celery可以将任务的执行结果存储在Redis集群中,以便后续查询和使用。 4. 任务队列监控:Redis集群可以提供监控和管理Celery任务队列的功能,例如查看队列长度、清理过期任务等。 为了搭建Celery和Redis集群,你需要进行以下步骤: 1. 安装和配置Redis集群:根据你的需求,可以选择使用Redis Sentinel或Redis Cluster来搭建Redis集群。配置好集群后,确保所有节点都正常运行。 2. 安装和配置Celery:使用pip安装Celery库,并在Celery配置文件中指定Redis集群的连接信息。 3. 编写任务代码:定义你的任务函数,并使用Celery的装饰器将其注册为Celery任务。 4. 启动Celery工作节点:在每个工作节点上启动Celery的工作进程,它们将从Redis集群中获取任务并执行。 5. 发布和调度任务:在你的应用程序中,使用Celery的API将任务发布到Redis集群中,并设置任务的调度规则。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值