Redis

1、JVM内置缓存:值存放在JVM缓存中,容易造成内存溢出,没有持久化机制,存在多服务器数据不能共享
    mybatis二级缓存机制oscache
    hibernate二级缓存机制escache
    oscache主要针对数据库访问层
    escache主要针对页面缓存
2、关系型数据库特征:主外键、SQL语句、存放在硬盘上边
    非关系型数据库:值存放在内存中
3、Redis的应用----token生成、session共享、分布式锁、自增id、验证码
    Redis一定要设置有效期。
    Redis五种基本数据类型:string、set、zset、hash、list
    Redis存放list数据类型用lpush   获取lrange
        set数据类型存放用asdd  不允许重复  查询使用SMEMBERS  无序的
        zset数据类型存放用zadd  不允许重复   能够指定顺序
        string数据类型存放用set    查询get
        hash数据类型存放 HMSET
4、数据库中的值与Redis值不同怎么解决
    清空缓存,再同步数据库中的值,缓存到redis
5、Redis中怎么存放对象?用什么数据类型    
    使用string类型,采用json格式,将对象转换为json格式存放在redis中,从redis中获取到json值,反序列化成对象。
6、Redis的主从机制、哨兵机制和高可用的实现
    搭建Redis集群缓解数据库压力和内存压力时,
    Redis会有一个主从机制,主(master)服务器有读和写的权限,从(slave)服务器只有读的权限
    Redis的哨兵机制会时刻监听redis集群的状态,如果主服务器宕机了,哨兵机制会通过投票选举一个主服务器(高可用的体现),如果全部集群全部宕机了,使用keepalived监听,完成自动重启,如果重启失败,用邮件方式进行通知。
    使用keepalived监听,实现服务器重启
    keepalived加上哨兵机制才是Redis高可用的实现。
    keepalived是一个重启脚本,做监听程序。
7、Redis主从复制
    从服务器启动的时候,会自动把主服务器的快照文件(rdb)拿过来,实时更新的。
8、同步接口中,如果网络延迟,可能会产生重复提交,接口重复提交如何解决
    使用token(令牌):调用请求,获取一个token令牌,这个令牌只能使用一次,当这个令牌使用第二次会报错。

9、Activemq中途宕机了如何解决?

  Activemq提供了一种失效转移策略。失效转移提供了在传输层上重新连接到其他任何传输器的功能,只需在uri中配置即可,Failover:(uri1.....n)。如果发现uri失效了,它会向其他可连接的的uri列表中重连,为了负载均衡策略,不会一直连接第二个,随即连接。

-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一、高并发解决方案
    1、数据库解决方面
        1.首先使用慢查询定位sql语句
        2.进行sql语句优化
        3.减少全表扫描
    sql语句优化:使用索引、分表分库(水平+垂直分割)、
        主从复制(MySQL集群时):使用二进制文件进行主从复制
        读写分离
    2、缓存机制
        1.使用redis缓存数据库内容
        2.redis集群(使用主从复制实现redis集群)
        3.redis实现读写分离
        4.使用redis的哨兵机制监听
    3、服务器端
        反向代理、配置负载均衡、使用集群、CDN加速(多个地区进行部署服务器,从近访问服务器,减少带宽传输)
    4、客户端
        减少请求次数、使用Ajax异步加载、动静分离
    5、项目优化
        进行代码重构
        JVM调优:主要使用垃圾回收机制,配置JVM参数配置
        项目采用微服务和分布式架构

posted @ 2019-08-07 15:44  我是一个菜鸟啊!  阅读(138)  评论(0编辑  收藏  举报