SpringBoot个人博客集成Reids

SpringBoot个人博客集成Reids

本人为什么用Redis?

  • 所谓学以致用,竟然有学Redis,那就不妨在真实项目上实战一下(虽然用的不深)
  • redis强大,好用(前提要会用)

Redis是什么?

是完全开源免费的,用C语言编写的,是一个高性能的分布式内存数据库,基于内存运行,

并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一

Redis与其他key-value缓存产品有以下三个特点

  • Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。

  • Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash等数据库结构的

    存储。

  • Redis支持数据的备份,即master-salve模式的数据备份

应用场景

  • 为热点数据加速查询(主要场景),如热点商品、热点新闻、热点资讯、推广类等高访问量信息等。
  • 应用于任务队列,如秒杀、抢购、购票排队等。
  • 即时信息查询,如排行榜、各类网站访问统计、公交到站信息、在线人数信息(聊天室、网站)、设备信号等。
  • 时效性信息控制,如验证码控制、投票控制等。
  • 分布式数据共享,如分布式集群架构中的 session 分离以及消息队列、分布式锁等。

本机实战演示

本人用redis存储文章的浏览量,页面,刷新一次浏览量+1,设置规定时间把redis数据更新到mysql中

application.yml配置文件配置Redis信息

spring:
  ##redis配置
  redis:
    ##端口号
    host: 127.0.0.1
    port: 6379
    ##Redis连接密码默认未空
    password:
    jedis:
      pool:
        #连接池最大连接数(使用负值表示没有限制)
        max-active: 8
        #连接池最大阻塞等待时间(使用负值表示没有限制)
        max-wait: -1
        #连接池中最大空闲连接
        max-idle: 8
        #连接池中最小空闲连接
        min-idle: 0
    #连接超时时间(毫秒)
    timeout: 30000

编写Redis工具类(网上copy即可)根据自己需求在改一些东西就可以了

编写redis任务类(在规定的时间将redis的数据更新进mysql数据库中)

package com.wang.handler;

import com.wang.pojo.Blog;
import com.wang.service.blog.BlogService;
import com.wang.utils.RedisUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.Set;

/**
 * redis定时任务类
 * 设置规定的时间把redis数据更新到mysql数据库中
 */
@Component
@Slf4j
public class ScheduledTasks {

    @Autowired
    private RedisUtil redisUtil;

    @Autowired
    private BlogService blogService;

    //每天中午12点更新数据
    @Scheduled(cron = "0 0 12 * * ?")
    public void syncSeeCount(){
        Blog blog=null;
        log.info("===============开始同步博客文章访问量=================");
        Set<String> keys = redisUtil.keys("blog*");
        for (String key : keys) {
            blog=new      Blog().setId(Integer.parseInt(key.substring(4))).setSeeCount((Integer)(redisUtil.get(key)));
            blogService.editPBlog(blog);
        }
        log.info("===============本次同步博客文章访问量成功=================");
        log.info("===============结束 博客文章访问量=================");
    }
}

controller层代码

    @RequestMapping("/index")
    public String index(Model model,
                        @RequestParam(required=true,value="pageNum",defaultValue = "1") int pageNum,
                        @RequestParam(required=true,value="pageSize",defaultValue = "5") int pageSize){
        PageHelper.startPage(pageNum,pageSize);
        List<Blog> blogs = blogService.findAll();

        //将所有文章的浏览次数遍历在redis中
        for (Blog blog : blogs) {
            if(redisUtil.get("blog"+blog.getId())==null){
                //设置一天后过期
                redisUtil.set("blog"+blog.getId(),blog.getSeeCount(),86400);
            }
        }
        .........
    }
//文章内容页
@GetMapping("/blog/{id}")
    public String blog(Model model, @PathVariable("id") int id){
        Blog blog = siteService.findBlogById(id);
        //博客文章内容页显示的浏览量在redis中取
        //判断redis内存是否有该文章的浏览量
        if(redisUtil.get("blog"+id)!=null){
            //浏览量+1
            redisUtil.incr("blog"+id,1);
        }
        model.addAttribute("seeCount",redisUtil.get("blog"+id));
        model.addAttribute("blog",blog);


        model.addAttribute("comments",commentService.findCommentById(id));
        return "wangblog/artical";
    }

使用总结

  1. 这里安利一个网站https://space.bilibili.com/95256449/,B站狂神,我是在他B站发布的教学视频学的Redis,

    我的ssm框架,springboot,springcloud,elasticsearch等微服务框架都是从他那学的,虽然我暂时没在实战中用到过微服务技术,导致这些内容基本忘记了,不过狂神讲的是真心不错,后期我会重新补充一下。

  2. 本人为2021届应届毕业生,即将出来实习,其实自生技术并不算特别娴熟,希望能够在以后的时间多专研技术。

  3. 该Redis的简单应用,是在我的毕业设计上使用的,前面说到学以致用,就简单加上了,后期可能会使用到更多的技术把更多的东西存入的Redis缓存中,或者加如一些微服务技术(但是好像没那个必要,因为reids在多用户访问下才能体现出redis的有点,像我这种开发小白,后面把博客部署上线后,也是没多少访问量的)

这是我用springboot个人博客首页,样式很丑,由于本人前端实力有限页只能这样了
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值