关于使用线程本地变量的理解

来源:14-9 缓存在高并发场景中的生产问题分享

weixin_慕娘1305685

2023-07-07

我的理解是:
我们有一个从数据库中查询会员数据的接口,在最开始的场景中,我们每次都是调用这个接口来获取会员数据。
再加入会员本地变量之后,我们就在查询会员数据的接口中加入下面这个逻辑:
会员数据查询接口:

  1. 如果线程本地变量有当前会员的数据:直接返回本地变量中的会员数据
  2. 如果没有:去数据库中查,然后加入到线程本地变量然后返回

不知道我的理解对不对。
如果是这样的话我有一个疑惑,那就是线程本地变量中的会员信息该再什么时候清楚。不然随着请求的增多线程本地变量会越来越臃肿

写回答

2回答

weixin_幕布斯3232400

2023-09-06

线程本地变量是线程私有,所以一般一个线程本地变量里面只存储了当前线程的会员信息

0
0

甲蛙

2023-07-10

你这个想法应该是缓存的用法,线程本地变量只在当前线程(一次请求)有效,一般是在前置通知里放入,在后置通知里移除,不移除也没有关系,同一个线程在被多个请求反复使用时,线程本地变量会一直覆盖前面的,一个线程始终只有一个。

如果你的用户信息是要反复使用,多个请求都用同一个用户,应该是使用缓存。

0
3
HenceForward
回复
甲蛙
回复 甲蛙:有个疑问,为什么要用线程本地变量,直接方法调用的末尾清楚缓存不就行了吗?
2024-09-06
共3条回复

新版Springboot3.0打造能落地的高并发仿12306售票系统

最新版Spring3.0仿12306售票系统实战

852 学习 · 511 问题

查看课程