为什么 redis 需要把所有数据放到内存中?
Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据
写入磁盘。所以 redis 具有快速和数据持久化的特征。
如果不将数据放在内存中,磁盘 I/O 速度为严重影响 redis 的性能。在内存越来
越便宜的今天,redis 将会越来越受欢迎。
如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新
值。
Redis 是单进程单线程的
redis 利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开
销
虚拟内存
当你的 key 很小而 value 很大时,使用 VM 的效果会比较好.因为这样节约的内存
比较大.
当你的 key 不小时,可以考虑使用一些非常方法将很大的 key 变成很大的 value,
比如你可以考虑将 key,value 组合成一个新的 value.
vm-max-threads 这个参数,可以设置访问swap 文件的线程数,设置最好不要超过
机器的核数,如果设置为 0,那么所有对 swap 文件的操作都是串行的.
可能会造成比较长时间的延迟,但是对数据完整性有很好的保证.
自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式
或者其他数据库
分布式
redis 支持主从的模式。原则:Master 会将数据同步到 slave,而 slave 不会将
数据同步到 master。Slave 启动时会连接 master 来同步数据。
这是一个典型的分布式读写分离模型。我们可以利用 master 来插入数据,slave
提供检索服务。这样可以有效减少单个机器的并发访问数量。