JVM 进程缓存
@SpringBootTest
public class CaffeineTest {
@Test
void test() {
//构建cache对象
Cache<String, String> cache = Caffeine.newBuilder().build();
//存数据
cache.put("gf", "lb");
//取数据
String gf = cache.getIfPresent("gf");
System.out.println(gf);
//取取数据,如果未命中,查询数据库
String defaultGF = cache.get("defaultGF", key -> {
//根据key,去查询数据库
return "hana";
});
System.out.println(defaultGF);
}
@Test
void maxSize() throws InterruptedException {
//构建cache对象,最大存储数量为1,如果存入多个,不会立刻删除
Cache<String, String> cache = Caffeine.newBuilder().maximumSize(1).build();
cache.put("gf1", "gf1");
cache.put("gf2", "gf2");
cache.put("gf3", "gf3");
Thread.sleep(10L);
System.out.println(cache.getIfPresent("gf1"));
System.out.println(cache.getIfPresent("gf2"));
System.out.println(cache.getIfPresent("gf3"));
}
@Test
void expire() throws InterruptedException {
//构建cache对象,写入后多长时间失效
Cache<String, String> cache = Caffeine.newBuilder().expireAfterWrite(1L, TimeUnit.SECONDS).build();
cache.put("gf1", "gf1");
System.out.println(cache.getIfPresent("gf1"));
Thread.sleep(1200L);
System.out.println(cache.getIfPresent("gf1"));
}
}
实现进程缓存
@Configuration
public class CaffeineConfig {
@Bean
public Cache<Long, User> userCache(){
return Caffeine.newBuilder()
.initialCapacity(100)
.maximumSize(10_000)
.build();
}
@Bean
public Cache<Long, Blog> blogCache(){
return Caffeine.newBuilder()
.initialCapacity(100)
.maximumSize(10_000)
.build();
}
}
@Component
public class CaffeineService {
@Autowired
private Cache<Long, User> userCache;
@Autowired
private Cache<Long, Blog> blogCache;
public User getUser(Long id) {
//当缓存中没有,则查询数据库,查到结果放入缓存。减少数据库交互,提供并发量
return userCache.get(id, key -> {
//select * from user where id = key
return new User("lb", 32);
});
}
public Blog getBlog(Long id) {
return blogCache.get(id, key -> {
//select * from blog where id = key
return new Blog();
});
}
}
Lua 语言
Lua语言可以在nginx中开发使用的语言
多级缓存
openResty
安装
1.安装开发库
首先要安装OpenResty的依赖开发库,执行命令:
yum install -y pcre-devel openssl-devel gcc --skip-broken
2.安装OpenResty仓库
你可以在你的 CentOS 系统中添加 openresty
仓库,这样就可以便于未来安装或更新我们的软件包(通过 yum check-update
命令)。运行下面的命令就可以添加我们的仓库:
yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo
如果提示说命令不存在,则运行:
yum install -y yum-utils
然后再重复上面的命令
3.安装OpenResty
然后就可以像下面这样安装软件包,比如 openresty
:
yum install -y openresty
4.安装opm工具
opm是OpenResty的一个管理工具,可以帮助我们安装一个第三方的Lua模块。
如果你想安装命令行工具 opm
,那么可以像下面这样安装 openresty-opm
包: