Redis缓存机制

一、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)

关闭Redis的两种方式

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版权协议,转载请附上原文出处链接和本声明。