springboot集成redis—进行增加,更新,查询,批量删除等操作

     2022-04-17     731

关键词:

前言:最近工作中使用到了redis缓存,故分享一点自己总结的东西,这篇文章使用的是StringRedisTemplate进行学习,这里值的说的是,(1)StringRedisTemplate在进行批量删除操作时我们需对template进行序列化,(2)更新操作与添加操作一样,接下来上代码:
1.建立Spring boot项目,引入Redis依赖(pom.xml如下):

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.test</groupId>
    <artifactId>redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>redis</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

2.编写spring boot配置文件,这里我配置的内容简单,如需要其他的配置可以进官网去查

#Redis 
spring.redis.host=192.168.100.86
spring.redis.password=admin
spring.redis.port=6379

server.port=8081

3.接下里我们开始写测试
(1)建立实体类:
User:

package com.test.redis.entity;

public class User {
    private Integer id;
    private String name;
    private String password;

    public User() {
        super();
    }

    public User(Integer id, String name, String password) {
        super();
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
    }

}

(2)service层,主要对redis的各种操作方法进行定义
RedisService:

package com.test.redis.service;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.stereotype.Service;

@Service
public class RedisService {
    @Resource
    private StringRedisTemplate template;

    /**
     * 存储数据或修改数据
     * 
     * @param modelMap
     * @param mapName
     */
    public void setKey(String mapName, Map<String, Object> modelMap) {
        HashOperations<String, Object, Object> hps = template.opsForHash();
        hps.putAll(mapName, modelMap);
    }

    /**
     * 获取数据Map
     * 
     * @param mapName
     * @return
     */
    public Map<Object, Object> getMapValue(String mapName) {
        HashOperations<String, Object, Object> hps = this.template.opsForHash();
        return hps.entries(mapName);

    }

    /**
     * 获取数据value
     * 
     * @param mapName
     * @param hashKey
     * @return
     */
    public Object getValue(String mapName, String hashKey) {
        HashOperations<String, Object, Object> hps = this.template.opsForHash();
        return hps.get(mapName, hashKey);

    }

    /**
     * 批量删除缓存数据
     * 
     * @param keys
     */
    public void deleteData(List<String> keys) {
        // 执行批量删除操作时先序列化template
        template.setKeySerializer(new JdkSerializationRedisSerializer());
        template.delete(keys);
    }
}

(3)controller层代码,演示操作(添加与获取值):

package com.test.redis.web;

import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import com.test.redis.entity.User;
import com.test.redis.service.RedisService;

@Controller
public class UserController {

    private static final String mapName="mapName";
    @Autowired
    private RedisService redisService;

    @GetMapping( "/add.do")
    @ResponseBody
    public Map<Object, Object> addUser(HttpServletRequest request){
        Map<String, Object> modelMap=new HashMap<String,Object>();
        User user=new User();
        user.setName("hehename");
        user.setPassword("hehePassword");
        //存放hash值
        modelMap.put("name", user.getName());
        modelMap.put("password", user.getPassword());
        redisService.setKey(mapName, modelMap);
        //获取map集合
        Map<Object, Object> modelMap1= redisService.getMapValue(mapName);
        Object value= redisService.getValue(mapName, "name");
        System.out.println(" value : "+value);
        modelMap1.put("从缓存中根据key取到的value", value);
        return modelMap1;
    }

}

前台展示结果:
技术分享图片

(4)删除以及获取值操作:

@GetMapping( "/delete.do")
    @ResponseBody
    public Map<Object, Object> deleteUser(HttpServletRequest request){
        //获取即将删除的key值,这里我们做的批量删除
        List<String> keys=new ArrayList<>();
        keys.add("heheanme");
        //开始执行删除操作
        redisService.deleteData(keys);
        //获取map集合
        Map<Object, Object> modelMap1= redisService.getMapValue(mapName);
        Object value= redisService.getValue(mapName, "name");
        System.out.println(" value : "+value);
        modelMap1.put("从缓存中根据key取到的value", value);
        return modelMap1;
    }

前台显示结果:
技术分享图片

由此可见,操作成功

springboot集成redis完整实例

添加依赖:(SpringDataRedis)启动redis:配置文件中进行配置:redis基本使用思路:redis中不存在就查询数据库然后存入redis:查看日志:  查看详情

springboot集成redis

...是否运行成功➜dockerexec-itredisredis-cli127.0.0.1:6379>pingPONGSpringboot集 查看详情

springboot集成redis配置mybatis二级缓存(代码片段)

目录写在前面源码获取一、MyBatis缓存机制1.1、一级缓存1.2、二级缓存二、集成Redis2.1、安装Redis2.2、项目引入Redis2.2.1、Maven依赖2.2.2、配置application.yml2.2.3、配置序列化规则三、配置二级缓存2.1、开启二级缓存2.2、自定义缓存类2.3... 查看详情

