首先明确一下问题的场景
现在洳果直接将redis的注解放在repository上使用,是个什么情况呢
1.首先我有一个实体XxAdmin,主键为id
报这个错原因就是redis认定这个key是Null的,没办法存入所以報错了。
但是之前咱们上一篇就是这么用的呀查看上一篇,可以发现redis是使用在service层,是在repository的再封装层使用的那redis就不能直接使用在repository层了麼?
【这里因为项目原因不赘述为什么不封装一层service层使用,而是直接在repository层使用】【最后具体为什么key在这里会认定为null也没有找到原因若知情,恳请告知!!!谢谢了】
所以换一种思路来解决这个问题,就是提前设定一种key的生成策略即在RedisConfig类中指定一种KeyGenerator。【这一步骤的解釋可以查看】
在RedisConfig中,设定仅取第一个参数作为key的key生成策略
控制台成功从数据库查询了Xxadmin对象
查看redis中已经将本对象存入缓存
再次访问,发现并未执行SQL语句直接从缓存中取出本对象。
指定本类中所有的方法操作的缓存都是名为admins的缓存!!
具体可以参考:查看这几个注解的使用场景
本系列的源代码,可以从GitHub上获取查看:类名及方法名都是对应的。所以想查看这部分使用的可以直接在项目中查看即可!!
(7)配置log4j日志信息如下:
首先我们向user表总插入一条数据,数据库显示如下:
现在我们查询一下user表中id=24的数据,观擦控制台输出的信息如下:
通过控淛台输出信息我们可以知道,这次执行了数据库查询并开启了Redis缓存查询结果。接下来我们再次查询user表中id=24的数据观察控制台,如下:
通过控制台输出信息我们可以知道这次并没有执行数据库查询,而是从Redis缓存中查询并返回查询结果。我们查看redis中的信息如下:
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。