文章预览:

  • 一、创建springboot项目(采用骨架方式)
  • 二、配置文件
  • 三、使用redis
    • 1、添加字符串到redis
    • 2、将对象转换成jsonString并存入redis
    • 3、将对象集合转换成jsonString,并设置过期时间存入至redis
    • 4、获取对象
    • 5、获取对象集合
    • 6、添加 hash-set
    • 7、获取 hash-setvalue

一、创建springboot项目(采用骨架方式)







创建完成;
我们分析下pom文件中内容:
所使用到的关键依赖:

 <!--springBoot集成redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><version>2.5.4</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.5.4</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.20</version><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><version>2.5.4</version><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-autoconfigure</artifactId><version>2.5.4</version></dependency><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.75</version></dependency>

二、配置文件

server.port=8088
spring.redis.host=127.0.0.1
#Redis服务器连接端口
spring.redis.port=6379
#Redis服务器连接密码(默认为空)
spring.redis.password=123456
#连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
#连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
#连接池中的最大空闲连接
spring.redis.pool.max-idle=8
#连接池中的最小空闲连接
spring.redis.pool.min-idle=0
#连接超时时间(毫秒)
spring.redis.timeout=30000

三、使用redis

package com.example.redis.cache;import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;/*** @author wxl* @date 2021-08-15 18:44*/
@Slf4j
@Component
public class CacheService {@Autowiredprivate StringRedisTemplate redisTemplate;private final String DEFAULT_KEY_PREFIX = "";private final int EXPIRE_TIME = 1;private final TimeUnit EXPIRE_TIME_TYPE = TimeUnit.DAYS;/*** 数据缓存至redis** @param key* @param value* @return*/public <K, V> void add(K key, V value) {try {if (value != null) {redisTemplate.opsForValue().set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value));}} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("数据缓存至redis失败");}}/*** 数据缓存至redis并设置过期时间** @param key* @param value* @return*/public <K, V> void add(K key, V value, long timeout, TimeUnit unit) {try {if (value != null) {redisTemplate.opsForValue().set(DEFAULT_KEY_PREFIX + key, JSON.toJSONString(value), timeout, unit);}} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("数据缓存至redis失败");}}/*** 写入 hash-set,已经是key-value的键值,不能再写入为hash-set** @param key    must not be {@literal null}.* @param subKey must not be {@literal null}.* @param value  写入的值*/public <K, SK, V> void addHashCache(K key, SK subKey, V value) {redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value);}/*** 写入 hash-set,并设置过期时间** @param key    must not be {@literal null}.* @param subKey must not be {@literal null}.* @param value  写入的值*/public <K, SK, V> void addHashCache(K key, SK subKey, V value, long timeout, TimeUnit unit) {redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value);redisTemplate.expire(DEFAULT_KEY_PREFIX + key, timeout, unit);}/*** 获取 hash-setvalue** @param key    must not be {@literal null}.* @param subKey must not be {@literal null}.*/public <K, SK> Object getHashCache(K key, SK subKey) {return  redisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey);}/*** 从redis中获取缓存数据,转成对象** @param key   must not be {@literal null}.* @param clazz 对象类型* @return*/public <K, V> V getObject(K key, Class<V> clazz) {String value = this.get(key);V result = null;if (!StringUtils.isEmpty(value)) {result = JSONObject.parseObject(value, clazz);}return result;}/*** 从redis中获取缓存数据,转成list** @param key   must not be {@literal null}.* @param clazz 对象类型* @return*/public <K, V> List<V> getList(K key, Class<V> clazz) {String value = this.get(key);List<V> result = Collections.emptyList();if (!StringUtils.isEmpty(value)) {result = JSONArray.parseArray(value, clazz);}return result;}/*** 功能描述:Get the value of {@code key}.** @param key must not be {@literal null}.* @return java.lang.String* @date 2021/9/19**/public <K> String get(K key) {String value;try {value = redisTemplate.opsForValue().get(DEFAULT_KEY_PREFIX + key);} catch (Exception e) {log.error(e.getMessage(), e);throw new RuntimeException("从redis缓存中获取缓存数据失败");}return value;}/*** 删除key*/public void delete(String key) {redisTemplate.delete(key);}/*** 批量删除key*/public void delete(Collection<String> keys) {redisTemplate.delete(keys);}/*** 序列化key*/public byte[] dump(String key) {return redisTemplate.dump(key);}/*** 是否存在key*/public Boolean hasKey(String key) {return redisTemplate.hasKey(key);}/*** 设置过期时间*/public Boolean expire(String key, long timeout, TimeUnit unit) {return redisTemplate.expire(key, timeout, unit);}/*** 设置过期时间*/public Boolean expireAt(String key, Date date) {return redisTemplate.expireAt(key, date);}/*** 移除 key 的过期时间,key 将持久保持*/public Boolean persist(String key) {return redisTemplate.persist(key);}/*** 返回 key 的剩余的过期时间*/public Long getExpire(String key, TimeUnit unit) {return redisTemplate.getExpire(key, unit);}/*** 返回 key 的剩余的过期时间*/public Long getExpire(String key) {return redisTemplate.getExpire(key);}
}

1、添加字符串到redis

    /*** 功能描述:添加字符串到redis*/@Testvoid add() {cacheService.add("test", 1234);}

结果:

2、将对象转换成jsonString并存入redis

    /*** 功能描述:添加对象至redis*/@Testvoid addObject() {User user = User.builder().id(ID).name("小萌").age(AGE).build();cacheService.add(user.getId(), user);}

结果:

3、将对象集合转换成jsonString,并设置过期时间存入至redis

    /*** 功能描述:添加对象集合至redis*/@Testvoid addObjects() {ArrayList<User> users = new ArrayList<>();User user = User.builder().id(ID).name("小萌").age(AGE).build();users.add(user);cacheService.add("key", users, 1, TimeUnit.HOURS);}

