首页 > 数据库 >springboot整合redis回滚

springboot整合redis回滚

时间:2023-08-25 13:33:19浏览次数:33  
标签:回滚 return springboot redis param hashKey value key String

1:添加依赖

2:yml中配置连接,如:host,password,port

3:@autowired注解注入Redistemplate调用方法生成对象

 为了方便公司开发,一般会对数据进行序列化存储,这时需要创建配置类进行全局设置

package com.example.config;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import javax.annotation.Resource;
@Configuration
public class RedisConfig {

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(redisConnectionFactory);
//Json序列化器
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
jackson2JsonRedisSerializer.setObjectMapper(om);

//String序列化器
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

//key采用String序列化器
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
//value采用Json序列化器
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}


同时为了方便开发,公司会自己自定义Redistemplate方法,我们一般会称为RedisUtil类作用和Redistemplate作用相同,对Redistemplate中的方法进行封装使用更好理解
package com.example.util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
* @author yu_xuanyuan
* @date 2022/9/23 10:16
*/
@Component
public class RedisUtil {
@Autowired
RedisTemplate<String,Object> redisTemplate;
/**
* setex
* @param key key
* @param value value
* @param time 过期时间
*/
public void setex(String key,Object value,long time){
redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
}

/**
* set
* String类型的set,无过期时间
* @param key key
* @param value value
*/
public void set(String key, Object value){
redisTemplate.opsForValue().set(key,value);
}

/**
* 批量设置key和value
* @param map key和value的集合
*/
public void mset(Map<String,Object> map){
redisTemplate.opsForValue().multiSet(map);
}

/**
* 如果key不存在,则设置
* @param key key
* @param value value
* @return 返回是否成功
*/
public Boolean setnx(String key,Object value){
return redisTemplate.opsForValue().setIfAbsent(key, value);
}

/**
* 批量插入key,如果key不存在的话
* @param map key和value的集合
* @return 是否成功
*/
public Boolean msetnx(Map<String,Object> map){
return redisTemplate.opsForValue().multiSetIfAbsent(map);
}

/**
* String类型的get
* @param key key
* @return 返回value对应的对象
*/
public Object get(String key){
return redisTemplate.opsForValue().get(key);
}

/**
* 删除对应key
* @param key key
* @return 返回是否删除成功
*/
public Boolean del(String key){
return redisTemplate.delete(key);
}

/**
* 批量删除key
* @param keys key的集合
* @return 返回删除成功的个数
*/
public Long del(List<String> keys){
return redisTemplate.delete(keys);
}

/**
* 给某个key设置过期时间
* @param key key
* @param time 过期时间
* @return 返回是否设置成功
*/
public Boolean expire(String key, long time){
return redisTemplate.expire(key, time, TimeUnit.SECONDS);
}

/**
* 返回某个key的过期时间
* @param key key
* @return 返回key剩余的过期时间
*/
public Long ttl(String key){
return redisTemplate.getExpire(key);
}

/**
* 返回是否存在该key
* @param key key
* @return 是否存在该key
*/
public Boolean exists(String key){
return redisTemplate.hasKey(key);
}

/**
* 给key的值加上delta值
* @param key key
* @param delta 参数
* @return 返回key+delta的值
*/
public Long incrby(String key, long delta){
return redisTemplate.opsForValue().increment(key, delta);
}

/**
* 给key的值减去delta
* @param key key
* @param delta 参数
* @return 返回key - delta的值
*/
public Long decrby(String key, long delta){
return redisTemplate.opsForValue().decrement(key, delta);
}

//hash类型

/**
* set hash类型
* @param key key
* @param hashKey hashKey
* @param value value
*/
public void hset(String key,String hashKey, Object value){
redisTemplate.opsForHash().put(key, hashKey, value);
}

/**
* set hash类型,并设置过期时间
* @param key key
* @param hashKey hashKey
* @param value value
* @param time 过期时间
* @return 返回是否成功
*/
public Boolean hset(String key, String hashKey,Object value, long time){
hset(key, hashKey, value);
return expire(key, time);
}

/**
* 批量设置hash
* @param key key
* @param map hashKey和value的集合
* @param time 过期时间
* @return 是否成功
*/
public Boolean hmset(String key, Map<String,Object> map, long time){
redisTemplate.opsForHash().putAll(key, map);
return expire(key, time);
}

/**
* 获取hash类型的值
* @param key key
* @param hashKey hashKey
* @return 返回对应的value
*/
public Object hget(String key, String hashKey){
return redisTemplate.opsForHash().get(key, hashKey);
}

/**
* 获取key下所有的hash值以及hashKey
* @param key key
* @return 返回数据
*/
public Map<Object,Object> hgetall(String key){
return redisTemplate.opsForHash().entries(key);
}

/**
* 批量删除
* @param key key
* @param hashKey hashKey数组集合
*/
public void hdel(String key, Object... hashKey){
redisTemplate.opsForHash().delete(key, hashKey);
}

/**
* 判断是否存在hashKey
* @param key key
* @param hashKey hashKey
* @return 是否存在
*/
public Boolean hexists(String key, String hashKey){
return redisTemplate.opsForHash().hasKey(key, hashKey);
}

}






