Java面试——Redis 相关

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_45124488/article/details/102641827

Java面试——Redis 相关

1,redis的介绍:

  • redis是一个非关系型数据库,NoSql
  • redis是一个内存型数据库,把数据存储在内存上,自动持久化。
  • redis支持集群环境,可以管理集群环境下的session
  • redis通过key-value的形式存储数据库。

2,redis的常用的存储数据类型:

string,hash,set,zset,list

3,redis的缓存的持久化机制:

RDB(Snapshotting)和AOF(Append Only File)
​RDB:全本快照,把内存中的数据全部写入磁盘文件中,默认的持久化。

4,RDB的机制的运行原理:

1,redis通过fork产生子进程。
​2,父进程继续处理client请求,子进程负责将快照写入临时文件。
​3,子进程写完后,用临时文件替换原来的文件然后子进程退出。

AOF:以日志的方式做增量备份。

5,AOF的机制的运行原理:

1,redis通过fork产生一个子进程。
​2,父进程继续处理Client请求,子进程把AOF内容写入缓冲区。
​3,子进程写完退出,父进程接收退出消息,将缓冲区AOF写入临时文件。
​4,临时文件重命名为appendonly.aof,将原来的文件覆盖掉,整个过程完成。
​如果想要使用AOF机制,需要在redis的配置文件中开启。开启了AOF机制,RDB和AOF同时存在,但是在恢复数据的时候,使用AOF恢复数据。

5,redis中还有一种机制–日志重做:

以内存中现有数据作为基础,把对应的命令写入到磁盘文件中,把文件中原来的文件覆盖掉。

6,由RDB机制转换为AOF机制,数据丢失问题:

解决方案:在没有关机的情况下,直接修改为AOF机制,也就是热切换。

7,redis的淘汰策略:

Redis提供了5种数据淘汰策略:
1,volatile-lru:使用LRU算法进行数据淘汰(淘汰上次使用时间最早的,且使用次数最少的key),只淘汰设定了有效期的key
2,allkeys-lru:使用LRU算法进行数据淘汰,所有的key都可以被淘汰
3,volatile-random:随机淘汰数据,只淘汰设定了有效期的key
4,allkeys-random:随机淘汰数据,所有的key都可以被淘汰
5,volatile-ttl:淘汰剩余有效期最短的key

  • 最好为Redis指定一种有效的数据淘汰策略以配合maxmemory设置,避免在内存使用满后发生写入失败的情况。
    • 一般来说,推荐使用的策略是volatile-lru,并辨识Redis中保存的数据的重要性。
    • 对于那些重要的,绝对不能丢弃的数据(如配置类数据等),应不设置有效期,这样Redis就永远不会淘汰这些数据。对于那些相对不是那么重要的,并且能够热加载的数据(比如缓存最近登录的用户信息,当在Redis中找不到时,程序会去DB中读取),可以设置上有效期,这样在内存不够时Redis就会淘汰这部分数据。

猜你喜欢

转载自blog.csdn.net/weixin_45124488/article/details/102641827
今日推荐