• 数据结构延展

    • 常用数据结构: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优先移除。
    • 缓存粒度控制
      • 全部数据
      • 部分数据
    • 防止缓存雪崩
      • 缓存空对象
      • 布隆过滤器
    • 热数据更新
      • 使用消息队列进行异步数据更新

《Redis高阶应用》讲座总结的更多相关文章

  1. Redis 高阶数据类型重温

    今天这个专题接着上一篇 Redis 的基本数据类型 继续讲解剩下的高阶数据类型:BitMap.HyperLogLog 和 GEO hash.这些数据结构的底层也都是基于我们前面说的 5 种 基本类型, ...

  2. Java高阶语法---transient

    背景:听说transient Java高阶语法是挺进BAT必经之路. transient: Java中transient 关键字的作用,简单的说就是让某些被修饰的成员属性变量不被序列化. 这又扯到了序 ...

  3. Python学习笔记【第六篇】:迭代器、生成器、高阶函数、装饰器

    迭代器 迭代器是访问集合元素的一种方式,迭代器从对象的第一个元素开始访问,知道所有元素被访问完成.迭代器只能往前访问,不能通过索引访问. 类型内部使用__iter__()方法转为迭代器,使用__nex ...

  4. docker 系列 - Dock高阶知识点文章汇集

    docker 技术已经研究了一段时间, 基本的知识点和使用场景比较清楚了, 还有一些比较高阶的内容未曾尝试, 将来工作中如果能用到, 再深入研究吧. 这篇博文汇总了一些有用的文章链接. ======= ...

  5. python开发基础04-函数、递归、匿名函数、高阶函数、装饰器

    匿名函数 lamba lambda x,y,z=1:x+y+z 匿名就是没有名字 def func(x,y,z=1): return x+y+z 匿名 lambda x,y,z=1:x+y+z #与函 ...

  6. 08 . Python3高阶函数之迭代器、装饰器

    Python3高阶函数之迭代器.装饰器 列表生成式 推导式就是构建比较有规律的列表,生成器. 孩子,我现在有个需求,看列表[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],我要求你把列表里 ...

  7. c#语言-高阶函数

    介绍 如果说函数是程序中的基本模块,代码段,那高阶函数就是函数的高阶(级)版本,其基本定义如下: 函数自身接受一个或多个函数作为输入. 函数自身能输出一个函数,即函数生产函数. 满足其中一个条件就可以 ...

  8. swift 的高阶函数的使用代码

    //: Playground - noun: a place where people can play import UIKit var str = "Hello, playground& ...

  9. JavaScript高阶函数

    所谓高阶函数(higher-order function) 就是操作函数的函数,它接收一个或多个函数作为参数,并返回一个新函数. 下面的例子接收两个函数f()和g(),并返回一个新的函数用以计算f(g ...

随机推荐

  1. hibernate中session的管理方式

    package loaderman.c_session; import loaderman.b_second_cache.Dept; import loaderman.b_second_cache.E ...

  2. 数据分析 - pandas 模块

    数据读取结构 -  DataFrame Series (collection of values) DataFrame (collection of Series objects) Panel (co ...

  3. HBase管理与监控——内存调优

    HMaster 没有处理过重的负载,并且实际的数据服务不经过 HMaster,它的主要任务有2个:一.管理Hbase Table的 DDL操作, 二.region的分配工作,任务不是很艰巨. 但是如果 ...

  4. Spring-Kafka —— 消费如何达到最高的吞吐量

    首先简单的介绍一下消费者对topic的订阅.客户端的消费者订阅了topic后,如果是单个消费者,那么消费者会顺序消费这些topic分区中的数据,如果是创建了消费组有多个消费者,那么kafak的服务端将 ...

  5. JavaScript之屏幕上下左右滑动监听

    前言 存在这么一个需求,根据用户在屏幕不同的滑动方向(上.下.左.右),使用js脚本判断出不同的滑动行为,更新网页为不同的界面. 源码 参考了博文[1]的源码,但由于存在一些漏洞,比如:上下滑动事件监 ...

  6. 【JVM学习笔记】扩展类加载器

    扩展类加载器独有的特点,代码如下 public class Sample { } public class Test { static { System.out.println("Test ...

  7. Python list、tuple、dict区别

    Dictionary 是 Python 的内置数据类型之一, 它定义了键和值之间一对一的关系. 每一个元素都是一个 key-value 对, 整个元素集合用大括号括起来 您可以通过 key 来引用其值 ...

  8. 前端学习(一) body标签(下)

    今日主要内容: 列表标签 <ul>.<ol>.<dl> 表格标签 <table> 表单标签 <fom> 一.列表标签 列表标签分为三种. 1 ...

  9. 三、使用VSCode配置简单的vue项目

    由于最近要使用的项目框架为前后端分离的,采用的是vue.js+webAPI的形式进行开发的.因为之前我没有接触过vue.js,也只是通过视频文档做了一些简单的练习.今天技术主管说让大家熟悉下VSCod ...

  10. 再次挑戰UCOSII内核源码

    上次打算看UCOSII(嵌入式实时操作系统)源码还是在大四下学期,当时搜集了很多资料源代码.文档.电子书.结果半路放弃了,究其原因  1.知识原因,虽然已经使用C语言一段时间,但是基础并不好,并没有参 ...