缓存失效

ListView嵌套ListView缓存失效问题

梦想的初衷 提交于 2019-12-06 07:53:26
ListView嵌套ListView缓存失效问题 Android中在写列表的时候,相信很多时候,我们都需要进行ListView嵌套ListView编程。比如说:帖子+评论页面的编写。 然而这种模型是会出现被嵌套ListView缓存失效的问题。 被嵌套的ListView的代码为: public class NestListView extends ListView { public NestListView(Context context, AttributeSet attrs) { super(context, attrs); } public NestListView(Context context) { super(context); } public NestListView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { //无限大小的子View空间 int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,

Redis缓存失效机制

谁都会走 提交于 2019-11-27 14:13:24
Redis缓存失效的故事要从EXPIRE这个命令说起,EXPIRE允许用户为某个key指定超时时间,当超过这个时间之后key对应的值会被清除,这篇文章主要在分析Redis源码的基础上站在Redis设计者的角度去思考Redis缓存失效的相关问题。 Redis缓存失效机制 Redis缓存失效机制是为应对缓存应用的一种很常见的场景而设计的,讲个场景: 我们为了减轻后端数据库的压力,很开心的借助Redis服务把变化频率不是很高的数据从DB load出来放入了缓存,因此之后的一段时间内我们都可以直接从缓存上拿数据,然而我们又希望一段时间之后,我们再重新的从DB load出当前的数据放入缓存,这个事情怎么做呢? 问题提出来了,这个问题怎么解决呢?好吧,我们对于手头的语言工具很熟悉,坚信可以很快的写出这么一段逻辑:我们记录上次从db load数据的时间,然后每次响应服务的时候都去判断时间是不是过期了,要不要从db重新load了……。当然这种方法也是可以的,然而当我们查阅Redis command document的时候,发现我们做了本来不需要做的事情,Redis本身提供这种机制,我们只要借助EXPIRE命令就可以轻松的搞定这件事情: EXPIRE key 30 上面的命令即为key设置30秒的过期时间,超过这个时间,我们应该就访问不到这个值了