Redis简介
Redis(Remote Dictionary Server)
是一个开源的(BSD许可)使用ANSI C语言编写的,内存中的数据结构存储系统(key-value),它可以用作数
据库、缓存和消息中间件,它使用字典结构存储数据,它支持多种类型的数据结构,如 字符串(strings), 散
列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) , bitmaps, hyperloglogs 和地理空间(geospatial) 索引半径查询。
Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions)和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。 并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助.
Redis特性
1、速度快
Redis是用C语言实现的, 所有数据存储在计算机内存中。
2、持久化
Redis将内存中的数据定期保存到文件系统中。当Redis节点故障时,数据文件中可以从Redis数据文件恢复。
3、支持多种数据结构
支持多种数据结构:String、List、Set、Hash、 Sorted Set 、地理空间(geospatial) 等等。
4、支持多种编程语言API
支持Java、C、C++、Go、C#、 php、Python、Ruby、Lua、Node.js
5、功能丰富
管道(Pipelining)命令,支持事务、发布/订阅、LUA脚本等功能
6、主从复制
主服务器(master)执行添加、修改、删除,从服务器执行查询。
7、高可用及分布式
Redis-Sentinel(v2.8)支持高可用 ,Redis-Cluster(v3.0)支持分布
Redis性能
Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。
根据 Redis 官方的测试结果:在 50 个并发的情况下请求 10w 次,写的速度是 11w
次/s,读的速度是 8.1w 次/s .
测试环境:
1. 50 个并发,请求 10w 次
2. 读和写大小为 256bytes 的字符串
3. Linux2.6 Xeon X3320 2.5GHz 的服务器上
Memcached VS Redis对比
1.性能上:
Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis。
2.内存空间和数据量大小:
Memcached可以修改最大内存,采用LRU算法。Memcached单个key-value大小有限,一个value最大只支持1MB,而Redis最大支持512MBMemcached性能要高于Redis。
3.操作便利上:
Memcached数据结构单一,而Redis支持更加丰富的数据类型,在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。
4.可靠性上:
MemCached不支持数据持久化,断电或重启后数据消失。Redis支持数据持久化和数据恢复和集群,允许单点故障。
5.应用场景:
Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。
Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。