redis基础知识总结

2020-10-15  本文已影响0人  农民工进城
1.Redis支持的数据类型

集合类型:有两种底层实现结构,哈希表和跳表实现“快”,整数数组和压缩链表节省内存空间

两个阈值,一旦超过了阈值,Hash 类型就会用哈希表来保存数据了。

2.为什么单线程Redis能那么快?
3.Redis 的管道
4.Redis事务(MULTI,打包执行命令)
5.Redis实现异步队列

一般使用list结构作为队列,rpush生产消息,lpop消费消息。当lpop没有消息的时候,要适当sleep一会再重试。
如果对方追问可不可以不用sleep呢?list还有个指令叫blpop,在没有消息的时候,它会阻塞住直到消息到来。
如果对方追问能不能生产一次消费多次呢?使用pub/sub主题订阅者模式,可以实现1:N的消息队列。

6.什么是Redis持久化?Redis有哪几种持久化方式?优缺点是什么?

这个过程Redis采用的是copy-on-write技术 ,那么什么是COW呢?

4dc5fb99a1c94f70957cce1ffef419cc.jpg

bgsave 子进程是由主线程 fork 生成的,可以共享主线程的所有内存数据。
bgsave 子进程运行后,开始读取主线程的内存数据,并把它们写入 RDB 文件。
此时,如果主线程对这些数据也都是读操作(例如图中的键值对 A),那么,主线程和 bgsave 子进程相互不影响。
但是,如果主线程要修改一块数据(例如图中的键值对 C),那么,这块数据就会被复制一份,生成该数据的副本。然后,bgsave 子进程会把这个副本数据写入 RDB 文件,而在这个过程中,主线程仍然可以直接修改原来的数据。

AOF 机制给我们提供了三个选择,也就是 AOF 配置项 appendfsync 的三个可选值,如下:


72f547f18dbac788c7d11yy167d7ebf8.jpg

Redis会定期做aof重写,压缩aof文件日志大小。
如何压缩?
redis会对过大的AOF文件进行重写,以此来压缩AOF文件的大小。
具体的实现是:检查当前键值数据库中的键值对,记录键值对的最终状态,从而实现对某个键值对重复操作后产生的多条操作记录压缩成一条的效果,进而实现压缩AOF文件的大小效果

在redis实例重启时,优先使用aof来恢复内存的状态,如果没有aof日志,就会使用rdb文件来恢复。

AOF跟RDB相结合:
Redis 4.0 中提出了一个混合使用 AOF 日志和内存快照的方法。简单来说,内存快照以一定的频率执行,在两次快照之间,使用 AOF 日志记录这期间的所有命令操作。这样一来,快照不用很频繁地执行,这就避免了频繁 fork 对主线程的影响。而且,AOF 日志也只用记录两次快照间的操作,也就是说,不需要记录所有操作了,因此,就不会出现文件过大的情况了,也可以避免重写开销。

7.redis的6种数据淘汰策略

maxmemory 用于指定 Redis 能使用的最大内存

8.redis主键失效机制
上一篇下一篇

猜你喜欢

热点阅读