Redis内部原理

来源:互联网 发布:淘宝会员等级表 编辑:程序博客网 时间:2024/06/08 15:35

redis默认创建16个数据库,通过select语句可以切换数据库,如

select 2

可用通过expire命令或者pexpire命令,以秒或毫秒精度为数据库中的某个键设置生存时间,到期后服务器自动删除键

set key value
expire key 5

TTL命令和PTTL命令返回一个键的生存时间

TTL key

PERSIST命令可以移除一个键的生存时间

PERSIST key

过期删除策略有三种
定时删除 创建定时器,让定时器来删除
惰性删除 获取键时,检查是否过期,过期则删除
定期删除 每隔段时间,程序对数据库进行一次检查,删除过期键
Redis用到了2,3两种策略

Redis2.8版本增加了数据库通知功能,客户端通过订阅给定的频道和模式,来获知数据库中键的变化,以及数据库中命令的执行情况

Redis数据库主要由dict和expires两个字典构成,其中dict字典负责保存键值对,而expires字典则负责保存键的过期时间

Redis提供了RDB持久化功能,这个功能可以将Redis在内存中的数据库状态保存到磁盘里面,RDB持久化即可以手动执行,也可以根据服务器配置选项定期执行。
手动载入使用save命令和bgsave命令。服务器配置保存后台调用bgsave命令。使用save选择设置多个保存条件时,只要其中一个条件被满足,服务器就会执行BGSAVE命令
当服务器启动时,如果用户没有设置,服务器会为save选项设置默认条件
除了RDB持久化功能之外,Redis还提供AOF(Append Only File)持久化功能。AOF持久化通过保存Redis服务器所执行的写命令来记录数据库状态.
在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制另一个服务器

127.0.0.1:12345> SLAVEOF 127.0.0.1 6379

Sentinel是Redis的高可用性解决方案,由一个或多个Sentinel实例组成的Sentinel系统可以监视任意多个主服务器,以及这些主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,然后由新的主服务代替已下线的主服务器继续处理命令请求.

Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求。可以通过服务器配置修改响应的选项.SLOWLOG GET 命令查看服务器所保存的慢查询日志

通过执行MONITOR命令,客户端可以将自己变为一个监视器。每当服务器处理一条命令请求时,还会将关于这条命令请求的信息发送给所有监视器.

0 0