Java面试——Redis 相关

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就会淘汰这部分数据。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值