zoukankan      html  css  js  c++  java
  • redis和mysql 知识点

    redis是一个非关系性数据库

    数据类型

    string 字符串

    set key name

    可以存储任意内容 一个建值最大存储512MB

    hash

    hmset name key value

    hash 适合存储对象格式数据

    list

    从头到尾一次插入数据

    格式: lpush  name  value

    在 key 对应 list 的头部添加字符串元素

    格式: rpush  name  value

    在 key 对应 list 的尾部添加字符串元素

    格式: lrem name  index

    key 对应 list 中删除 count 个和 value 相同的元素

    格式: llen name  

    返回 key 对应 list 的长度

    Set

    sadd name value

    Redis的Set是string类型的无序集合。

    zset

    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。

    不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。

    zset的成员是唯一的,但分数(score)却可以重复。

    redis持久化

    就是把内存数据写到磁盘上去 防止服务器宕机了内存数据丢失

    RDB(默认) 和AOF 

    功能核心函数rdbSave(生成RDB文件)和rdbLoad(从文件加载内存)两个函数

    每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作

    aof写入保存:

    WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件

    SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中。

    比较

    1、aof文件比rdb更新频率高,优先使用aof还原数据。

    2、aof比rdb更安全也更大

    3、rdb性能比aof好

    4、如果两个都配了优先加载AOF

    RESP 是redis客户端和服务端之前使用的一种通讯协议;

    RESP 的特点:实现简单、快速解析、可读性好

    Redis 有哪些架构模式?讲讲各自的特点

     单机版

    特点:简单

    问题:

    1、内存容量有限 2、处理能力有限 3、无法高可用。

    主从复制

    Redis 的复制(replication)功能允许用户根据一个 Redis 服务器来创建任意多个该服务器的复制品,其中被复制的服务器为主服务器(master),而通过复制创建出来的服务器复制品则为从服务器(slave)。 只要主从服务器之间的网络连接正常,主从服务器两者会具有相同的数据,主服务器就会一直将发生在自己身上的数据更新同步 给从服务器,从而一直保证主从服务器的数据相同。

    特点:

    1、master/slave 角色

    2、master/slave 数据相同

    3、降低 master 读压力在转交从库

    问题:

    无法保证高可用

    没有解决 master 写的压力

    哨兵

    Redis sentinel 是一个分布式系统中监控 redis 主从服务器,并在主服务器下线时自动进行故障转移。其中三个特性:

    监控(Monitoring):    Sentinel  会不断地检查你的主服务器和从服务器是否运作正常。

    提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。

    自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作。

    特点:

    1、保证高可用

    2、监控各个节点

    3、自动故障迁移

    缺点:主从模式,切换需要时间丢数据

    没有解决 master 写的压力

    使用过Redis做异步队列么,你是怎么用的?有什么缺点?

    一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。

    缺点:

    在消费者下线的情况下,生产的消息会丢失,得使用专业的消息队列如rabbitmq等。

    能不能生产一次消费多次呢?

    使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

    缓存穿透

    一般的缓存系统,都是按照key去缓存查询,如果不存在对应的value,就应该去后端系统查找(比如DB)。一些恶意的请求会故意查询不存在的key,请求量很大,就会对后端系统造成很大的压力。这就叫做缓存穿透。

    如何避免?

    1:对查询结果为空的情况也进行缓存,缓存时间设置短一点,或者该key对应的数据insert了之后清理缓存。

    2:对一定不存在的key进行过滤。可以把所有的可能存在的key放到一个大的Bitmap中,查询时通过该bitmap过滤。

    mysql

     

     

     

     

     

    ls:列出目录
    cp:复制
    rm:删除
    cat:将文件的内容打印到标准输出
    mkdir:建立目录
    tar:打包压缩
    ps:查看进程
    top:查看机器使用情况
    df:检查磁盘空间占用情况
    find:在指定路径下查找指定文件
    grep:过滤文本
    cd:改变当前工作目录
    mount:挂载/卸载指定的文件系统
    ifconfig:配置网络或显示当前网络接口状态
    telnet::远程登录

  • 相关阅读:
    [HDOJ1261]最少拦截系统
    Gym 100637F F. The Pool for Lucky Ones
    Codeforces Gym 100637A A. Nano alarm-clocks 前缀和处理
    HDU 1166 敌兵布阵 线段树
    【Tyvj1038】忠诚 线段树
    Codeforces Gym 100513G G. FacePalm Accounting
    Codeforces Round #313 (Div. 2)B.B. Gerald is into Art
    Codeforces Round #313 (Div. 2) D. Equivalent Strings
    Codeforces Round #313 (Div. 2) C. Gerald's Hexagon 数学
    Codeforces Round #313 (Div. 2) A. Currency System in Geraldion
  • 原文地址:https://www.cnblogs.com/ma--shuai/p/15055694.html
Copyright © 2011-2022 走看看