Redis一些问题

Redis为什么会快

  • 完全基于内存的操作,绝大多数的请求都是内存的操作,并不需要通过硬盘进行存储,数据存于内存之中。
  • 采用单线程,不存在多线程或者多线程切换导致消耗CPU,无需考虑各种锁的问题,不会出现死锁导致的性能消耗。
  • 采用多路I/O复用模型,而非阻塞I/O;
  • 数据结构简单,对数据操作也简单。
  • 直接自己构建了VM机制,避免调用系统函数的时候,浪费时间去移动和请求。

Redis的数据类型

  • String:可存储字符串、整数或者浮点数,适用于做简单的键值对缓存。
  • List:可存储列表,适用于存储一些列表型的数据结构、比如粉丝列表、文章评论列表等。
  • Set:存储无序集合,适用于交集、并集、差集操作,比如两个人粉丝列表的交集。
  • Hash:存储包含键值对的无序散列表,适用于结构化的数据,比如对象。
  • ZSet:存储有序集合,如获取排名前几名的用户。

Redis的应用场景

  • 计数器
  • 缓存
  • 会话缓存
  • 全页缓存
  • 查找表
  • 消息队列
  • 分布式锁实现

Redis持久化机制

持久化是指将内存数据写入磁盘中去,防止宕机导致数据丢失。

Redis拥有两种持久化机制 RDB 和 AOF

RDB

RDB是Redis默认的持久化方式,按照一定时间将内存数据以快照形式保存到硬盘中,产生对应的数据文件dump.rdb。

优势:

  1. 只有一个dump.rdb,便于持久化。
  2. 容灾性好,一个文件可保存到安全的磁盘。
  3. 数据集较大时,比AOF的启动效率高。

劣势:

  1. 数据安全性低。由于是隔一段时间进行持久化,如果在此期间发生故障,会导致数据丢失。
  2. 备份时候占用内存, 在备份时会创建一个子进程,将数据写入临时文件,再将临时文件替换备份文件,因此持久化和数据恢复选择夜间较为合适。

AOF

AOF持久化是将Redis执行的每次写命令记录到单独的日志文件中,当重启redis就会重新从持久化的日志文件恢复数据 。当redis同时开启RDB和AOF时,将优先使用AOF。

优势:数据完整性和一致性更高,即便发生故障数据也能恢复。

劣势:当记录内容越来越多的时候,数据恢复速度也会越来越慢,

Redis过期键删除策略

  • 定期过期:设置过期时间的key都需要创建一个定时器,到期时间自动清除。
  • 惰性过期:每访问一个key,才进行判断key是否过期,过期则进行清除。
  • 定期过期:每隔一段时间扫描一定数量的key,并清除过期的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值