Spring Boot + Redis的整合实现

news/2024/7/8 1:39:29 标签: spring boot, redis, 后端

Spring Boot + Redis的整合实现

在本篇博客中,我们将学习如何使用Spring Boot和Redis进行整合,实现一个简单的缓存功能。我们将分别介绍后端实现和前台实现,并提供详细的代码案例。

后端实现

首先,我们需要在Spring Boot项目中添加Redis的依赖项。在pom.xml文件中添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

接下来,我们需要在application.properties文件中配置Redis的连接信息。添加以下配置:

spring.redis.host=localhost
spring.redis.port=6379

然后,我们需要创建一个Redis配置类,用于配置RedisTemplate和Redis连接工厂。创建一个名为RedisConfig的类,代码如下:

@Configuration
@EnableCaching
public class RedisConfig {

    @Autowired
    private Environment environment;

    @Bean
    public JedisConnectionFactory jedisConnectionFactory() {
        RedisStandaloneConfiguration config = new RedisStandaloneConfiguration();
        config.setHostName(environment.getProperty("spring.redis.host"));
        config.setPort(Integer.parseInt(environment.getProperty("spring.redis.port")));
        return new JedisConnectionFactory(config);
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        return template;
    }
}

在以上代码中,我们使用@EnableCaching注解启用缓存功能。然后,我们通过jedisConnectionFactory方法创建一个Redis连接工厂,并将其配置为RedisTemplate的连接工厂。

现在,我们可以在服务类中使用Redis进行缓存操作。例如,我们可以在UserService类中添加一个方法,用于获取用户信息。首先,我们需要在方法上添加@Cacheable注解,并指定缓存的名称。然后,我们可以使用redisTemplate对象进行缓存操作。代码如下:

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    @Autowired
    private RedisTemplate<String, Object> redisTemplate;

    @Cacheable(value = "users")
    public User getUserById(Long id) {
        String key = "user:" + id;
        User user = (User) redisTemplate.opsForValue().get(key);
        if (user == null) {
            user = userRepository.findById(id).orElse(null);
            redisTemplate.opsForValue().set(key, user);
        }
        return user;
    }
}

在以上代码中,我们首先生成一个缓存的key,然后使用redisTemplate对象获取缓存中的用户信息。如果缓存中不存在用户信息,则从数据库中获取,并将其存入缓存中。

前台实现

在前台实现中,我们将使用Vue.js来实现一个简单的用户查询页面。首先,我们需要使用Vue CLI创建一个Vue.js项目。打开命令行工具,执行以下命令:

vue create frontend

然后,选择默认配置,等待项目创建完成。

接下来,我们需要在项目中添加axios和vue-router的依赖项。在命令行中执行以下命令:

cd frontend
npm install axios vue-router

然后,我们需要在src/main.js文件中添加axios和vue-router的配置。修改后的代码如下:

import Vue from 'vue';
import App from './App.vue';
import axios from 'axios';
import VueAxios from 'vue-axios';
import router from './router';

Vue.use(VueAxios, axios);

Vue.config.productionTip = false;

new Vue({
  router,
  render: h => h(App)
}).$mount('#app');

现在,我们可以在src/views目录下创建一个名为UserDetail.vue的文件,用于显示用户详情。代码如下:

<template>
  <div>
    <h2>用户详情</h2>
    <div v-if="user">
      <p>用户名:{{ user.username }}</p>
      <p>年龄:{{ user.age }}</p>
    </div>
    <div v-else>
      <p>用户不存在</p>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {
    return {
      user: null
    };
  },
  mounted() {
    this.getUser();
  },
  methods: {
    getUser() {
      const userId = this.$route.params.id;
      axios.get(`/api/users/${userId}`).then(response => {
        this.user = response.data;
      });
    }
  }
};
</script>

在以上代码中,我们通过this.$route.params.id获取到路由参数中的用户ID,然后使用该ID发送GET请求获取用户的详细信息,并将用户赋值给user变量。如果用户不存在,则显示"用户不存在"的提示信息。