springboot2.x:springboot集成redis

Redis简介什么是RedisRedis是目前使用的非常广泛的免费开源内存数据库,是一个高性能的key-value数据库。Redis与其他key-value缓存(如Memcached)相比有以下三个特点:1.Redis支持数据的持久化,它可以将内存中的数据保存在磁盘中,重... 查看详情

springboot集成redis基础入门(代码片段)

...式的数据备份更多redis相关文档请查看redis官方文档redis和springbootredis在springboot项目开发中是常用的缓存套件,常见使用的是spring-boot-starter-data-redisspringboot 查看详情

springboot使用redis对单个对象进行自动缓存更新删除(代码片段)

Springboot的项目搭建在此省略,pom文件依赖什么的就不说了创建一个实体类@Data@EqualsAndHashCode(callSuper=true)@Accessors(chain=true)@ApiModel(value="ERepository对象",description="题库 查看详情

springboot集成redis并实现主从架构(代码片段)

...会写bug的程序猿!今天这篇文章来和大家分享一下在springboot中如何集成redis,并实现主从架构,进行数据的简单存储。我的Redis是部署在Windows系统下面的,所以在这里附上Redis在Windows环境下的安装地址和安装说明... 查看详情

springboot之集成redis:springcache+redis

前言来啦老铁!笔者学习SpringBoot有一段时间了,附上SpringBoot系列学习文章,欢迎取阅、赐教:5分钟入手SpringBoot;SpringBoot数据库交互之SpringDataJPA;SpringBoot数据库交互之Mybatis;SpringBoot视图技术;SpringBoot之整合Swagger;SpringBoot之junit单... 查看详情

springboot集成redis

SpringBoot集成Redis引入依赖pom文件引入Redis依赖spring-boot-starter-data-redis<!--redis依赖配置--><dependency>  <groupId>org.springframework.boot</groupId>  <artifactId&g 查看详情

springboot教程(十四)|springboot集成redis(全网最全)(代码片段)

...候,我们可以选择直接集成这些原生客户端。但是在springBoot中更常见的方式是集成spring-data-redis,这是spring提供的一个专门用来操作redis的项目,封装了对redis的常用操作,里边主要封装了jedis和lettuce两个客户端。... 查看详情

springboot集成redis(代码片段)

SpringBoot集成Redis文章目录SpringBoot集成Redis1、概述2、测试Redis3、自定义redisTemplate1、概述Redis是什么?Redis(RemoteDictionaryServer),即远程字典服务。是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日... 查看详情

springboot|集成redis

Windows下安装:https://github.com/MicrosoftArchive/redis/releases zip下就解包到自定义目录下,msi就跟着步骤安装进入安装目录下运行命令,redis-server.exeredis.windows.conf如上图就表示成功安装在springboot集成redis:doc:https://spring.io/projects/sp 查看详情

7springboot与redis集成

1.7SpringBoot与Redis集成简介继续上篇的MyBatis操作,详细介绍在SpringBoot中使用RedisCacheManager作为缓存管理器,集成业务于一体。完整源码:Spring-Boot-Demos1.7.1创建spring-boot-redis项目pom.xml文件如下:<?xmlversion="1.0"encoding="UTF-8"?><pro... 查看详情

springboot-集成redis

这里主要讲述SpringBoot集成Redis的使用,因此不再详述Redis,如果需要请自行百度博主也有写过Redis文章,如下Redis入门简介Redis(RemoteDictionaryServer)译为“远程字典服务”Redis是一个用C语言编写的、开源的、基... 查看详情

springboot集成redis实战操作

最近在使用SpringBoot,发现其功能真是强大,可以快速的集成很多的组件功能,非常方便:今天就来介绍下,如何集成Redis。定义Redis是一个高性能的key-value数据库。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(... 查看详情

springboot集成redis

前提:你已经安装了Redis1、创建一个springboot工程2、pom引入依赖:spring-boot-starter-data-redis<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</ar 查看详情

springboot2.x集成redis缓存(代码片段)

SpringBoot集成Redis缓存在此章,我们将SpringBoot集成Redis缓存,Redis是一个开源的,基于内存的数据结构存储,可以用作数据库、缓存和消息代理,在本章仅讲解缓存集成。准备工作当前项目工具及环境开发工具IDEA2020.3依赖管理MavenS... 查看详情

springboot2.0-集成redis

序最近在入门SpringBoot,然后在感慨SpringBoot较于Spring真的方便多时,顺便记录下自己在集成redis时的一些想法。1、从springboot官网查看redis的依赖包<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-st 查看详情