1、简介
Redis [1] 是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串)、hash(哈希)、list(列表)、set(集合)、zset(有序集合)、Bitmaps(位图)、HyperLogLog、GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人。不仅如此,Redis还可以将内存的数据利用快照和日志的形式保存到硬盘上,这样在发生类似断电或者机器故障的时候,内存中的数据不会“丢失”。
除了上述功能以外,Redis还提供了键过期、发布订阅、事务、流水线、Lua脚本等附加功能。总之,如果在合适的场景使用好Redis,它就会像一把瑞士军刀一样所向披靡。
Redis是一种基于键值对的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是string,hash,list,set,zset,Bitmaps位图等多种数据结构和算法组成;可以满足多种应用场景,另外Redis会将所有数据都存放在内存中,所以读写性能非常快,具测试是10万/秒;
Redis还可以将内存中的数据利用快照和日志的形式保存到硬盘上,以防止数据丢失,Redis还提供了键过期,发布订阅,事务等附加功能。
目前使用Redis的知名互联网平台有,阿里巴巴,腾讯,百度,搜狐,优酷,美团,小米等,使用非常广泛;
1.2、特性
1、速度快
2、基于键值对的数据结构服务器
3、功能丰富(键过期,发布订阅,支付Lua脚本,提供事务,提供流水线功能,这样客户端可以将一批命令一次性传到Redis,减少网络的开销)
4、简单稳定
首先代码量少,一共5万行左右,容易研究,另外Redis使用单线程模型,这样不仅使Redis服务端处理模型变得简单,而且也使得客户端开发变得简单,而且Redis不需要依赖于操作系统中的类别,Redis自己实现了事件处理的相差功能。
5、支付多种语言,如JAVA,PHP,c,nodejs,Python等
6、持久化(RDB/AOF)
7、主从复制
8、高可用和分布式
Redis从2.8版本后提供了高可用实现Redis Sentinel,能保证Redis节点的故障发现和故障自动转移。Redis3.0版本后,提供了分布式实现Redis Cluster,能使Redis真正实现分布式,提供了高可用,读写,和容易的扩展性。
1.3、使用场景
1、缓存,存储
2、排行
Redis提供了列表和有序集合数据结构,能很方便的实现各种排行问题
3、计数
4、消息队列
Redis提供了发布订阅功能和阻塞队列的功能,能满足一定的消息队列系统;