这其实是个很大的误区,这种误区一般会出现在自己进行测试的时候产生:
删除key后 可视化工具 (包括cmd命令)数据的确没有了,可是重启redis服务后,又存在是怎么回事呢?
不难发现 redis根目录下有了个dump.rdb文件 (基于RDB持久化方式 即redis默认的方式 只要自己没手动改持久化方式 都是rdb方式 并会产生该文件)。 那么持久化了就不能删除key吗? 其实并不是。
conf配置文件里面可以看到 Redis默认配置文件中提供了三个条件:
• save 900 1
• save 300 10
• save 60 10000
• 分别表示900秒(15分钟)内有1个更改,300秒(5分钟)内有10个更改以及60秒内有10000个更改。
重点来了:
也就是说,例如 删除redis中一个已存在的key: test,马上关闭并重启服务,打开的时候仍是读的之前的持久化文件,之前的持久化文件是包含这个test的,因为删除test之后还没有进行下一次持久化操作(要15分钟后才会进行持久化),如果删除这个key 等待15分钟后 重启redis 就不存在该key了 。
总结:出现这个误区是因为 删除了key 但是重启服务 又读到了之前的持久化文件