Redis问题---个人记,不喜勿喷

 

  • redis是多线程还是单线程?(回答单线程的请回吧,为什么请回,请往下看)

单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。
redis中io多路复用器模块是单线程执行,事件处理器也是单线程执行,两个线程不一样。所以实际redis应该是单进程多线程,只是不同的模块都用的单线程实现。
两个维度来举例:
(1)若是client发送命令到server的话,server处理命令是单线程逐条进行的。
(2)server内部可以是多线程的,比如aof持久化,假设策略每秒,那就是再单独开启一个线程去执行aof文件持久化操作,这就是多线程了。

 

  • redis的持久化开启了RDB和AOF下重启服务是如何加载的?(10个人9个回答错误)

Redis会优先使用AOF日志来恢复数据,因为AOF保存的文件比RDB文件更完整。
RDB是一种快照存储持久化方式,默认生成的文件名为dump.rdb
rdb文件恢复数据比较快,rdb文件非常紧凑,适合于数据备份,通过RDB进行数据备,由于使用子进程生成,所以对Redis服务器性能影响较小。
如果服务器宕机的话,采用RDB的方式会造成某个时段内数据的丢失

通过RDB进行数据备,由于使用子进程生成,所以对Redis服务器性能影响较小。

AOF只是追加日志文件,因此对服务器性能影响较小,速度比RDB要快,消耗的内存较少。
AOF方式生成的日志文件太大,即使通过AFO重写,文件体积仍然很大;恢复数据的速度比RDB慢

  • redis如果做集群该如何规划?AKF/CAP如何实现和设计?

如果希望快速部署,那么可以考虑单节点部署方式。
如果只需要考虑可靠性,那么可以考虑主从复制模式。
如果想要保证高可用,不需要考虑储存成本可以考虑哨兵模式。
如果想提高集群的扩展性和可用性,不要求保证数据的强一致性,且没有批量操作,那么可以考虑集群模式。

  • 10万用户一年365天的登录情况如何用redis存储,并快速检索任意时间窗内的活跃用户?

 Bitmap是一串连续的2进制数字(0或1),每一位所在的位置为偏移(offset),在bitmap上可执行AND,OR,XOR以及其它位操作。
 占空间少

 

  • 100万并发4G数据,10万并发400G数据,如何设计Redis存储方式?

    哨兵模式;集群模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章