一、redis缓存
1、系统优化策略
引入缓存机制可以有效的降低用户访问物理设备的频次,从而提高响应速度,防止高并发
2、如何设计缓存
1、缓存数据如何存储?应该采用的什么样的数据结构? key-value 因为key的唯一性
2、缓存数据的容量的大小如何定义?
动态维护缓存数据,将不需要的数据提前删除。通过LRU算法/LFU算法/随机算法/TTL算法
3、缓存的数据保存到内存中,但是内存有断电即擦除的特点,如何解决?
定期将内存持久化(写入硬盘中)
4、单台缓冲服务器性能不足,所以一般需要搭建集群(实现高可用)
5、使用c语言开发
3、Linux环境下安装Redis
Linux安装软件,我相信大家是没有问题的
3.3.1、配置Redis配置文件
1、修改redis.conf文件
1)去掉bind 127.0.0.1
2)修改保护模式 protected-mode no(默认yes)
3)开启后台运行 daemonize yes (默认no)
3.3.2、Redis服务器命令
Redis服务需要依赖配置文件,所以操作Redis命令最好在根目录
1、启动命令 (redis-server redis.conf)

2、进入redis客户端 (redis-cli -p 6379)端口号为默认时可以省略
3、关闭Redis服务器 (redis-cli -p port shutdown)

4、SpringBoot整合Redis
4.1、导入依赖
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
</dependency>
4.2、配置文件
新建redis.properties
#配置单台redis
redis.host=ip地址
redis.port=6379
4.3、配置类
新建Redis.Config
@Configuration //标识我是一个配置类, 一般与@Bean的注解连用
@PropertySource("classpath:/properties/redis.properties")
public class RedisConfig {
@Value("${redis.host}")
private String host;
@Value("${redis.port}")
private Integer port;
@Bean
public Jedis jedis(){
return new Jedis(host,port);
}
}
4.4、AOP实现Redis缓存
利用AOP可以实现对方法功能的“扩展”,实现代买的“解耦”
切面 = 切入点表达式+ 通知方法
4.4.1切入点表达式
1)bean(包名.类名) 拦截bean的所有方法 粗粒度
2)within(包名.类名)扫描某个包下的某个类
3)excution(返回值类型 包名.类名.方法名(参数列表))细粒度
4)@annotation(包名.注解名)细粒度
4.4.2通知方法
通知相互之间没有顺序,每个通知方法都完成特定的功能。
1)before 目标方法执行之前
2)afterReturning 目标方法执行之后
3)afterThrowing 目标方法执行抛出异常时执行
4)after 目标方法执行异常或返回时执行
5)around 目标方法执行前后都要通知
下一步:Redis的持久化和内存策略
版权声明:本文为xf827102原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。