1、文章详情页面静态化方案
    image-20210912162055501-16376701076452.png
    为了提高页面加载速度,减轻数据库的压力,我们在项目利用freemarker模板引擎,将文章页面静态化,以文章id为名称生成html页面,存储到minio中;

    2、freemarker介绍
    freemarker时一种模板引擎
    常用语法与指令:list map 遍历
    <#list stus as stu>

    ${stu_index+1}
    ${stu.name}
    ${stu.age}
    ${stu.money}

    </#list>
    ${stuMap[‘stu1’].name :${stuMap.stu2.name}
    <#if 表达式>true内容显示</#if> <#if stus??> ${集合名?size} ${today?datetime/date/time/string(“yyyy年MM月”)}

    使用方法:
    1、引依赖,注入Configuration ,通过Configuration获取模板,默认去resource下的templates文件夹中读取指定名称的模板;
    2、准备数据,创建一个map来接收,根据模板中所需的参数,以key-value形式存入map中;
    3、替换数据,通过template的proccess方法

    3、基于redis实现用户关注和取关功能
    1、参数校验:是否已登录、操作类型是否为0或1、是否是自己关注自己
    2、判断是否已关注,通过zscore查询得分,null为未关注
    3、根据操作类型0 或 1 保存或删除redis数据

    4、redis常见数据结构
    5种,String hash(类似map) set zset(score—>有序,唯一) list

    5、redis持久化机制

    6、redis事务机制
    7、redis项目中应用场景
    在项目中我们主要用redis存储用户关注文章作者的数据,因为用户关注频繁操作,并且数据量不是很大
    8、redis的高可用架构 主从 哨兵 集群
    9、redis中 key过期删除策略
    10、redis中 内存淘汰策略