首页 > 数据库 >springboot整合redis

springboot整合redis

时间:2023-06-16 11:47:44浏览次数:45  
标签:springboot spring redis User 整合 class RedisTemplate user

1、添加依赖

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

2、配置redis

通过 spring.redis.xxx 来配置 redis 的信息

spring.redis.host=127.0.0.1
spring.redis.port=6379

#常见的配置
spring.redis.host=redis所在的ip地址
spring.redis.port=端口,默认为6379,如果默认为6379,则不用配置中
spring.redis.password=登录密码,如果没有设置,则不用配置

3、测试

在进行测试前,需要知道操作 redis 需要一个类似 jdbcTemplate 的东西,我们可通过在 RedisAutoConfiguration 类中可以发现

@AutoConfiguration
@ConditionalOnClass(RedisOperations.class)
@EnableConfigurationProperties(RedisProperties.class)
@Import({ LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class })
public class RedisAutoConfiguration {

	@Bean
	@ConditionalOnMissingBean(name = "redisTemplate")
	@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
	public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
		RedisTemplate<Object, Object> template = new RedisTemplate<>();
		template.setConnectionFactory(redisConnectionFactory);
		return template;
	}

	@Bean
	@ConditionalOnMissingBean
	@ConditionalOnSingleCandidate(RedisConnectionFactory.class)
	public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {
		return new StringRedisTemplate(redisConnectionFactory);
	}

}

其中配置两个 bean 用于操作 redis。其中 RedisTemplate操作的 key-value 是object类型。

而 StringRedisTemplate 则是操作 key-value 都是 String 类型,证明如下:其继承了 RedisTemplate

public class StringRedisTemplate extends RedisTemplate<String, String> {}

两者区别是第一个没有确定类型,第二个已经确定了key的类型为string,所以当知道key的类型为string时,直接使用第二个。
对于第一个而言,会将对象序列化后存入(因为redis存入的是字符串,不会将对象传入)

ok,接下来开始测试

创建实体类,且实例化

public class User implements Serializable {
    private Long uid;
    private String uName;
    //get、set、tostring
}

因为 redis 中存入的是序列化后的对象

测试

    @Autowired
    RedisTemplate redisTemplate;

    @Autowired
    StringRedisTemplate stringRedisTemplate;
    @Test
    void contextLoads() {
        //字符操作
        ValueOperations ops = redisTemplate.opsForValue();
        User user = new User();
        user.setUid(4L);
        user.setuName("wa");
        //设置 key-value
        ops.set("u", user);
        //通过键获取value
        User u = (User) ops.get("u");
        System.out.println("u = " + u);
    }

    @Test
    void test() throws JsonProcessingException {
        ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();
        User user = new User();
        user.setUid(2L);
        user.setuName("麻子");
        //获取ObjectMapper对象,用于序列化
        ObjectMapper mapper = new ObjectMapper();
        //将对象序列化
        String s = mapper.writeValueAsString(user);
        //redis存入数据
        ops.set("u1", s);
        //获取数据
        String u1 = ops.get("u1");
        //反序列化
        User user1 = mapper.readValue(u1, User.class);
        System.out.println("user1 = " + user1);
    }

标签:springboot,spring,redis,User,整合,class,RedisTemplate,user
From: https://www.cnblogs.com/xiarongblogs/p/17485173.html

相关文章

  • springboot整合持久层
    springboot整合持久层1、整合mybatis这里以多数据源为例第一步创建springboot时,选上mybatis依赖在添加数据库驱动依赖:<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.23<......
  • 面试-redis
    常见数据结构1.string2.hash3.list4.set5.sortedset持久化机制1.rdb快照在redis.conf种配置save9001#在900秒(15分钟)之后,如果⾄少有1个key发⽣变化,Redis就会⾃动触发BGSAVE命令创建快照。save30010#在300秒(5分钟)之后,如果⾄少有10个key发⽣变化,Redis就会⾃动......
  • springboot整合mongodb
    springboot整合mongodb整合mongodb其实与整合redis相差不大1、依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-mongodb</artifactId></dependency&......
  • Redis哨兵模式的配置
    1.环境准备master节点1个slave节点2个sentinel【哨兵】节点3个redis版本5.0.3操作系统:Centos72.主从节点配置创建redis-conf目录,此目录用于存放主从节点的配置文件复制redis.conf,然后创建三个配置文件:redis-6379.conf,redis-6380.conf,redis-6381.conf编辑主节点的配置......
  • Redis 缓存穿透、缓存击穿、缓存雪崩
    文章目录一、缓存穿透1.概念2.解决方案二、缓存击穿1.概念2.解决方案三、缓存雪崩1.概念2.解决方案一、缓存穿透1.概念key对应的数据在redis中并不存在,每次针对此key的请求从缓存获取不到,请求转发到数据库,访问量大了可能压垮数据库。比如用......
  • Redis(四)
    5.多级缓存传统的缓存策略一般是请求到达Tomcat后,先查询Redis,如果未命中则查询数据库存在的问题请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时,会对数据库产生冲击多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提升服务性......
  • springboot 中使用 redis 处理接口的幂等性
    什么是接口幂等性?数学中:在一次元运算为幂等时,其作用在任一元素两次后会和其作用一次的结果相同;在二次元运算为幂等时,自己重复运算的结果等于它自己的元素。计算机学中:幂等指多次操作产生的影响只会跟一次执行的结果相同,通俗的说:某个行为重复的执行,最终获取的结果是相同的,不会因......
  • 2023-06-15:说一说Redis的Key和Value的数据结构组织?
    2023-06-15:说一说Redis的Key和Value的数据结构组织?答案2023-06-15:全局哈希表Redis使用哈希表作为保存键值对的数据结构,通过哈希函数将Key映射为哈希表中的一个索引位置,使得Key-Value可以在O(1)时间复杂度内被快速访问。在Redis中,哈希表是由多个哈希桶(也称为槽位/数组元素)组成......
  • SpringBoot快速整合RabbitMq小案例
    对于一个直接创建的springBoot项目工程来说,可以按照以下步骤使用rabbitmq添加依赖:添加rabbitMQ的依赖。<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency>配置连接:在配置文件中配置虚拟主......
  • springboot项目启动
    报错:Couldnotresolveplaceholder'config.info'invalue"${config.info}"项目的bootstrap.yml配置文件的file-extension:yaml#这里我们获取的yaml格式的配置需要跟nacos配置列表的DataId结尾保持一致 ......