# redis

                    List<SmsHomeAdvertise> list;
                    String json = cacheApi.get("home:advertise");
                    if(null != json){
                        list = JSON.parseArray(json,SmsHomeAdvertise.class);
                    }else{
                        QueryWrapper<SmsHomeAdvertise> queryWrapper = new QueryWrapper<>();
                        queryWrapper.eq("home_type", KxxUtils.NUMBER_ONE);
                        queryWrapper.eq("is_del", KxxUtils.NUMBER_ZERO);
                        queryWrapper.eq("status", KxxUtils.NUMBER_ONE);
                        //排序字段倒序
                        queryWrapper.orderByAsc("sort");
                        list = this.list(queryWrapper);
                        cacheApi.set("home:advertise", JSON.toJSONString(list), 10080);
                    }

redis 视频

https://www.bilibili.com/video/BV1pA411x7eA

image-20201118220419545

redis 分段锁

redisson 读锁 写锁

# redis 优化

# 内存优化

1. 控制 key 的长度
2. 避免存储 bigkey
3. 选择合适的数据类型
4. 把 Redis 当作缓存使用
5. 实例设置 maxmemory + 淘汰策略
6. 数据压缩后写入Redis

# 性能优化

1. 避免存储 bigkey
2. 开启 lazy-free 机制
3. 不使用复杂度过高的命令
4. 执行O(N)命令时,关注N的大小
5. 关注 DEL 时间复杂度
6. 批量命令代替单个命令
7. 避免集中过期 key
8. 使用长连接操作 Redis,合理配置连接池
9. 只使用 db0
10. 使用读写分离 + 分片集群
11. 不开启 AOF 或 AOF 配置为每秒刷盘
12. 使用物理机部署 Redis
13. 关闭操作系统内存大页机制

缓存雪崩,缓存穿透,缓存击穿

redis 删除策略

事务实现

集群方案 https://www.jianshu.com/p/e615507fa44a

主从复制原理