标签:回滚,return,springboot,redis,param,hashKey,value,key,String
From: https://www.cnblogs.com/zz999zhl/p/17656695.html

相关文章

  • 基于springboot城镇保障性住房管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了城镇保障性住房管理系统的开发全过程。通过分析城镇保障性住房管理系统管理的不足,创建了一个计算机管理城镇保障性住房管理系统的方案。文章介绍了城镇保障性住房管理系统的系统分析部......
  • 基于SpringBoot的企业资产管理系统
    本企业资产管理系统预期设计的主要功能有用户信息管理、资产分类管理、资产信息管理、资产借出管理、资产归还管理、资产维修管理等模块。通过用户信息管理功能模块,相关使用者可以对用户信息进行管理,比如可以选择修改、删除某位用户,也可以选择增加、查询用户信息。通过资产分类管理......
  • 基于springboot共享汽车管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了共享汽车管理系统的开发全过程。通过分析共享汽车管理系统管理的不足,创建了一个计算机管理共享汽车管理系统的方案。文章介绍了共享汽车管理系统的系统分析部分,包括可行性分析等,系统设......
  • 基于springboot工程教育认证的计算机课程管理平台
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了基于工程教育认证的计算机课程管理平台的开发全过程。通过分析基于工程教育认证的计算机课程管理平台管理的不足,创建了一个计算机管理基于工程教育认证的计算机课程管理平台的方案。文......
  • 基于springboot企业级工位管理系统
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了企业级工位管理系统的开发全过程。通过分析企业级工位管理系统管理的不足,创建了一个计算机管理企业级工位管理系统的方案。文章介绍了企业级工位管理系统的系统分析部分,包括可行性分析......
  • redis实现用于限制非法登录
    redis实现用于限制非法登录次数为5次,锁定10分钟,并设置登录连接超时时间为10分钟要使用Redis实现限制非法登录次数、锁定和设置登录连接超时时间,可以结合Redis的计数器(counter)、设置过期时间(expire)和获取剩余有效时间(ttl)的功能。下面是一个示例的Java代码,使用Redis来实现这......
  • 基于springboot校园社团信息管理
    在中国对于校园社团的网站其实是很缺少的,校园社团信息管理系统为学校提供一个监管大学社团的平台,为社团提供一个在线收纳社员的平台,为学生提供一个在线选择社团的平台。管理员后台进行所有社团管理的操作以及审核状态的操作,社长对自己社团管理的操作以及审核学生的操作。然后用户进......
  • 基于springboot的音乐网站
    随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了音乐网站的开发全过程。通过分析音乐网站管理的不足,创建了一个计算机管理音乐网站的方案。文章介绍了音乐网站的系统分析部分,包括可行性分析等,系统设计部分主要介绍了系统功能设计和数......
  • Redis:redis启停
    学习自:《Redis开发与运维》PDF47页1、常规用法开启:redis-server redis.conf&完整版:/安装目录/bin/redis-server/安装目录/bin/redis.conf&/usr/local/redis/bin/redis-server/usr/local/redis/redis.conf&关闭:/安装目录/bin/redis-clishutdown  2、启......
  • Docker 安装Redis 无法使用配置文件设置密码问题
    背景最近开发需要使用各种组件,如果都到开发机上安装,会占用电脑资源较多。所以使用docker容器来安装这些组件。例如redis、mongodb、mysql、rabitmq、elasticsearch等等。遇到的问题用edis官方镜像启动容器后,发现没有加载配置文件。解决方案1.redis镜像拉下来......