系列文章是个人的读书笔记,极力推荐《Redis开发与运维》,已买很香。
目录
第1章 初识Redis
1.概念
Redis是一个开放源代码(BSD许可)的内存中数据结构存储,用作(NoSQL)数据库,缓存和消息代理。它支持数据结构,例如字符串,哈希,列表,集合,带范围查询的排序集合,位图,超日志,带有半径查询和流的地理空间索引。Redis具有内置的复制,Lua脚本,LRU驱逐,事务和不同级别的磁盘持久性,并通过Redis Sentinel和Redis Cluster自动分区提供了高可用性。
Redis的全称:Remote Dictionary Server(远程数据服务)
2.redis特性
(1)速度快。速度快的原因:
- Redis的所有数据都是存放在内存中的,这是Redis速度快的最主要原因。
- Redis是用C语言实现的,一般来说C语言实现的程序“距离”操作系统更近,执行速度相对会更快。
- Redis使用了单线程架构,预防了多线程可能产生的竞争问题。
(2)基于键值对的数据结构服务器。
与很多键值对数据库不同的是,Redis中的值不仅可以是字符串,而且还可以是具体的数据结构,它主要提供了5种数据结构:字符串、哈希、列表、集合、有序集合。这样不仅能便于在许多应用场景的开发,同时也能够提高开发效率。
(3)简单稳定
- 首先,Redis的源码很少。
- 其次,Redis使用单线程模型,这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。
- 最后,Redis不需要依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库),Redis自己实现了事件处理的相关功能。
(4)持久化
通常看,将数据放在内存中是不安全的,一旦发生断电或者机器故障,重要的数据可能就会丢失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中(如图1-1所示),这样就保证了数据的可持久性。
(5)主从复制
Redis提供了复制功能,实现了多个相同数据的Redis副本。
(6)高可用和分布式
Redis从2.8版本正式提供了高可用实现Redis Sentinel(哨兵模式),它能够保证Redis节点的故障发现和故障自动转移。
Redis从3.0版本正式提供了分布式实现Redis Cluster(集群模式),它是Redis真正的分布式实现,提供了高可用、读写和容量的扩展性。
(7)功能丰富
3.Redis使用场景
(1)缓存 合理地使用缓存不仅可以加快数据的访问速度,而且能够有效地降低后端数据源的压力。
(2)排行榜系统 Redis提供了列表和有序集合数据结构,合理地使用这些数据结构可以很方便地构建各种排行榜系统。
(3)计数器应用 Redis天然支持计数功能而且计数的性能也非常好。
(4)社交网络 赞/踩、粉丝、共同好友/喜好、推送、下拉刷新等是社交网站的必备功能,由于社交网站访问量通常比较大,而且传统的关系型数据不太适合保存这种类型的数据,Redis提供的数据结构可以相对比较容易地实现这些功能。
(5)消息队列系统 消息队列系统可以说是一个大型网站的必备基础组件,因为其具有业务解耦、非实时业务削峰等特性。Redis提供了发布订阅功能和阻塞队列的功能,虽然和专业的消息队列比还不够足够强大,但是对于一般的消息队列功能基本可以满足。
4.Redis的建议
(1)数据规模 几亿的数据耗内存太多,成本高;
(2)冷热数据 冷数据经常不访问的数据,不适合放在内存中