1.redis定义
内存的键值数据库,在内存中的优势是访问速度比磁盘高几个量级,缺点是成本高昂,掉电不能持久保存,因此有运行过程中持久化的需求,也就是掉电之后能从持久化存储中恢复。
2.AOF日志和RDB快照
这两个都是用来解决持久化的方法,AOF通过存储数据库执行过的指令,来恢复,并且因为存储的是已经执行成功的指令不存在指令有语法错误的情况。
因为数据库可能对同一个位置进行多次操作,因此对于一个位置的最新值我们保留过往的记录是有浪费的,因此可以在一段时间后就重写AOF日志
RDB也叫Redis database,在磁盘以文件的形式存储redis在内存中的状态,为了防止阻塞主线程使用了fork子进程生成快照的方法,为了让redis在生成快照时可写可读使用了写时拷贝的机制,同时为了防止redis快照花费时间多在多次快照之间用AOF日志记录操作的命令。
3.高可用的方法:使用主从一致,主库写,多库读的模式来分担压力,需要解决的问题是主从数据库的一致性问题。
使用全量复制RDB快照来复制,同时在复制之后会通过基于长连接的命令以及增量的RDB快照来减少资源消耗。
4.主库崩溃的解决方法
添加监控,使用哨兵监控主库,同时为了确保主库是真的下线避免无所谓的换主库使用哨兵集群少数服从多数监控;之后哨兵需要选从库,依据筛选和打分的机制;最后是通知其他从库和客户端。
5.哨兵集群
哨兵集群的互相发现是通过在主库订阅和发布信息,然后互相得到对方的信息,从库列表信息是从主库获得,同时客户端了解哨兵集群也是通过在主库发布和订阅信息。
6.String的问题
对于小数据,string的额外信息占用空间大
7.统计方法
聚合统计、排序统计、二值统计、基数统计