1. 有人说Redis只适合用来做缓存,当数据库来用则不合适,你怎么看?
Redis能否做数据库用取决于以下几个条件:
1.数据量: redis是内存数据库,要受限于内存的容量。
2. 数据的结构:是否能够将关系型数据结构都转换成key/value的形式
3. 查询的效率:对范围查询等,是否能转换为搞笑的hash索引查询
Redis能不能用来当数据库,取决于你想要存储什么数据:
如果你打算存储一些临时数据,数据规模不大,不需要太复杂的查询,但是要求性能比较高,这种情况下是可以当数据库使用的。
能否用来做数据库,要看具体的需求:
1.redis的持久化有问题,如果使用的是aof模式,并且设置的是fsync always方式,那么性能会很低,如果数据结构非常适用于适用redis存储并且对性能要求不高,或者对性能要求很高但允许一定程度的丢失数据,则可以。
2.redis数据都是存储在内存中的,如果内存满了,数据就不会存储到硬盘上了。
redis是一种key/value的内存数据库,项目里基本上都是用来做缓存的,可以对数据设置过期时间,时间到了之后就会被清理掉。
2. 为什么Redis先执行指令,之后在记录AOF日志,而不是像其他存储引擎一样反过来呢?
因为Redis会在收到客户端修改指令后,进行参数校验、逻辑处理,如果没有问题,就立即将该指令文本存储到AOF日志中,也就是说,先执行指令才将日志存盘。如果反过来,则可能会存入很多无效的指令(或者错误指令)。