在写完ehCache的文章后,贼心不死,恰巧又遇到了一篇文章,试验了一下,竟然神奇的成功了。套用文章的一段话来解释一下为什么Redis作缓存比EhCache好。
EhCache是进程内的缓存框架,在集群模式下时,各应用服务器之间的缓存都是独立的,因此在不同服务器的进程间会存在缓存不一致的情况。即使EhCache提供了集群环境下的缓存同步策略,但是同步依然需要一定的时间,短暂的缓存不一致依然存在。在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择。
文章地址在此 文章写的简单明了,一步一步来也是能够实现的,下面就针对一直写的工程来具体操作一下(基本与文章里的操作是一样的)
1、安装Redis
打开Redis官网,找到最新的稳定版本,下载并解压,通过终端进入到解压后的文件夹内
编译测试
sudo make test
编译安装
sudo make install
启动Redis
redis-server
停止Redis
redis-cli shutdown
2、移除ehCache的依赖,删除ehcache.xml
3、在pom.xml中添加对redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
如果依赖的是spring-boot-starter-redis,xml会提示一个error,通过查询maven依赖查询网站,可以看到,它被移植到了spring-boot-starter-data-redis里,而它也不赞成被使用了。
4、在application.properties里添加对redis的配置,以本地运行为例
spring.redis.host=localhost
spring.redis.port=6379
spring.redis.jedis.pool.max-idle=8
spring.redis.jedis.pool.min-idle=0
spring.redis.jedis.pool.max-active=8
spring.redis.jedis.pool.max-wait=-1
到此需要配置的东西就已经完成了。Spring Boot会在侦测到存在Redis的依赖并且Redis的配置是可用的情况下,使用RedisCacheManager初始化CacheManager。我们可以按照上篇文章去测试一下,记得提前启动好redis,不然会提示错误。
Unable to connect to Redis; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379
5、Redis基本命令
redis-server 启动
redis-cli shutdown 关闭
keys * 查看所有keys
del key 删除某一个key
flushdb 删除当前数据库中的所有key
flushall 删除所有数据库中的key
to新手朋友们,启动redis后,所有的操作都需要单独开启一个终端,输入redis-cli,启动命令行工具。有关redis的其它命令请参考官方文档。
6、启动好redis后,我们就可以参考上一篇文章中的测试方法,查询->改库->再查询,看看查到的结果是否一致。
在这里与EhCache不同,如果不把redis缓存清掉的话,不管是重启服务多少次,查到的都是redis缓存里的内容,因此需要在后期,添加对redis缓存的管理类。