Redis 和 常见的Linux命令面试点

1.为什么要用Redis

Redis 基于内存,可持久化的key-value数据库,它支持的存储类型相对较多,包括string,list, set,zset, hash类型。

优势在于:

速度快,性能极高,可持久化,丰富的数据类型,支持数据的备份

Redis 是单线程

 

2.为什么说Redis快

1. 完全基于内存,数据存在内存中。

2.专门的数据结构设计。

3.采用单线程,避免了不必要的上下文切换和竞争条件。

4.IO多路复用。

 

3. Redis 5种数据类型的底层实现。

 

1. 简单的动态字符串SDS和C语言自带的字符串有什么不同

SDS保存了字符串的长度

避免了缓冲区溢出

减少了修改字符串内存的重新分配

二进制安全

部分兼容C字符串的函数

 

redis字典的底层实现hashTable的相关问题

(1) 解决冲突: 连地址法,与java的hashmap一样

(2) 扩容:

渐进式ReHash

当数据量特别大时,进行一次reHash操作会使得Redis一段时间内不能进行其他操作,所以再渐进式rehash期间,字典的删除查找跟新操作可能会在两个Hash表上进行。

压缩链表

zset底层跳表原理(  为什么不用红黑树)

跳表的本质是多级链表,并有序

(1) Hash表只能做单个key的查找,不适用于范围查找

(2) 跳表的范围查找比红黑树更快

 

4.Redis中过期策略和缓存淘汰机制

1.策略分为定期删除+懒惰性删除

2.redis内存淘汰机制

当内存不足以容纳新写入的数据时,新写入操作会错误。

当内存不足以容纳新写入的数据时,移除最近最少使用的key

 

5.  Redis中持久化机制

Redis 的持久化有两种机制,一种是RDB,也就是快照。快照就是一次全量的备份,会把所有Redis的内存数据进行二进制的序列化存储到硬盘(Redis 会Fork一个子进程, 快照的持久化就交给子进程去处理,而父进程继续处理线上业务的请求)

另一种是AOF日志,AOF日志记录的是数据操作修改的指令记录日志

Redis 4.0之后,引入了新的持久化模式,混合持久化

 

6. Redis集群的主从复制

1. 采用完整重同步和部分重同步两种模式

(1)完整同步用于处理初次复制情况

(2)部分重同步用于处理断线后重复制的情况。

 

7. 缓存雪崩和缓存穿透问题

1. 缓存雪崩

缓存同一时间大面积失效,后面的请求都会落到数据库上,造成数据库短时间内承授大量的请求而崩掉。

解决办法:

缓存数据的过期时间设置为随机

设置热点数据永远不过期。

2. 缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,发起id为-1或id为特别大的请求。

从缓存取不到数据,从数据库中也没有取到,这是可以将key-value设置为key-null,缓存有效时间设置段一些

 

常见的Linux命令

tail -n 5 xxx: 显示最后5行

tail -n +1000 xxx 从1000行开始,显示1000行以后的

tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。 

以上命令常被用来查日志使用。

用sed命令查看中间几行

sed -n '5,10p' filename 查看文件的5到10行

Linux more 命令类似 cat ,不过会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似),使用中的说明文件,请按 h 。

top 命令:动态显示总的cpu和内存的使用请求,以及每个进程cpu和内存的重用率。

ps:查看当前运行的进程。

netstat: 观察端口的占用,加上grep过滤端口

netstat -apn | grep 8080

df: 查看硬盘使用情况。

du: 查看当前指定文件或目录占用磁盘空间的大小。

lsof: 查看一个进程打开了哪些文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值