存储数据结构 操作命令

String set,get,decr,incr,mget

List lpush,rpush,lpop,rpop,lrange

Hash hget,hset,hgetall

Set sadd,spop,smembers,sunion

Sort set zadd,zrange,zrem,zcard

 

 

淘汰机制:

回答:

1、从设置过期的里面淘汰最近最久未使用的

2、从设置过期的里面淘汰即将过期的

3、从设置过期的里面随机淘汰

4、从全部里面淘汰最近最久没使用的(主要是这个)

5、从全部里面随机淘汰。

6、不淘汰(当有数据添加时,内存又不足,就会报错)

 

持久化机制:

RDB:对数据进行快照,就是将当前数据进行一边快照,保存到硬盘上。我们可以去设置这个快照规则,可以去配置 save 1 30 意思就是30s以内,如果又一次修改就会触发快照。

dump.rdb 文件,这个文件存储的是数据集。是当前数据的一个快照。

save: 首先阻塞redis服务器,然后去执行当前的save命令,这段时间redis不能执行其他命令,等save命令执行完之后,再开始redis服务器

bgsave:redis服务器会fork一个子进程去执行bgsave命令,当前线程仍然可以执行执行其他命令

每一次快照,rbd文件都会被替换。这个过程应该就是主线程去做的。(对,这样可以保证数据不一致问题就是替换这个过程还有别的命令过来,造成数据不一致)

 

 

AOF : 追加的方式,实质将写命令进行一个append,追加到最后。所以AOF里面存的都是写操作命令。文件要比RDB大。

重写: 当aof文件文件已经存不下了。那就会启用重写机制,重写机制如下:

lpush 1 ;lpush2 ; lpush3 ; lpush4 ;

改成lpush 1,2,3,4

这样就缩减了文件的大小。

************画重点额。

AOF同样也是创建子进程去重写AOF文件的。但是这样就会出现一个问题。

当子进程重写AOF的时候,父进程这个接受client的改命令操作,这个时候将会到时重写前后的命令不一样。怎么办?

这个时候会新出一个AOF缓冲区,当redis创建了子进程之后,然后所接受的client发出写操作命令就会被记录到AOF缓冲区里面。

redis知识点

 

相关文章:

  • 2021-12-31
  • 2021-09-21
  • 2021-08-08
  • 2021-12-08
  • 2021-09-27
  • 2021-09-10
猜你喜欢
  • 2021-09-27
  • 2021-06-18
  • 2021-12-05
  • 2021-06-14
  • 2021-07-08
  • 2021-07-06
相关资源
相似解决方案