博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2.22. Spring boot with Cache
阅读量:5924 次
发布时间:2019-06-19

本文共 3571 字,大约阅读时间需要 11 分钟。

2.22.1. Spring boot with Redis

2.22.1.1. maven
org.springframework.boot
spring-boot-starter-data-redis
2.22.1.2. application.properties
spring.redis.database=10spring.redis.host=localhostspring.redis.port=6379spring.redis.password=spring.redis.pool.max-active=8spring.redis.pool.max-wait=-1spring.redis.pool.max-idle=8spring.redis.pool.min-idle=0spring.redis.timeout=0
2.22.1.3. JUnit
@RunWith(SpringJUnit4ClassRunner.class)@SpringApplicationConfiguration(Application.class)public class ApplicationTests {	@Autowired	private StringRedisTemplate stringRedisTemplate;	@Test	public void test() throws Exception {		// 保存字符串		stringRedisTemplate.opsForValue().set("neo", "chen");		Assert.assertEquals("chen", stringRedisTemplate.opsForValue().get("neo"));    }}
2.22.1.4. Controller

stringRedisTemplate模板用于存储key,value为字符串的数据

@Autowired	private StringRedisTemplate stringRedisTemplate;		@RequestMapping("/test")	@ResponseBody	public String test() {		String message = "";		stringRedisTemplate.opsForValue().set("hello", "world");		message = stringRedisTemplate.opsForValue().get("hello");		return message;	}

等同于

@Autowired	private RedisTemplate
redisTemplate;

ListOperations

public class Example {    // inject the actual template    @Autowired    private RedisTemplate
template; // inject the template as ListOperations // can also inject as Value, Set, ZSet, and HashOperations @Resource(name="redisTemplate") private ListOperations
listOps; public void addLink(String userId, URL url) { listOps.leftPush(userId, url.toExternalForm()); // or use template directly redisTemplate.boundListOps(userId).leftPush(url.toExternalForm()); }}

例 2.4. RedisTemplate

@Autowired	private RedisTemplate
redisTemplate; public List
getProtocol() { List
protocols = new ArrayList
(); Gson gson = new Gson(); Type type = new TypeToken
>(){}.getType(); redisTemplate.setKeySerializer(new StringRedisSerializer()); redisTemplate.setValueSerializer(new StringRedisSerializer()); String cacheKey = String.format("%s:%s", this.getClass().getName(), Thread.currentThread().getStackTrace()[1].getMethodName()); long expireTime = 5; if(redisTemplate.hasKey(cacheKey)){ String cacheValue = redisTemplate.opsForValue().get(cacheKey); System.out.println(cacheValue); protocols = gson.fromJson(cacheValue, type); }else{ Protocol protocol = new Protocol(); protocol.setRequest(new Date().toString()); protocols.add(protocol); String jsonString = gson.toJson(protocols, type); System.out.println( jsonString ); redisTemplate.opsForValue().set(cacheKey, jsonString); redisTemplate.expire(cacheKey, expireTime, TimeUnit.SECONDS); } return protocols; }

2.22.2. @Cacheable

2.22.2.1. maven
org.springframework.boot
spring-boot-starter-cache
2.22.2.2. Controller

缓存返回结果

@Cacheable("cacheable")	@RequestMapping("/test/cacheable")	@ResponseBody	public String cacheable() {		Date date = new Date();		String message = date.toString();		return message;	}

5秒钟清楚一次缓存

@Scheduled(fixedDelay = 5000)	@CacheEvict(allEntries = true, value = "cacheable")		public void expire() {		Date date = new Date();		String message = date.toString();		System.out.println(message);	}

原文出处:Netkiller 系列 手札

本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

你可能感兴趣的文章
php 解决json_encode中文UNICODE转码问题
查看>>
gitbook 简单使用
查看>>
USACO 1.1-Friday the Thirteenth
查看>>
备份服务器数据(IIS配置备份还原、任务计划、服务列表和APP)
查看>>
在pycharm中导入PyMysql出错,解决方法
查看>>
jxl和POI的区别
查看>>
linux学习 第二天
查看>>
Anaconda环境变量配置问题解决
查看>>
注册表信息相关
查看>>
C++——拷贝构造函数说明
查看>>
单例模式
查看>>
【C#】接口和抽象类
查看>>
最大的错误就是没有把自己的软件开发事业当 作一桩生意来看待
查看>>
5月8上
查看>>
中国邮与上海人才网被挂马 百万网民被攻击
查看>>
Web在线操作Offic“.NET研究”e之Word
查看>>
惠普推出全新企业级安全软件
查看>>
一起谈.NET技术,Entity Framework 4.1 Code First 学习之路(二)
查看>>
艾伟也谈项目管理,技术管理中常见的几个问题
查看>>
一起谈.NET技术,使用LINQ to SQL更新数据库(中):几种解决方案
查看>>