概述
Redis(REmote DIctionary Server)是一个非常流行的基于内存的轻量级键值数据库(key-value database)。与其把Redis称为一种数据库,不如说Redis是一种数据结构服务器更为恰当。Redis原生地在内存中实现了多种类型的数据结构,并提供了操作这些数据结构的多种API。更加重要的是,作为一个需要长期运行的数据存储服务,Redis还提供了高性能命令处理、高可靠性/扩展性的架构及数据持久化等特性。
Redis时一个完全用C语言编写的开源软件。
Redis中的术语实例代表一个redis-server进程。同一台主机上可以运行多个Redis实例,只要这些实例使用不同的配置即可,比如绑定到不同的端口上、使用不同的路径保存数据持久化相关的文件,或采用不同的日志路径等。
Redis作为一种数据存储服务,如何正确的停止Redis服务端就非常重要了,强烈建议使用shutdown命令。发出shutdown命令后,首先redis-server会停止响应客户端的连接,然后如果启用了持久化,则会执行数据持久化操作,之后,如果.pid文件和socket套接字文件描述符存在的化,则对其进行清理,并最终退出操作。应该注意的是,使用kill命令或其他进程管理工具向Redis进程发送SIGERM(15)信号基本上等同于使用shutdown命令优雅的停止redis-serve。
Redis以其高性能而闻名,它最大程度的利用单线程、非阻塞、多路复用的I/O模型来快速的处理请求。当然在某些情况下,Redis也会创建线程或子进程来执行某些任务。Redis包含了一个简单的但功能强大的异步事件库,称为ac。
Redis基本上就是一个接受并处理来自客户端请求的非阻塞、I/O复用的TCP服务器。虽然Redis服务器很复杂,但我们可以使用各种编程语言通过TCP协议与Redis进行通信。对于Redis来说,这种通信协议叫做REdis Serialization Protocol(RESP,Redis序列化协议)。
Redis 与其他 key - value 缓存产品有以下三个特点:
Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用;
Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储;
Redis支持数据的备份,即master-slave模式的数据备份。
Redis 优势:性能极高:Redis能读的速度是110000次/s,写的速度是81000次/s ;丰富的数据类型:Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作;原子:Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来;丰富的特性:Redis还支持 publish/subscribe, 通知, key 过期等等特性。