springBoot整合redis使用案例详解
一、创建springboot项目(采用骨架方式)
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
创建完成;
我们分析下pom文件中内容:
所使用到的关键依赖:
org.springframework.boot spring-boot-starter-data-redis2.5.4 org.springframework.boot spring-boot-starter-web2.5.4 org.projectlombok lombok1.18.20 true org.springframework.boot spring-boot-starter-test2.5.4 testorg.springframework.boot spring-boot-autoconfigure2.5.4 com.alibaba fastjson1.2.75
二、配置文件
server.port=8088spring.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@Componentpublic 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*/publicvoid 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 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 keymust not be {@literal null}.* @param subKey must not be {@literal null}.* @param value写入的值*/public void addHashCache(K key, SK subKey, V value) {redisTemplate.opsForHash().put(DEFAULT_KEY_PREFIX + key, subKey, value); }/*** 写入 hash-set,并设置过期时间** @param keymust not be {@literal null}.* @param subKey must not be {@literal null}.* @param value写入的值*/public 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 keymust not be {@literal null}.* @param subKey must not be {@literal null}.*/public Object getHashCache(K key, SK subKey) {returnredisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey); }/*** 从redis中获取缓存数据,转成对象** @param keymust not be {@literal null}.* @param clazz 对象类型* @return*/public V getObject(K key, Class clazz) {String value = https://www.it610.com/article/this.get(key); V result = null; if (!StringUtils.isEmpty(value)) {result = JSONObject.parseObject(value, clazz); }return result; }/*** 从redis中获取缓存数据,转成list** @param keymust not be {@literal null}.* @param clazz 对象类型* @return*/public List getList(K key, Class clazz) {String value = https://www.it610.com/article/this.get(key); List 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 String get(K key) {String value; try {value = https://www.it610.com/article/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 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() {ArrayListusers = 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() {Listusers = 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 keymust not be {@literal null}.* @param subKey must not be {@literal null}.*/publicObject getHashCache(K key, SK subKey) {returnredisTemplate.opsForHash().get(DEFAULT_KEY_PREFIX + key, subKey); }
结果:
hashCache = value【springBoot整合redis使用案例详解】到此这篇关于springBoot整合redis使用案例详解的文章就介绍到这了,更多相关springBoot整合redis使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- Spring|Spring Boot 整合 Activiti6.0.0
- springboot使用redis缓存
- (1)redis集群原理及搭建与使用(1)
- springboot整合数据库连接池-->druid
- SpringBoot中YAML语法及几个注意点说明
- springboot结合redis实现搜索栏热搜功能及文字过滤
- springboot中.yml文件的值无法读取的问题及解决