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优先移除。
      • 缓存粒度控制
        • 全部数据
        • 部分数据
      • 防止缓存雪崩
        • 缓存空对象
        • 布隆过滤器
      • 热数据更新
        • 使用消息队列进行异步数据更新
  • 相关阅读:
    ACM/ICPC 之 中国剩余定理+容斥原理(HDU5768)
    ACM/ICPC 之 三维计算几何+暴力枚举+判重(HDU5839)
    ACM/ICPC 之 有流量上下界的网络流-Dinic(可做模板)(POJ2396)
    ACM/ICPC 之 Dinic+枚举最小割点集(可做模板)(POJ1815)
    ACM/ICPC 之 DP解有规律的最短路问题(POJ3377)
    ACM/ICPC 之 DFS+SPFA-贪心+最短路(POJ2679)
    ACM/ICPC 之 靠墙走-DFS+BFS(POJ3083)
    maven的setting.xml配置文件详解(中文)
    高性能、高可用的分布式架构体系(有启发的)
    各种数据库再spring中的配置(转载)
  • 原文地址:https://www.cnblogs.com/phonecom/p/10997557.html
Copyright © 2011-2022 走看看