1 什么是 redis?
Redis 是一个基于内存的高性能 key-value 数据库。 (有空再补充,有理解错误 或不足欢迎指正)
2 Reids 的特点
Redis 本质上是一个 Key-Value 类型的内存数据库,很像 memcached,整个数 据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据 flush 到硬 盘上进行保存。因为是纯内存操作,Redis 的性能非常出色,每秒可以处理超过 10 万次读写操作,是已知性能最快的 Key-Value DB。
Redis 的出色之处不仅仅是性能,Redis 最大的魅力是支持保存多种数据结构,此 外单个 value 的最大限制是 1GB,不像 memcached 只能保存 1MB 的数据,因 此 Redis 可以用来实现很多有用的功能,比方说用他的 List 来做 FIFO 双向链表,
实现一个轻量级的高性 能消息队列服务,用他的 Set 可以做高性能的 tag 系统等 等。另外 Redis 也可以对存入的 Key-Value 设置 expire 时间,因此也可以被当 作一 个功能加强版的 memcached 来用。
Redis 的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性 能读写,因此 Redis 适合的场景主要局限在较小数据量的高性能操作和运算上。
3 Redis 支持的数据类型
- Redis 通过 Key-Value 的单值不同类型来区分, 以下是支持的类型:
- Strings
- Lists
- Sets 求交集、并集
- Sorted Set
- hashes
4 为什么 redis 需要把所有数据放到内存中?
Redis 为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据 写入磁盘。所以 redis 具有快速和数据持久化的特征。如果不将数据放在内存中, 磁盘 I/O 速度为严重影响 redis 的性能。在内存越来越便宜的今天,redis 将会越 来越受欢迎。
如果设置了最大使用的内存,则数据已有记录数达到内存限值后不能继续插入新值。
5 Redis 是单进程单线程的
redis 利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销
6 虚拟内存
当你的 key 很小而 value 很大时,使用 VM 的效果会比较好.因为这样节约的内存比较大.
当你的 key 不小时,可以考虑使用一些非常方法将很大的 key 变成很大的 value, 比如你可以考虑将 key,value 组合成一个新的value.
vm-max-threads 这个参数,可以设置访问 swap 文件的线程数,设置最好不要超过 机器的核数,如果设置为 0,那么所有对 swap 文件的操作都是串行的.可能会造成比 较长时间的延迟,但是对数据完整性有很好的保证.
自己测试的时候发现用虚拟内存性能也不错。如果数据量很大,可以考虑分布式 或者其他数据库
7 分布式
redis 支持主从的模式。原则:Master 会将数据同步到