首页 > 数据库 >Springboot整合redis

Springboot整合redis

时间:2024-07-24 19:54:12浏览次数:13  
标签:hash Springboot val spring redis 整合 user key

引入依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

修改配置文件

//单机模式配置
spring.redis.host=172.16.7.21	//ip地址
spring.redis.port=6379	//端口号
spring.redis.database=1	//几号数据库
spring.redis.jedis.pool.max-active=100	//最大活跃数
spring.redis.jedis.pool.max-wait=1000	//超过最大值的等待时间
spring.redis.jedis.pool.max-idle=10	//休息时间到达后即销毁

//集群模式配置
spring.redis.cluster.nodes=172.16.7.21:7006,172.16.7.21:7001,172.16.7.21:7002,172.16.7.21:7003,172.16.7.21:7004,172.16.7.21:7005

使用(springboot整合redis时封装了两个工具类:springRedisTemplate和RedisTemplate)

StringRedisTemplate(springRedisTemplate是RedisTemplate的子类,只能存放字符串内容)

注入

@Autowired  //注入StringRedisTemplate
private StringRedisTemplate stringRedisTemplate;

hash操作

HashOperations<String, Object, Object> hash = stringRedisTemplate.opsForHash();	//得到操作hash的类对象
hash.put("user", "name", "张三");	//存放单个数据
Map<String, String> hashMap = new HashMap<>();
hashMap.put("age","18");
hashMap.put("sex","男");
hash.putAll("user",hashMap);	//存放多个数据
hash.get("user", "name");	//获取key为user的name的值
hash.entries("user");	//获取user的所有的键值对
hash.keys("user");	//获取key为user的所有的key的值
hash.values("user");	//获取key为user的所有的value的值

String操作

ValueOperations<String, String> val = stringRedisTemplate.opsForValue();	//得到操作字符串的类对象
val.set("k1","v1");	//存放数据
val.set("k2","200",2,TimeUnit.MINUTES);	//存放数据设置过期时间为两分钟
val.setIfAbsent("k3","v3",2,TimeUnit.MINUTES);	//如果没有key为k3的数据则存入,并设置两分钟过期时间
val.get("k1");	//获取key为k1的value
val.increment("k2",20)	//为key为k2的value递增20

key操作

stringRedisTemplate.keys("*");	//查看所有的key名
stringRedisTemplate.delete("k1");	//删除指定的key
stringRedisTemplate.hasKey("k1");	//判断是否存在key为k1的数据
stringRedisTemplate.expire("k2", 100, TimeUnit.SECONDS);	//为指定的key设置过期时间
RedisTemplate(属于StringRedisTemplate的父类,它的泛型默认都是Object。可以存储任意类型的key和value)

编写config配置

@Configuration
public class RedisConfig {
 @Bean
 public RedisTemplate<String,Object> redisTemplate(RedisConnectionFactory factory){
     RedisTemplate<String,Object> template = new RedisTemplate<>();
     RedisSerializer<String> redisSerializer = new StringRedisSerializer();
     Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
     ObjectMapper om = new ObjectMapper();
     om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
     om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
     jackson2JsonRedisSerializer.setObjectMapper(om);
     template.setConnectionFactory(factory);
//        key序列化方式
     template.setKeySerializer(redisSerializer);
//        value序列化
     template.setValueSerializer(jackson2JsonRedisSerializer);
     template.setHashValueSerializer(jackson2JsonRedisSerializer);
//        value hashmap序列号 filed value
     template.setHashKeySerializer(redisSerializer);
     template.setHashValueSerializer(jackson2JsonRedisSerializer);
     return template;
 }
}

使用

@Autowired
private RedisTemplate redisTemplate;	//注入
ValueOperations val = redisTemplate.opsForValue();	//获取类对象
val.set("k11","v11");	//存放数据
val.set("k12",new User("aaa",19));	//存放对象数据
val.get("k12");	//获取指定key的value
HashOperations hash = redisTemplate.opsForHash();	//获取操作hash类对象
hash.put("b","a","哈哈哈");	//存放key为b的hashkey为a的val为哈哈哈的键值对

