今天就跟大家聊聊有关怎样进行Redis缓存,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
缓存(和数据库的关系,只能保证最终一致性,不能保证强一致性)
高性能高并发
可实现分布式锁
单线程工作模型
避免了频繁上下文切换
采用非阻塞的I/O多路复用机制(多个I/O流入队并复用同一个线程运行)
Key
指向五种内存模型
String
:常用于缓存等
Hash
:常用于原生结构性缓存等
List
:可实现简单队列,可实现分页
Set
:可用于与计算差并交集(比如双方喜好的计算),还具备去重特性
SortedSet
(或称ZSet
):可实现排行榜(增量操作较耗时,读取操作通过跳跃表实现了高性能)、延时任务,范围查询等
RDB快照策略
在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)
有点:体积小、快照时资源消耗较少、还原速度快
缺点:数据不完整、易丢失数据
AOF日志策略
记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集
后台可对 AOF 文件进行重写以缩减其体量
优点:不易丢失数据
缺点:日志时资源消耗较多、体积容易过大、还原速度较慢
RDB&AOF混合策略
Redis 重启时, 它会优先使用 AOF 文件来还原数据集,其次考虑RDB快照
关闭策略
不提供持久化及恢复支持
过期键值删除策略(键值过期时间记录在过期表中,过期键值不保证立刻释放。没有过期时间的键值近似为持久的)
定期删除(定期渐进地查找过期的键值)
惰性删除(读取键值时候检查是否过期)
内存不足时的释放策略
noeviction:阻止新的写入报错
allkeys-lru:全量键值中移除最近最少使用key
allkeys-random:全量键值中随机移除某个key
volatile-lru:移除最少使用的带ttl的key
volatile-random:随机移除带ttl的key
volatile-ttl:移除过期时间更早的带ttl的key
淘汰策略配置maxmemory-policy
info # 服务概况和统计信息 dbsize #当前库中key数量 monitor #监控操作 #### 库操作 #### select dbname #选库 #### 键操作 #### keys key_pattern #搜索匹配正则的key #### 值操作 #### type key #检查key值类型 del key #删除key值 flushdb #清空当前库下key的值 flushall #清空所有库下key的值
缓存雪崩
大批量缓存同时失效或者缓存重建期间收到大并发请求,从而导致系统性能急剧下降
可能原因:大量缓存采用了相同过期时间、机器重启等等
解决方案:失效时间追加随机值,采用队列或加锁等方式来单线程更新缓存
看完上述内容,你们对怎样进行Redis缓存有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。