redis
[Windows 下载](https://github.com/microsoftarchive/redis/releases)
[文件含义](https://www.cnblogs.com/ningskyer/articles/5730611.html)
# java 使用 redis
## pom
```
<!--redis 缓存-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--jedis -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
```
## main (开启redis服务端)
```
public static void main(String[] args) {
Jedis jedis = new Jedis("localhost", 6379);
// String
jedis.set("tt","ttttt");
System.out.println(jedis.get("tt"));
}
```
参考 [Jedis Util](https://www.cnblogs.com/tengfly/p/9307373.html)
# java redis 实现分布式锁
## 入门级实现分布式锁


> 防止死锁

> 加上失效时间

>高并发情况下如果超时 会出现删除其他线程的锁,删除时进行一次判断是否是自己的锁。(t1 设置超时时间10s,t1执行完需要15s ,在第10s时 因为已经超时,所以要把这个锁删除。这时t2可以抢到锁,但是在第5s时 共15s , t1执行完毕 finally 再次执行删除锁。这时他将t2的锁删除。t3就可以抢到锁。)

## Redisson(和jedis类似,适用于分布式) 实现分布式锁




[springboot 实现](https://blog.csdn.net/qq_37892957/article/details/89337943?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight)参考
# redis概念(雪崩,穿透,击穿)
## 雪崩
同一时间大批量数据失效
缓存雪崩:大量缓存数据同时间失效,导致用户直接发起大量请求到数据库,产生瓶颈。
1、生成随机失效的缓存时间数据;
2、让缓存节点分布在不同的物理节点上;
3、生成不失效的缓存数据;
4、定时任务更新缓存数据;
## 穿透
非正常数据请求
缓存穿透:用户请求数据,例如ID为负数,不存在缓存里,也不存在数据库里,会造成缓存穿透。
1、无意义数据放入缓存,下一次相同请求就会命中缓存;
2、IP过滤;
3、参数校验;
4、布隆过滤器;
## 击穿
并发查询同一数据
缓存失效:由于缓存热点键到时失效导致用户请求直接访问数据库
1、用久缓存;
2、分布式锁
a.单体应用—>互斥锁—>zookeeper ,redis实现。
# redis持久化

## RDB


## AOF