接下来,我们需要在src/router/index.js文件中添加一个路由规则,用于匹配用户详情页面的URL。修改后的代码如下:

import Vue from 'vue';
import VueRouter from 'vue-router';
import UserList from '../views/UserList.vue';
import UserDetail from '../views/UserDetail.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/users',
    name: 'UserList',
    component: UserList
  },
  {
    path: '/users/:id',
    name: 'UserDetail',
    component: UserDetail
  }
];

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
});

export default router;

现在,我们可以重新启动后端服务和前台页面,测试用户查询和缓存功能。当用户点击用户列表中的"查看详情"按钮时,将跳转到用户详情页面,并显示用户的详细信息。当用户再次点击"查看详情"按钮时,将直接从缓存中获取用户信息,而不再访问数据库。

总结

通过本篇博客,我们学习了如何使用Spring Boot和Redis进行整合,实现一个简单的缓存功能。我们介绍了后端实现和前台实现,并提供了详细的代码案例。通过这个实例,我们可以更好地理解和应用Spring Boot和Redis的整合。希望本篇博客对你有所帮助!


http://www.niftyadmin.cn/n/5023366.html

相关文章

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型(6)

入门人工智能 ——使用 tensorflow 训练一个新闻分类模型&#xff08;6&#xff09; 入门人工智能 ——使用 tensorflow 训练一个新闻分类模型使用 tensorflow 训练一个新闻分类模型1. 安装TensorFlow和所需的依赖项。2. 打开收集的新闻数据集构建模型模型训练模型评估保存模型…

【infiniband】 MAD、 uMAD、Verbs、RDMACM

1. MAD&#xff08;Management Datagram&#xff09;&#xff1a; MAD是InfiniBand网络中用于管理和配置的数据报文。它包含了各种类型的管理操作&#xff0c;如查询端口状态、配置端口参数等。MAD通常用于执行网络管理任务。 2. uMAD&#xff08;User MAD&#xff09;&#…

labml-nn:带注释的 pyTorch 论文实现

作者&#xff1a;CSDN _养乐多_ labml-nn库集合了多种神经网络和相关算法的简单 PyTorch 实现&#xff0c;可以帮助我们快速开发深度学习模型。并配有逐行解释代码的文档。 一、网站 给大家分享一个深度学习模型代码逐行解释网站&#xff08;https://nn.labml.ai/&#xff…

优维低代码实践:菜单

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

网站不收录没排名降权怎么处理-紧急措施可恢复网站

网站降权对于SEO人员来说是非常致命的打击&#xff0c;因为网站一旦被搜索引擎降权&#xff0c;排名会严重地下降&#xff0c;网站的流量也会大幅下降&#xff0c;直接影响到收益。而且处理不好的话会导致恢复的时间周期无限拉长&#xff0c;所以网站被降权后我们要第一时间采取…

Matlab之DICOM(数字图像和通信医学)格式图像数据读取函数dicomread

一、DICOM是什么&#xff1f; DICOM是数字图像和通信医学格式的图像数据&#xff0c;在MATLAB中&#xff0c;可以使用dicomread函数读取DICOM格式的图像数据。 二、dicomread函数 使用方法如下&#xff1a; imageData dicomread(filename);其中&#xff0c;filename表示DI…

【数据仓库设计基础1】关系数据模型理论与数据仓库Inmon方法论

文章目录 一. 关系数据模型中的结构1&#xff0e;关系2&#xff0e;属性3&#xff0e;属性域4&#xff0e;元组5. 关系数据库6&#xff0e;关系表的属性7&#xff0e;关系数据模型中的键 二. 关系完整性1&#xff0e;空值&#xff08;NULL&#xff09;2&#xff0e;关系完整性规…

出行计划(2023寒假每日一题 16)

最近西西艾弗岛上出入各个场所都要持有一定时限内的核酸检测阴性证明。 具体来时&#xff0c;如果在 t t t 时刻做了核酸检测&#xff0c;则经过一段时间后可以得到核酸检测阴性证明。 这里我们假定等待核酸检测结果需要 k k k 个单位时间&#xff0c;即在 t k tk tk 时刻…