1. 首先创建虚拟机安装redis
查看教程 安装redis
这样redis就算安装好了,然后进行本地访问
- 需要将redis.conf中的
daemonize no 改为---> daemonize yes
- 将
vi /etc/sysconfig/iptables
中的bind 127.0.0.1改为 bind 0.0.0.0 或者将防火墙关闭
2. Redis自动配置
Redis 是一个开源
(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)
。
2.1 引入场景
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--导入jedis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
- 自动配置
- RedisAutoConfiguration 自动配置类。RedisProperties 属性类 --> spring.redis.xxx是对redis的配置
- 连接工厂是准备好的。LettuceConnectionConfiguration、JedisConnectionConfiguration
- 自动注入了RedisTemplate<Object, Object> : xxxTemplate;
- 自动注入了StringRedisTemplate;k:v都是String
key:value - 底层只要我们使用 StringRedisTemplate、RedisTemplate就可以操作redis
进行配置redis
spring:
redis:
url: redis://@192.168.227.129:6379
client-type: jedis
#或者
redis:
host:
username:
password:
client-type: jedis
url: redis://用户名:密码@链接地址:端口号
2.2 测试redis是否配置成功
@Test
void testRedis(){
ValueOperations<String,String > operations=stringRedisTemplate.opsForValue();
operations.set("zjj","tjk");
String tjk = operations.get("tjk");
System.out.println(tjk);
}
2.3 添加页面访问统计功能
2.3.1 添加redis的自定义拦截器
- RedisCountInterceptor
@Component
public class RedisCountInterceptor implements HandlerInterceptor {
@Autowired
StringRedisTemplate redisTemplate;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String url = request.getRequestURI();
redisTemplate.opsForValue().increment(url);
return true;
}
}
这样所有的页面请求就会通过拦截器进行统计数据
注意: 需要注解@component
这样RedisCountInterceptor 就会变成系统中的组件,后面配置拦截器的时候可以使用到
2.3.2 将拦截器加入到容器中
配置拦截器的规则
@Configuration
public class AdminMvcConfig implements WebMvcConfigurer {
/**
* 将拦截器加入到容器中
* @param registry
*/
@Autowired
RedisCountInterceptor redisCountInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginIntercepted()).
addPathPatterns("/**").//拦截了静态的资源
excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");
registry.addInterceptor(redisCountInterceptor). //配置了一个redis统计的的拦截器
addPathPatterns("/**").
excludePathPatterns("/","/login","/css/**","/fonts/**","/images/**","/js/**");
}
}
2.3.3 添加controller
@Controller
public class LoginController {
@Autowired
StringRedisTemplate redisTemplate;
/**
* 真正的跳转界面main
* @return
*/
@GetMapping("/main.html")
public String mainPage(HttpSession session,Model model){
ValueOperations<String, String> operations = redisTemplate.opsForValue();
String s = operations.get("/main.html");
String s1 = operations.get("/sql");
model.addAttribute("mainCount",s);
model.addAttribute("sqlCount",s1);
return "main";
}
}