pom.xml 引入redis 开启缓存
<!-- cache --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-cache</artifactId> </dependency> <!-- redis --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
application.properties 配置文件
# Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=localhost # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password= # 连接池最大连接数(使用负值表示没有限制) 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=0
RedisService
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.*; import org.springframework.stereotype.Service; import java.io.Serializable; import java.util.List; import java.util.Set; import java.util.concurrent.TimeUnit; @Service public class RedisService { @Autowired private RedisTemplate redisTemplate; /** * 写入缓存 * @param key * @param value * @return */ public boolean set(final String key, Object value) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 写入缓存设置时效时间 * @param key * @param value * @return */ public boolean set(final String key, Object value, Long expireTime) { boolean result = false; try { ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); operations.set(key, value); redisTemplate.expire(key, expireTime, TimeUnit.SECONDS); result = true; } catch (Exception e) { e.printStackTrace(); } return result; } /** * 批量删除对应的value * @param keys */ public void remove(final String... keys) { for (String key : keys) { remove(key); } } /** * 批量删除key * @param pattern */ public void removePattern(final String pattern) { Set<Serializable> keys = redisTemplate.keys(pattern); if (keys.size() > 0) redisTemplate.delete(keys); } /** * 删除对应的value * @param key */ public void remove(final String key) { if (exists(key)) { redisTemplate.delete(key); } } /** * 判断缓存中是否有对应的value * @param key * @return */ public boolean exists(final String key) { return redisTemplate.hasKey(key); } /** * 读取缓存 * @param key * @return */ public Object get(final String key) { Object result = null; ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue(); result = operations.get(key); return result; } /** * 哈希 添加 * @param key * @param hashKey * @param value */ public void hmSet(String key, Object hashKey, Object value){ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); hash.put(key,hashKey,value); } /** * 哈希获取数据 * @param key * @param hashKey * @return */ public Object hmGet(String key, Object hashKey){ HashOperations<String, Object, Object> hash = redisTemplate.opsForHash(); return hash.get(key,hashKey); } /** * 列表添加 * @param k * @param v */ public void lPush(String k,Object v){ ListOperations<String, Object> list = redisTemplate.opsForList(); list.rightPush(k,v); } /** * 列表获取 * @param k * @param l * @param l1 * @return */ public List<Object> lRange(String k, long l, long l1){ ListOperations<String, Object> list = redisTemplate.opsForList(); return list.range(k,l,l1); } /** * 集合添加 * @param key * @param value */ public void add(String key,Object value){ SetOperations<String, Object> set = redisTemplate.opsForSet(); set.add(key,value); } /** * 集合获取 * @param key * @return */ public Set<Object> setMembers(String key){ SetOperations<String, Object> set = redisTemplate.opsForSet(); return set.members(key); } /** * 有序集合添加 * @param key * @param value * @param scoure */ public void zAdd(String key,Object value,double scoure){ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); zset.add(key,value,scoure); } /** * 有序集合获取 * @param key * @param scoure * @param scoure1 * @return */ public Set<Object> rangeByScore(String key,double scoure,double scoure1){ ZSetOperations<String, Object> zset = redisTemplate.opsForZSet(); return zset.rangeByScore(key, scoure, scoure1); } }
测试用的Controller
import com.example.service.RedisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController { @Autowired private RedisService redisService ; @RequestMapping("/setRedis") public void setRedis(){ redisService.set("1","value22222"); } @RequestMapping("/getRedis") public String getRedis(){ String value = (String)redisService.get("1"); return value; } }
相关推荐
主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,...
综上所述,"最最最简单的SpringBoot+Redis"教程涵盖了SpringBoot的快速启动,Redis的配置和使用,以及Maven的依赖管理。通过这些步骤,开发者可以轻松地在SpringBoot应用中集成Redis,实现高效的数据缓存和持久化。
基于 springboot+mybatis_+shiro + redis+activiti+quarts+quartz+vue 写的一个前后分离办公企业管理系统 ,通用服务端,用于学习。 使用技术 服务端: springboot(2.2.1) + mybatis-push + shiro(1.4.0) + redis +...
报表后端采用技术: SpringBoot整合SSM(Spring+Mybatis-plus+ SpringMvc),spring security 全注解式的权限管理和JWT方式禁用Session,采用redis存储token及权限信息 报表前端采用Bootstrap框架,结合Jquery Ajax,...
springboot整合redis选用 `Lettuce` 作为redis框架,选用 `Protobuf` 作为序列化框架
在现代Web应用开发中,保持用户登录状态是一个常见的需求,"springboot+redis+token保持登录"的主题就涉及到了如何利用Spring Boot、Redis以及Token技术来实现这一功能。本文将详细探讨这一技术栈的实现原理和步骤。...
在Springboot中,我们可以使用Spring Data Redis模块方便地操作Redis,支持多种数据结构如字符串、哈希、列表、集合、有序集合等,实现session共享、队列服务等功能。 **Dubbo** Dubbo是阿里巴巴开源的服务治理框架...
本项目集成了springboot+security+mybatis+redis+jwt用于学习security鉴权功能,其中有集成了redis,mybatis,jasypt,jwt,thymeleaf,knife4j,mybatis-plus 项目搭建已经比较成熟,能够直接进行使用,通过代码...
在IT行业中,Spring Boot、Redis和RabbitMQ是三个非常重要的技术组件,它们分别用于简化Java应用程序开发、数据缓存和消息队列处理。本文将详细介绍如何将这三者整合在一起,以构建一个高效、可扩展的应用系统。 ...
Spring Boot提供`RedisTemplate`和`StringRedisTemplate`用于操作Redis,也可以使用` lettuce`或`Jedis`客户端库。此外,Spring Session可以利用Redis来实现会话共享,提高分布式应用的用户体验。 **Spring Boot...
一、项目简述 本系统功能包括: 一款基于Springboot+Vue的电商项目,前后端分离项目,前台后台...项目技术: Springboot + Maven + Mybatis + Vue + Redis, B/S 模式+ Maven等等,附带支付宝沙箱环境以及支付环节代码。
4. Redis配置:确保Redis服务运行正常,并在Spring Boot中配置Redis连接,以便存储和检索验证码。 5. 验证接口:在Spring Boot中创建一个RESTful API,接收前端提交的验证码并从Redis中取出进行对比,如果匹配则...
**SpringBoot+Netty+WebSocket+Redis:构建分布式实时聊天应用** 在当今的互联网世界中,实时通信和数据共享是许多应用程序的核心需求。Spring Boot作为一款流行的Java框架,因其简洁的配置和快速开发特性而备受...
在本文中,我们将深入探讨如何使用`MQTT`(Message Queuing Telemetry Transport)协议与`SpringBoot`框架集成,并利用`Redis`作为缓存来处理消息。`MQTT`是一种轻量级的发布/订阅消息协议,常用于物联网(IoT)设备...
Spring Boot提供了一种快速启动和配置Spring框架的方式,使得开发人员可以快速搭建稳定且功能完善的服务器。在本项目中,Spring Boot作为后端服务器,处理MQTT消息的接收、存储和转发,同时可能还包含了设备认证、...
动态配置权限,角色和资源,权限控制到按钮粒度 采用token进行权限校验,禁用session,未登录返回401,权限不足返回403 采用redis存储token及权限信息 内置功能: 用户管理:用户查询、添加用户、修改用户、给...
下面我们将深入探讨如何使用 Spring Boot 和 Redis 实现 SSO。 首先,我们需要理解 Spring Boot 的角色。Spring Boot 是基于 Spring 框架构建的,旨在简化 Spring 应用的初始设置和配置。它提供了开箱即用的特性,...
springboot + mybatis-plus + database+ 多数据源 + redis + hutool 框架干净,没有其他冗余的成分; 配置了MP的代码生成器,意见生成代码,节省开发时间! 可用于各种定时任务处理,各种夸库操作, 多数据源支持...
3. **编写Shiro配置**:创建一个Shiro配置类,配置Realm(权限认证),并设置SessionManager使用RedisSessionDAO,以便将Session数据保存到Redis中。 4. **自定义Realm**:根据实际业务需求,实现自定义的...
在本项目中,我们将结合SpringBoot、Redis和Shiro来实现SSO功能,并进行统一的异常处理和日志管理。 首先,SpringBoot是一个基于Spring框架的轻量级开发工具,它简化了新Spring应用的初始搭建以及开发过程。...