Redis的基本特性
1.速度快
(1)redis的所有数据都是存储在内存中的,这是redis速度快的主要原因。
(2)redis使用C语言来实现的,C语言实现的程序和系统更接近,因此速度比较快。
(3)redis使用单线程,预防了使用多线程产生的竞争问题。
2.基于键值对的数据结构服务器
redis中的键值对的value呢,不仅可以是字符串,而且包含了,许多的数据结构:字符串(String),哈希(hash),列表(list),集合(set),有序集合(ordered set),同时在字符串的基础之上演变出了位图(Bitmaps)和HyperLogLog两种神奇的数据结构。
3.丰富的功能
除了5种数据结构,Redis还提供了许多额外的功能:
• 提供了键过期功能,可以用来实现缓存。
• 提供了发布订阅功能,可以用来实现消息系统。
• 支持Lua脚本功能,可以利用Lua创造出新的Redis命令。
• 提供了简单的事务功能,能在⼀定程度上保证事务特性。
• 提供了流水线(Pipeline)功能,这样客户端能将⼀批命令⼀次性传到Redis,减少了网络的开 销。
4.简单稳定
Redis的简单主要表现在三个方面:
(1)Redis的源码很少,早期版本的代码只有2万行左右, 3.0版本以后由于添加了集群特性,代码增至5万行左右,相对于很多NoSQL数据库来说代码量相对 要少很多,也就意味着普通的开发和运维⼈员完全可以"吃透"它。
(2)Redis使用单线程模型, 这样不仅使得Redis服务端处理模型变得简单,而且也使得客户端开发变得简单。
(3)Redis不需要 依赖于操作系统中的类库(例如Memcache需要依赖libevent这样的系统类库),Redis自己实现了 事件处理的相关功能。
5.客户端语言多
Redis提供了简单的TCP通信协议,很多编程语言可以很方便地接入到Redis,并且由于Redis受 到社区和各⼤公司的广泛认可,所以支持Redis的客户端语言也非常多,几乎涵盖了主流的编程语言,例如C、C++、Java、PHP、Python、NodeJS等,后续我们会对Redis的客户端使用做详细说 明。
6.持久化存储
通常看,将数据放在内存中是不安全的,⼀旦发生断电或者机器故障,重要的数据可能就会丢 失,因此Redis提供了两种持久化方式:RDB和AOF,即可以用两种策略将内存的数据保存到硬盘中。
如图:
7.主从复制
Redis提供了复制功能,实现了多个相同数据的Redis副本。
如图:
8.高可用和分布式
Redis提供了高可用实现的Redis哨兵(Redis Sentinel),能够保证Redis结点的故障发现和故 障自动转移。也提供了Redis集群(Redis Cluster),是真正的分布式实现,提供了高可用、读写和 容量的扩展性。