标签:hash,Springboot,val,spring,redis,整合,user,key
From: https://blog.csdn.net/Baizeh/article/details/140671926

相关文章

  • Java学习 - Springboot 集成 Security 入门小实例
    前言SpringSecurity是Spring家族中一个强大可定制的身份验证和访问控制框架,和Shiro一样,它们都具有认证、授权、加密等用于权限管理的功能。但相比于Shiro,SpringSecurity的功能无疑更加强大。而且作为Spring家族中的一份子,配合家族中的其它兄弟-SpringBoot、S......
  • alpine 3.18.7 编译安装redis7.2.5
    1.安装对应的包apkaddbuild-basegcclibc-devlinux-headers安装makeapkaddmake2.解压缩redis包,tar-xzvfredis-7.2.5.tar.gz#进入src目录cd/root/redis-7.2.5/src3.进行make编译make 但是还是提示jemalloc/jemalloc.h:Nosuch......
  • Springboot的n多注解(自用)
    pojocontrollerservice(无)service.implmapper  ——————pojo@Dataget/set等@NoArgsConstructor无参构造@AllArgsConstructor有参构造 ——————controller@Slf4j......
  • 【分布式锁】Redis实现分布式锁
    在分布式系统中,当多个服务实例(或节点)需要访问或修改同一份共享资源时,就需要使用分布式锁来确保数据的一致性和防止并发问题。这种情况下,传统的Java并发控制机制如ReentrantLock或synchronized就无法满足需求,因为它们是JVM级别的锁,只能保证单个JVM实例内部的线程同步,而无法......
  • 基于Java+SpringBoot+Vue的卓越导师双选系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • 基于springboot的助农服务平台
    基于springboot的助农服务app介绍2024届软件工程毕业设计 该项目是基于springboot的助农App的设计及实现,主要实现了管理员,用户,商家三个端的设计,其中主要实现的功能有产品模块,订单模块,购物车模块,以及相关联的管理模块,秒杀等,帮助农民出售农作物,提高农业水平的发展,提高农民......
  • Prometheus监控Redis
    Redis是一个广泛使用的内存数据库和缓存系统。使用Prometheus监控Redis可以帮助我们实时了解Redis的性能和健康状况。本文将详细介绍如何使用Prometheus来监控Redis。1.RedisExporterRedisExporter是连接Redis和Prometheus的桥梁,它负责从Redis收集指标并以Prometheus可以......
  • 基于Java+SpringBoot+Vue的精品在线试题库系统的设计与开发(源码+lw+部署文档+讲解等)
    文章目录前言项目背景介绍技术栈后端框架SpringBoot前端框架Vue数据库MySQL(MyStructuredQueryLanguage)具体实现截图详细视频演示系统测试系统测试目的系统功能测试系统测试结论代码参考数据库参考源码获取前言......
  • 【超实用攻略】SpringBoot + validator 轻松实现全注解式的参数校验
    一、故事背景关于参数合法性验证的重要性就不多说了,即使前端对参数做了基本验证,后端依然也需要进行验证,以防不合规的数据直接进入服务器,如果不对其进行拦截,严重的甚至会造成系统直接崩溃!本文结合自己在项目中的实际使用经验,主要以实用为主,对数据合法性验证做一次总结,不了解的朋......
  • 关于时间格式存入Redis里面乱码的问题
    java的LocalDateTime时间类型不能转json传输,一般都是用这两个注解解决@JsonDeserialize(using=LocalDateTimeDeserializer.class)@JsonSerialize(using=LocalDateTimeSerializer.class)  @JsonDeserialize:json反序列化注解,用于字段或set方法上,作用于setter()方法,将jso......