SpringBoot配置Redis实现保存获取和删除数据
目录
- 1 Redis
- 2 Maven依赖
- 3 application.propertis
- 4 RedisConfig
- 5 RedisService
- 6 调试代码
- 7 调试结果
1 Redis Redis 是完全开源的,遵守 BSD 协议,是一个高性能的 key-value 数据库。
Redis 与其他 key - value 缓存产品有以下三个特点:
(1)Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
(2)Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。
(2)Redis支持数据的备份,即master-slave模式的数据备份。
2 Maven依赖
org.springframework.boot spring-boot-starter-data-rediscom.alibaba fastjson1.2.76
3 application.propertis
# Redis数据库索引(默认为0)spring.redis.database=0# Redis服务器地址spring.redis.host=127.0.0.1# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码(默认为空)spring.redis.password=# 连接池最大连接数(使用负值表示没有限制)spring.redis.jedis.pool.max-active=20# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.jedis.pool.max-wait=-1# 连接池中的最大空闲连接spring.redis.jedis.pool.max-idle=10# 连接池中的最小空闲连接spring.redis.jedis.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=1000
4 RedisConfig Redis配置文件。
package com.config; import com.alibaba.fastjson.support.spring.FastJsonRedisSerializer; import org.springframework.context.annotation.*; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configurationpublic class RedisConfig {@Bean@SuppressWarnings(value = https://www.it610.com/article/{"unchecked", "rawtypes" })public RedisTemplate
5 RedisService Redis基本操作方法。
package com.service; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.BoundSetOperations; import org.springframework.data.redis.core.HashOperations; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.ValueOperations; import org.springframework.stereotype.Service; import java.util.*; import java.util.concurrent.TimeUnit; @Servicepublic class RedisService {@Autowiredprivate RedisTemplate redisTemplate; /*** 缓存基本的对象,Integer、String、实体类等** @param key缓存的键值* @param value 缓存的值*/publicvoid setCacheObject(final String key, final T value) {redisTemplate.opsForValue().set(key, value); } /*** 缓存基本的对象,Integer、String、实体类等** @param key缓存的键值* @param value缓存的值* @param timeout时间* @param timeUnit 时间颗粒度*/public void setCacheObject(final String key, final T value, final Integer timeout, final TimeUnit timeUnit) {redisTemplate.opsForValue().set(key, value, timeout, timeUnit); } /*** 设置有效时间** @param keyRedis键* @param timeout 超时时间* @return true=设置成功;false=设置失败*/public boolean expire(final String key, final long timeout) {return expire(key, timeout, TimeUnit.SECONDS); } /*** 设置有效时间** @param keyRedis键* @param timeout 超时时间* @param unit时间单位* @return true=设置成功;false=设置失败*/public boolean expire(final String key, final long timeout, final TimeUnit unit) {return redisTemplate.expire(key, timeout, unit); } /*** 获得缓存的基本对象。** @param key 缓存键值* @return 缓存键值对应的数据*/public T getCacheObject(final String key) {ValueOperations operation = redisTemplate.opsForValue(); return operation.get(key); } /*** 删除单个对象** @param key*/public boolean deleteObject(final String key) {return redisTemplate.delete(key); } /*** 删除集合对象** @param collection 多个对象* @return*/public long deleteObject(final Collection collection) {return redisTemplate.delete(collection); } /*** 缓存List数据** @param key缓存的键值* @param dataList 待缓存的List数据* @return 缓存的对象*/public long setCacheList(final String key, final List dataList) {Long count = redisTemplate.opsForList().rightPushAll(key, dataList); return count == null ? 0 : count; } /*** 获得缓存的list对象** @param key 缓存的键值* @return 缓存键值对应的数据*/public List getCacheList(final String key) {return redisTemplate.opsForList().range(key, 0, -1); } /*** 缓存Set** @param key缓存键值* @param dataSet 缓存的数据* @return 缓存数据的对象*/public BoundSetOperations setCacheSet(final String key, final Set dataSet) {BoundSetOperations setOperation = redisTemplate.boundSetOps(key); Iterator it = dataSet.iterator(); while (it.hasNext()) {setOperation.add(it.next()); }return setOperation; } /*** 获得缓存的set** @param key* @return*/public Set getCacheSet(final String key) {return redisTemplate.opsForSet().members(key); } /*** 缓存Map** @param key* @param dataMap*/public void setCacheMap(final String key, final Map dataMap) {if (dataMap != null) {redisTemplate.opsForHash().putAll(key, dataMap); }} /*** 获得缓存的Map** @param key* @return*/public Map getCacheMap(final String key) {return redisTemplate.opsForHash().entries(key); } /*** 往Hash中存入数据** @param keyRedis键* @param hKeyHash键* @param value 值*/public void setCacheMapValue(final String key, final String hKey, final T value) {redisTemplate.opsForHash().put(key, hKey, value); } /*** 获取Hash中的数据** @param keyRedis键* @param hKey Hash键* @return Hash中的对象*/public T getCacheMapValue(final String key, final String hKey) {HashOperations opsForHash = redisTemplate.opsForHash(); return opsForHash.get(key, hKey); } /*** 获取多个Hash中的数据** @param keyRedis键* @param hKeys Hash键集合* @return Hash对象集合*/public List getMultiCacheMapValue(final String key, final Collection hKeys) {return redisTemplate.opsForHash().multiGet(key, hKeys); } /*** 获得缓存的基本对象列表** @param pattern 字符串前缀* @return 对象列表*/public Collection keys(final String pattern) {return redisTemplate.keys(pattern); }}
6 调试代码
package com.controller; import com.service.RedisService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @RestController@RequestMapping("/redis")public class RedisController {@Autowiredprivate RedisService redisService; /*** 保存Redis数据** @param key* @param value* @return*/@PostMapping("/setValue/{key}/{value}")public String setValue(@PathVariable("key") String key, @PathVariable("value") String value) {redisService.setCacheObject(key, value); return "保存成功"; } /*** 获取Redis数据** @param key* @return*/@GetMapping("/getValue")public String getValue(@RequestParam String key) {return redisService.getCacheObject(key); } /*** 删除Redis数据** @param key* @return*/@DeleteMapping("/deleteValue/{key}")public String deleteValue(@PathVariable("key") String key) {return redisService.deleteObject(key) ? "删除成功" : "删除失败"; }}
7 调试结果 保存数据:
文章图片
获取数据:
文章图片
删除数据:
文章图片
【SpringBoot配置Redis实现保存获取和删除数据】到此这篇关于SpringBoot配置Redis实现保存获取和删除数据的文章就介绍到这了,更多相关SpringBoot Redis保存获取和删除数据内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- Activiti(一)SpringBoot2集成Activiti6
- SpringBoot调用公共模块的自定义注解失效的解决
- 解决SpringBoot引用别的模块无法注入的问题
- 从战略性的角度可以配置股票
- springboot使用redis缓存
- 缓存有关的配置和属性
- Spring|Spring Boot 自动配置的原理、核心注解以及利用自动配置实现了自定义 Starter 组件
- (1)redis集群原理及搭建与使用(1)
- springboot整合数据库连接池-->druid