结果:

4、获取对象

  /*** 功能描述:获取对象*/@Testvoid getObject() {User object = cacheService.getObject(ID, User.class);System.out.println("object = " + object);}

结果:

object = User(id=123, name=小萌, age=12)

5、获取对象集合

   /*** 功能描述:获取对象集合*/@Testvoid getObjects() {List<User> users = cacheService.getList("key", User.class);System.out.println("users = " + users);}

结果:

users = [User(id=123, name=小萌, age=12)]

6、添加 hash-set

    /*** 功能描述:添加 hash-set*/@Testvoid addHashCache() {cacheService.addHashCache("hashKey", "key", "value");}

结果:

7、获取 hash-setvalue

  /*** 获取 hash-setvalue** @param key    must not be {@literal null}.* @param subKey must not be {@literal null}.*/public <K, SK> Object getHashCache(K key, SK subKey) {return  redisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey);}

结果:

hashCache = value

springBoot整合redis使用介绍(详细案例)相关推荐

  1. 【七】springboot整合redis(超详细)

    springboot篇章整体栏目: [一]springboot整合swagger(超详细 [二]springboot整合swagger(自定义)(超详细) [三]springboot整合token(超 ...

  2. springboot整合redis案例——点赞取消点赞

    目录 springboot与缓存 JSR-107 Spring缓存抽象 重要概念和缓存注解 springboot整合redis 案例一:Redis是实现点赞.取消点赞 一.Redis 缓存设计及实现 ...

  3. springboot整合redis,推荐整合和使用案例(2021版)

    背景:手下新人在初次使用springboot整合redis,大部分人习惯从网上检索到一份配置,然后不知其所以然的复制粘贴到项目中,网上搜索到的配置良莠不齐但又万变不离其宗.由于springboot最大 ...

  4. SpringBoot第九篇: springboot整合Redis

    这篇文章主要介绍springboot整合redis,至于没有接触过redis的同学可以看下这篇文章:5分钟带你入门Redis. 引入依赖: 在pom文件中添加redis依赖: <dependen ...

  5. Springboot整合redis(lettuce)

    springboot 整合redis(lettuce) 首先确保电脑上装了redis.最好能用redisDesktop查看一下数据情况 redis是一款非常流行的Nosql数据库.redis的功能非常 ...

  6. spring boot连接redis配置127.0.0.1_Java技术分享——Springboot整合redis

    springboot提供了spring-data-redis的框架来整合redis的操作.下面主要介绍,springboot整合redis的配置,以及spring-data-redis是如何提供便捷的 ...

  7. springboot篇】二十二. springboot整合Redis集群

    springboot整合Redis集群 **中国加油,武汉加油!** 案例准备 1. 新建Springboot项目springboot-redis-sentinel 2. 编写yml 3. Test ...

  8. SpringBoot整合redis实现发布订阅模式

    Redis的发布订阅模式 发布订阅(Pub/Sub):目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接 ...

  9. SpringBoot整合Redis+mybatis,封装RedisUtils工具类等实战(附源码)

    点击上方蓝色字体,选择"标星公众号" 优质文章,第一时间送达 关注公众号后台回复pay或mall获取实战项目资料+视频 作者:陈彦斌 cnblogs.com/chenyanbin/ ...

  10. RedisTemplate操作redis五大类型用法详解(springboot整合redis版本)

    1.案例说明 springboot整合redis之后,提供了操作redis的简便方式 通过通用对象redisTemplate方式操作String,Hash,List,Set SortSet五大数据类型 ...

最新文章

  1. 深入理解 wpa_supplicant(一)
  2. 赠书:“替代Linux”?!全球技术海啸来临!
  3. [C++学习笔记](double*)malloc(n * sizeof(double));
  4. oracle表空间于表数据啥意思,初识Oracle表空间与数据文件
  5. 样例解释:1013 数素数 (20分)
  6. Anaconda3-5.3.0-Windows-x86_64
  7. 牛客网——数字求和(水题
  8. spring social_Spring Social入门
  9. rocketmq 初探(二)
  10. 02-css的选择器
  11. 助力泵嗡嗡响解决方法_突破不可能,3D打印革命性的制造高效高扭矩的径向活塞泵...
  12. JDK安装与环境变量配置(WIN7)
  13. 精品H5小游戏源码-免费下载
  14. 车牌自动识别在智能交通系统中的应用及前景分析
  15. python使用win32*模块模拟人工操作——城通网盘下载器(一)
  16. 加州大学洛杉玑分校计算机专业,加州大学洛杉矶分校
  17. 【转载】十款必备牛逼的IDEA插件
  18. 牛客网js获取单行,多行输入
  19. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)一 爬取所有话题类型
  20. ChatGPT教程之 05 ChatGPT 和你的工作

热门文章

  1. 高逼格/高效率办公工具、开发工具、开发插件等各种骚操作汇总 —— [努力更新中...]
  2. IOS 本地图片加载
  3. 自适应迁移学习核极限学习机KELM用于分类
  4. jquery mini下载_【芒果tv湖南卫视直播】-芒果TV播放器下载v6.3.4 官方正式版
  5. 春节假期,我把父母家的网络整瘫了……
  6. html5 序列帧播放器,Pdplayer 64位版(序列帧动画播放器)V1.0.7.33 免费版
  7. 牛客网暑期ACM多校训练营(第五场)B. div(技巧+OEIS or Pell方程)
  8. 【Themes for IntelliJ-based IDEs】Idea主题下载
  9. 工具推荐:三款自动化代码审计工具
  10. h5网站服务器配置,h5的web服务器配置