zoukankan      html  css  js  c++  java
  • 《Redis高阶应用》讲座总结

    • 数据结构延展

      • 常用数据结构:String,Hash,List,Set,Sorted Set(不聊这些)
      • 高级数据结构:Bitmaps,hyperloglog,GEO
    • 单机拓展到分布式

      • 为什么要分区:性能瓶颈、资源瓶颈、横向扩展
      • 分区方案
        • 客户端自定义hash计算Redis的地址
        • 一致性hash环
        • 槽(sharding)
    • 分布式管理

      • redis主从
          redis-server --port 6379 
          redis-server --port 6380 --slaveof 192.168.0.167 6379 
          redis-server --port 6381 --slaveof 192.168.0.167 6379
      
          主从复制是乐观复制,只响应sync,psync
          同步数据:RDB+缓冲区
          sync:全量同步
          Psync:断线重复制
      
      • redis哨兵
      sentinel monitor mymaster 192.168.0.167 6379 1
      sentinel monitor mymaster 127.0.0.1 6379 quorum:quorum为投票时通过的票数
      sentinel down-after-milliseconds mymaster 5000:ping,5000ms后认为宕机
      
      sentinel parallel-syncs mymaster num:当mymaster挂了后,num台从机向新的主机复制操作
      sentinel failover-timeout mymaster times:通常被解释成故障转移超时时间,但实际上它作用于故障转移的各个阶段:    
          1. 选出合适从节点。     
          2. 晋升选出的从节点为主节点。     
          3. 命令其余从节点复制新的主节点。     
          4. 等待原主节点恢复后命令它去复制新的主节点。 
      
      
      • redis集群
      创建集群:
      ./redis-trib.rb create --replicas 1 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385
      
      添加节点:
      ./redis-trib.rb add-node 127.0.0.1:7001 127.0.0.1:6380
      ./redis-trib.rb reshard 127.0.0.1:7001 
      
      删除节点:
      ./redis-trib.rb reshard 127.0.0.1: 6383
      ./redis-trib.rb del-node  127.0.0.1: 6383 node_id
      
      切换为从节点:
      redis-cli -c -p 7001 cluster replicate node_id
      
      
    • 高并发项目中的缓存策略

      • 缓存淘汰
        • noeviction:当内存不足以容纳新写入数据时,新写入操作会报错。
        • allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key。
        • allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key。
        • volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key。
        • volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key。
        • volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除。
      • 缓存粒度控制
        • 全部数据
        • 部分数据
      • 防止缓存雪崩
        • 缓存空对象
        • 布隆过滤器
      • 热数据更新
        • 使用消息队列进行异步数据更新
  • 相关阅读:
    一元运算符重载 前置和后置++ --(这种一般用成员函数来实现重载)
    运算符中的二元重载,为什么要调用友元函数而不是全局函数的问题
    关于数组的封装不知道为什么错了,具体代码如下
    关于对象的动态建立和释放
    关于构造函数中调用构造函数的危险
    关于析构函数,构造函数匿名对象的总结,以厚忘了,可以回来观看很全
    关于深拷贝和浅拷贝的疑问
    构造函数的调用大全
    构造函数的调用(其中不包括赋值构造函数)
    LeetCode:Add Digits
  • 原文地址:https://www.cnblogs.com/phonecom/p/10997557.html
Copyright © 2011-2022 走看看