当前位置: 首页 > news >正文

SpringBoot系列之集成Jedis教程

SpringBoot系列之集成Jedis教程,Jedis是老牌的redis客户端框架,提供了比较齐全的redis使用命令,是一款开源的Java 客户端框架,本文使用Jedis3.1.0加上Springboot2.0,配合spring-boot-starter-data-redis使用,只给出简单的使用demo

软件环境:

  • JDK 1.8

  • SpringBoot 2.2.1

  • Maven 3.2+

  • Mysql 8.0.26

  • spring-boot-starter-data-redis 2.2.1

  • jedis3.1.0

  • 开发工具

    • IntelliJ IDEA

    • smartGit

项目搭建

使用Spring官网的https://start.spring.io快速创建Spring Initializr项目
在这里插入图片描述
选择maven、jdk版本
在这里插入图片描述

选择需要的Dependencies,选择一下Spring Data Redis
在这里插入图片描述
点击next就可以生成一个Springboot项目,不过jedis客户端配置还是要自己加的,所以对pom文件做简单的修改,spring-boot-starter-data-redis默认使用lettuce,所以不用的可以exclusion,然后再加上jedis的配置

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><exclusions><exclusion><groupId>io.lettuce</groupId><artifactId>lettuce-core</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId>
</dependency>

新建一个application.yml配置文件,加上redis一些配置

spring:redis:port: 6379host: 127.0.0.1password:timeout: 3000database: 1jedis:pool:max-idle: 8max-active: 8min-idle: 2

新增Redis配置,配置RedisConnectionFactory JedisConnectionFactoryJedisPoolRedisTemplate需要用到也可以配置一下

package com.example.jedis.configuration;import lombok.extern.slf4j.Slf4j;
import org.apache.commons.pool2.impl.GenericObjectPool;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnection;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;@Configuration
@ConditionalOnClass({GenericObjectPool.class, JedisConnection.class, Jedis.class})
@EnableRedisRepositories(basePackages = "com.example.jedis.repository")
@Slf4j
public class RedisConfiguration {@Beanpublic JedisPoolConfig jedisPoolConfig() {return new JedisPoolConfig();}@Beanpublic JedisPool jedisPool() {return new JedisPool(jedisPoolConfig());}@Beanpublic RedisConnectionFactory jedisConnectionFactory() {return new JedisConnectionFactory();}@Beanpublic RedisTemplate<String, Object> redisTemplate() {RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();template.setConnectionFactory(jedisConnectionFactory());template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(new GenericJackson2JsonRedisSerializer());return template;}
}

写一个实体类,@RedisHash定义存储的hash key

package com.example.jedis.model;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.data.redis.core.RedisHash;import java.io.Serializable;@RedisHash("user")
@Data
@SuperBuilder(toBuilder = true)
@EqualsAndHashCode
@AllArgsConstructor
@NoArgsConstructor
public class UserDto implements Serializable {private static final long serialVersionUID = 5962011647926411830L;public enum Gender {MALE, FEMALE}private Long id;private String name;private Gender gender;}

使用Sping Data Redis的API来实现一个CRUD接口

package com.example.jedis.repository;import com.example.jedis.model.UserDto;
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;@Repository
public interface UserRepository extends CrudRepository<UserDto, Long> {
}

写一个测试类来进行测试,ContextConfiguration指定一个配置类

package com.example.jedis;import cn.hutool.core.util.IdUtil;
import com.example.jedis.configuration.RedisConfiguration;
import com.example.jedis.model.UserDto;
import com.example.jedis.repository.UserRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.test.annotation.DirtiesContext;
import org.springframework.test.context.ContextConfiguration;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;@SpringBootTest
@ContextConfiguration(classes = RedisConfiguration.class)
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_CLASS)
class SpringbootJedisApplicationTests {@AutowiredJedisPool jedisPool;@AutowiredRedisTemplate redisTemplate;@AutowiredUserRepository userRepository;@Testvoid contextLoads() {Jedis jedis= jedisPool.getResource();jedis.set("tKey","你好呀");jedis.close();}@Testvoid testRedisTemplate() {redisTemplate.opsForValue().set("rtKey","你好呀");}@Testvoid testCrud() {final UserDto userDto = UserDto.builder().id(IdUtil.getSnowflake().nextId()).name("用户1").gender(UserDto.Gender.MALE).build();userRepository.save(userDto);}}
http://www.lryc.cn/news/252333.html

相关文章:

  • centos用什么命令可查看版本号
  • 大数据之Redis
  • 【React设计】React企业级设计模式
  • 赴日程序员高年薪过上“躺平”生活?
  • Windows开启SQL Server服及1433端口
  • 网盘系统设计:万亿 GB 网盘如何实现秒传与限速?
  • 整数和浮点数在内存中的存储
  • rabbitMQ镜像队列的使用
  • ros来保存图像和保存记录视频的方法---gmsl相机保存视频和图片
  • Oracle19c使用adrci清理日志文件
  • Ubuntu之Sim2Real环境配置(坑居多)
  • java中BigDecimal里面的subtract函数的意思?
  • 线程变量引发的session混乱问题
  • dockerfile与docker-compose解释及对比
  • 数据库更换版本
  • Unity Meta Quest 一体机开发(九):【手势追踪】通过录制抓取手势实现自定义抓取姿势
  • Git 简介及异常场景处理
  • 龙迅LT2611UX 四端口LVDS转HDMI(2.0)
  • MySQL基础『数据类型』
  • SQL手工注入漏洞测试(PostgreSQL数据库)-墨者
  • STM32单片机项目实例:基于TouchGFX的智能手表设计(1)项目介绍及GUI界面基础
  • 【超详细教程】基于html+js实现轮播图
  • C++11(上)
  • web前端开发规范、HTML规范、JavaScript规范、style规范
  • 骨传导耳机会影响听力么?盘点骨传导耳机的好处与坏处都有哪些?
  • 前端与VR/AR:代码的魔法穿越
  • elment Loading 加载组件动态变更 text 值bug记录
  • Typora免费版安装教程(仅供学习)
  • SSM项目实战-前端-添加分页控件-调正页面布局
  • C语言从入门到实战——常用字符函数和字符串函数的了解和模拟实现