主要数据格式:string list hash set socte set
实战key:”用户名:id”:” value”
数据持久化:aof rdb
Aof:保存操作指令,文件较大,恢复比较慢,可以支持毫秒级不丢失数据,用户误操作 删除数据,直接删除最后一行的操作,默认不开启。
Rdb:数据形式保存,恢复快,但是服务器宕机会丢失数据,支持手动保存但是会时常比 较久。
淘汰机制:默认返回错误不淘汰数据,有8种淘汰机制,一般使用近似LRU最少使用淘汰 原则,随机挑选几个使用使用最少的 ,淘汰其中最近没有被使用的一个,4.0以后新增 LFU,增加一个使用频率计算,使用key的最近使用时间已经使用次数计算频率淘汰, 可以保证冷数据最近被使用一次不会被当成热数据保存下来;
缓存雪崩:主要指大批量数据到期,查询数据量巨大数据量压力太大导致宕机,
解决方案:
均匀过期:为数据设置过期时间使用随机数据,或者自定义规律过期时间
加互斥锁:为新增缓存数据增加锁,同时只能有一个线程访问数据库
缓存永不过期:增加一个守护线程定时为数据刷新缓存过期时间
双层缓存策略:增加主备缓存
缓存预热:主要针对大型数据第一次上线在启动就初始化,避免上线直接导致数据 崩溃,减少流量压力。
缓存降级:默认缓存失效过去缓存服务器挂掉,不去访问数据库,直接返回默认值
或者访问服务的内存数据。降级操作属于有损操作,尽量减少对业务影 响。
哨兵:通过哨兵模式管理主从,通过心跳检测判断主服务器是否正常,需要多个哨兵单个哨 容易误判。再选举出领导者,进行替换操作。领导者选举算法--Raft 算法。
常用客户端:jedis redisson lettuce
Jedis:提供了比较全面的Redis命令的支持,比较全面的redis操作特性
Redisson: 实现了分布式和扩展的Java数据结构
Lettuce:高级redis客户端,用于线程安全同步,异步的响应使用,支持集群,sentinel, 管道和编码器
心跳机制:
Sentinel与Redis Node:
Redis Sentinel 是一个特殊的 Redis 节点。在哨兵模式创建时,需要通过配置指定 Sentinel 与 Redis Master Node 之间的关系,然后 Sentinel 会从主节点上获取所有从节 点的信息,之后 Sentinel 会定时向主节点和从节点发送 info 命令获取其拓扑结构和状 态信息。
Sentinel与Sentinel:
基于 Redis 的订阅发布功能, 每个 Sentinel 节点会向主节点的 sentinel:hello 频道 上发送该 Sentinel 节点对于主节点的判断以及当前 Sentinel 节点的信息 ,同时每个 Sentinel 节点也会订阅该频道, 来获取其他 Sentinel 节点的信息以及它们对主节点的 判断。
Redis 笔记
最新推荐文章于 2024-05-21 19:41:45 发布