springboot使用redis(从配置到实战)(1)

import org.springframework.cache.annotation.CachingConfigurerSupport;

import org.springframework.cache.annotation.EnableCaching;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import redis.clients.jedis.JedisPool;

import redis.clients.jedis.JedisPoolConfig;

@Configuration

@EnableCaching

public class RedisConfig extends CachingConfigurerSupport{

@Value(“${spring.redis.host}”)

private String host;

@Value(“${spring.redis.port}”)

private int port;

@Value(“${spring.redis.timeout}”)

private int timeout;

@Value(“${spring.redis.pool.max-idle}”)

private int maxIdle;

@Value(“${spring.redis.pool.max-wait}”)

private long maxWaitMillis;

@Bean

public JedisPool redisPoolFactory() {

Logger.getLogger(getClass()).info(“JedisPool注入成功!!”);

Logger.getLogger(getClass()).info(“redis地址:” + host + “:” + port);

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

jedisPoolConfig.setMaxIdle(maxIdle);

jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);

JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout);

return jedisPool;

}

}

可以看出,我们这里主要配置了两个东西,cacheManager方法配置了一个缓存名称,它的名字叫做thisredis,当我们要在方法注解里面使用到它的时候,就要根据名称进行区分不同缓存.同时设置了缓

存的过期时间.redisTemplate则是比较常见的,我们设置了RedisTemplate,因此在代码里面,我们也可以通过@Autowired注入RedisTemplate来操作redis.

使用

==

接下来就是如何使用注解啦,这一步反而是最简单的.其实只用到了两个注解,@Cacheable和@CacheEvict.第一个注解代表从缓存中查询指定的key,如果有,从缓存中取,不再执行方法.如果没有则执

行方法,并且将方法的返回值和指定的key关联起来,放入到缓存中.而@CacheEvict则是从缓存中清除指定的key对应的数据.使用的代码如下:

//有参数

@Cacheable(value=“thisredis”, key=“‘users_’+#id”)

public User findUser(Integer id) {

User user = new User();

user.setUsername(“hlhdidi”);

user.setPassword(“123”);

user.setUid(id.longValue());

System.out.println(“log4j2坏啦?”);

logger.info(“输入user,用户名:{},密码:{}”,user.getUsername(),user.getPassword());

return user;

}

@CacheEvict(value=“thisredis”, key=“‘users_’+#id”,condition=“#id!=1”)

public void delUser(Integer id) {

// 删除user

System.out.println(“user删除”);

}

//无参数

@RequestMapping(“/get”)

@Cacheable(value=“thisredis”)

@ResponseBody

public List xx(){

return userMapper.selectAll();

}

@RequestMapping(“/get3”)

@CacheEvict(value=“thisredis”)

@ResponseBody

public String xx3(){

return “ok”;

}

可以看出,我们用@Cacheable的value属性指定具体缓存,并通过key将其放入缓存中.这里key非常灵活,支持spring的el表达式,可以通过方法参数产生可变的key(见findUser方法),也可以通过其指定在什么情况下,使用/不使用缓存(见delUser方法).

作者:Python研究者

链接:
https://www.cnblogs.com/chenlove/p/15196475.html

2021年Java中高级面试必备知识点总结

在这个部分总结了2019年到目前为止Java常见面试问题,取其面试核心编写成这份文档笔记,从中分析面试官的心理,摸清面试官的“套路”,可以说搞定90%以上的Java中高级面试没一点难度。

本节总结的内容涵盖了:消息队列、Redis缓存、分库分表、读写分离、设计高并发系统、分布式系统、高可用系统、SpringCloud微服务架构等一系列互联网主流高级技术的知识点。

目录:

(上述只是一个整体目录大纲,每个点里面都有如下所示的详细内容,从面试问题——分析面试官心理——剖析面试题——完美解答的一个过程)

部分内容:

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

[外链图片转存中…(img-PiCsD6Ku-1714461961314)]

对于每一个做技术的来说,学习是不能停止的,小编把2019年到目前为止Java的核心知识提炼出来了,无论你现在是处于什么阶段,如你所见,这份文档的内容无论是对于你找面试工作还是提升技术广度深度都是完美的。

不想被后浪淘汰的话,赶紧搞起来吧,高清完整版一共是888页,需要的话可以点赞+关注

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值