如何编辑网站模板,下列哪个不是网络营销成熟阶段出现的网络营销方式,专门做生鲜的网站,素材网大全目录
一、什么是Redis#xff1f;
二、Redis如何实现高可用
三、缓存与数据库不一致问题
四、Redis持久化方式
五、6种淘汰策略
六、缓存穿透和缓存雪崩
七、Redis实现分布式锁
八、Redis.conf 配置文件详解
九、常用命令 一、什么是Redis#xff1f; Redis#xf…目录
一、什么是Redis
二、Redis如何实现高可用
三、缓存与数据库不一致问题
四、Redis持久化方式
五、6种淘汰策略
六、缓存穿透和缓存雪崩
七、Redis实现分布式锁
八、Redis.conf 配置文件详解
九、常用命令 一、什么是Redis RedisC语言实现的、数据存储在内存中的、开源的、键值对key-value数据库软件。 1.它通过提供多种键值数据结构来适应不同场景下的存储需求目前Redis支持的键值数据结构有
字符串String类型哈希hash类型列表list类型集合set类型有序集合zset类型位图GEO基于概率的 Redis GEO存储地理位置信息并进行操作 Redis Stream针对发布 / 订阅它提供了消息的持久化 和 主从复制功能能访问任何时刻的数据并记住每个客户端的访问位置保证消息不会丢失。 2.Redis的功能
缓存分布式锁数据持久化消息队列
3.Redis的应用场景
缓存数据查询、短连接、新闻内容、商品数据等等。最多使用任务队列秒杀、抢购、买票等应用排行榜网站访问统计数据过期处理可以精确到毫秒
4.Redis 和 memcached区别
支持的数据类型、速度、持久化、灾难恢复
5.Jedis
是Redis 官方推荐的面向Java的客户端提供了很多操作接口。redisson与Jedis区别分布式功能简单不支持字符串、排序、事务、管道、分区等。
6.Spring-data-redis
是Spring大家族的一部分提供了一个高度封装的 “RedisTemplate类”对Jedis客户端中大量的API进行了封装。 二、Redis如何实现高可用 1.搭建集群解决单机Redis内存资源有限的问题。 2.主从复制一个主服务器和多个从服务器从服务器中备份着主服务器的数据。使充分利用CPU、IO资源。主服务器可以进行读写操作当发生写操作的时候自动将数据同步到从服务器而从服务器一般是只读的并接收主服务器同步过来的数据达到读写分离。 主节点写从节点 只能读 作用数据备份、故障恢复、负载均衡、高可用 3.哨兵机制负责监控、提醒、自动故障转移。 4.限流降级 5.数据预热提前统计哪些数据需要频繁使用启动时预加载进Redis Redis集群Master、Slave最少 一主二从默认情况下每台Redis都是主节点。一般情况只配置从机认老大。
全量复制重新连接到主机同步操作 进行全量复制。增量复制都启动着从机是增量复制
哨兵模式自动选举 主节点
哨兵配置文件 —— sentinel.conf 三、缓存与数据库不一致问题
先删除 Redis再写 MySQL再删除 Redis可重试。先更新数据库再删除缓存。并发场景下可以将删除缓存、修改数据库、读取缓存等操作放到队列中实现串行化操作。 四、Redis持久化方式 持久化就是把内存的数据写到磁盘中去防止服务器宕机导致数据丢失。 Redis提供的两种持久化方式
Redis服务器默认开启RDB关闭AOF如果AOF开启优先使用AOF
RDB默认指定时间间隔对数据快照存储。AOF每收到一个写命令都通过write函数追加到文件。将所有 写的操作命令 都记录下来文件不断追加、文件会越来越大
RDB持久化 1、触发机制 1满足 save条件。 save 60 1 当时间到60秒时如果redis发生了至少1次变化则执行bgsave。 save命令会阻塞Redis服务器进程。 bgsave命令只有执行fork操作创建子进程会阻塞一会儿子进程来负责创建RDB文件。 2执行 flushall 命令 3正常关机退出 都会自动生成一个dump.rdb 2、如何恢复rdb文件 把rdb文件 放到Redis启动目录启动的时候就会恢复数据 config get dir //获取启动目录 五、6种淘汰策略 redis默认的内存淘汰策略是noeviction内存不足时写入直接报错 volatile-lru从设置了过期时间的数据集中选择 最近最少使用的 数据释放allkeys-lru从数据集中(包括设置过期时间以及未设置过期时间的数据集中)选择 最近最少使用的 数据释放 volatile-lfu从设置了过期时间的数据集中选择 访问频率最少 的数据进行淘汰 allkeys-lfu从所有数据中选取 访问频率最少 的数据进行淘汰 volatile-random从设置了过期时间的数据集中随机选择一个数据进行释放allkeys-random从所有数据中 随机选择 一个数据进行入释放volatile-ttl从设置了过期时间的数据集中选择 马上就要过期的 数据进行释放操作noeviction不删除任意数据(但redis还会根据引用计数器进行释放)这时如果内存不够时会直接返回错误。 相关算法实现
1缓存过期淘汰算法使用 HashMap 或者 concurrentHashMap实现。
2LRU算法 最近最少使用的 实现按访问时间继承LinkedHashMap HashMap 双向链表。重写removeEldestEntry方法。
import java.util.LinkedHashMap;
import java.util.Map;public class LRUCacheK, V extends LinkedHashMapK, V {public LRUCache(int initialCapacity, float loadFactor) {//accessOrder为true表示双向链表中的元素按照访问的先后顺序排列super(initialCapacity, loadFactor, true);}Overrideprotected boolean removeEldestEntry(Map.EntryK, V eldest) {return size() initialCapacity * loadFactor;}
}
LFU算法 访问频率最少 实现访问次数访问时间缓存对象里加个 访问次数字段重写个compareTo方法。 六、缓存穿透和缓存雪崩 缓存穿透大量查不到布隆过滤器、设置空对象缓存击穿量太大、缓存过期设置热点数据永不过期、加分布式锁缓存雪崩Redis宕机、缓存集体失效Redis高可用 七、Redis实现分布式锁 八、Redis.conf 配置文件详解
经常修改 端口、pid 名字、log 文件名、dump.rdb 名
网络绑定的IP、端口设置、保护模式通用设置以守护进程方式后台运行、指定pid文件、日志级别、日志文件名、默认数据库数量16、是否显示logo快照持久化Redis 是内存数据库不持久化到磁盘 那么断电数据就会丢失。设置持久化条件指定时间间隔、是否压缩rdb文件、rdb文件保存的目录 dump.rdb、 appendonly.aof主从复制安全设置密码客户端限制设置能连上Redis的最大客户端数量、配置最大内存、内存满了的处理策略清理策略AOF配置默认使用rdb方式持久化、不开启aof模式在大部分情况下rdb 完全够用。持久化文件名、同步 设置 九、常用命令
命令
1ping
2config get requirepass
3config set requirepass 密码
4auth 密码5config get dir //获取启动目录
6save / bgsave //会在Redis安装目录生成 dump.rdb文件即备份文件。//后台创建备份文件
7redis-benchmark -n 1000 -q //同时执行1000个请求来检测性能-c: 指定并发连接数8info replication //查看当前主机信息角色、从机数量
9SLAVEOF IP 端口 //给从机配置主节点关机失效。最好在配置文件配置
10SLAVEOF no one //主节点宕机让自己变成主节点11publish / subscribe //发布订阅
dbfilename dump.rdb //配置RDB文件名 appendonly yes //开启AOF持久化的主流方式实时性更好 appendfilename appendonly.aof //配置AOF文件名称