2. 认识Redis
大约 3 分钟
Redis是什么
Redis(Remote Dictionary Service) 是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。目前由VMware主持开发工作。
Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并在此基础上实现 master - slave (主从同步)
Redis 特点:
- 所用语言:C/C++
- 特点:运行异常快
- 使用许可: BSD
- 协议:类 Telnet
- 有硬盘存储支持的内存数据库,
- 但自2.0版本以后可以将数据交换到硬盘(注意, 2.4以后版本不支持该特性!)
- Master-slave复制(见编注3)
- 虽然采用简单数据或以键值索引的哈希表,但也支持复杂操作,例如 ZREVRANGEBYSCORE。
- INCR & co (适合计算极限值或统计数据)
- 支持 sets(同时也支持 union/diff/inter)
- 支持列表(同时也支持队列;阻塞式 pop操作)
- 支持哈希表(带有多个域的对象)
- 支持排序 sets(高得分表,适用于范围查询)
- Redis支持事务
- 支持将数据设置成过期数据(类似快速缓冲区设计)
- Pub/Sub允许用户实现消息机制
1.4.2 Redis 优势
- 非常丰富的数据结构;
- Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断;
- 数据存在内存中,读写非常的高速,可以达到10w/s的频率。
1.4.3 Redis 缺点
- Redis3.0后才出来官方的集群方案,但仍存在一些架构上的问题;
- 持久化功能体验不佳——通过快照方法实现的话,需要每隔一段时间将整个数据库的数据写到磁盘上,代价非常高;而aof方法只追踪变化的数据,类似于mysql的binlog方法,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢;
- 由于是内存数据库,所以,单台机器,存储的数据量,跟机器本身的内存大小。虽然redis本身有key过期策略,但是还是需要提前预估和节约内存。如果内存增长过快,需要定期删除数据。
1.4.4 Redis 应用场景:
最佳应用场景:适用于数据变化快且数据库大小可遇见(适合内存容量)的应用程序。 例如:微博、数据分析、实时数据搜集、实时通讯等。
Redis 能干嘛?
Redis 能干的事情非常的多,咱们列举一些:
- 内存存储,持久化。 数据存储在内存中,若服务崩溃或者服务器宕机,内存中的数据就会丢失, 持久化相当重要,Redis 里面的持久化有 RDB,AOF
- 可以用于高速缓存,Redis 效率很高
- 做发布订阅系统
- 做地图信息分析
- 做计数器,计时器 等等
Redis 有啥特性
- 多样的数据类型
- 持久化
- 集群
- 事务处理
学习 Redis 需要用到的资料
- 官网:redis.io/
- 中文网站:www.redis.cn/
- 下载地址: