多语言展示
当前在线:425今日阅读:61今日分享:18

最受欢迎的内存数据库简介

简单介绍Redis这种免费、开源NoSQL内存库。对Rediis单机和Redis集群分别作了简要的介绍。
方法/步骤
1

1. Redis简介     Redis是一个开源的、高性能的、基于键值对的缓存与存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求。同时,Redis的诸多高级功能使其可以胜任消息队列、任务队列、分布式锁等不同角色。    为什么要开发Redis内存数据库?    2008年,意大Merzia推出了一款基于MySQL的网站实时统计系统LLOOGG。但是MySQL的性能并不能令人满意,的创始人Salvatore Sanfilippo决定开发一款新型数据库。这个数据库就是Redis。Salvatore Sanfilippo于2009年完成Redis第一个版本的开发并将其开源。

2

2.Redis Cluster简介    Redis Cluster是Redis官方的集群实现方案。Redis作者在2014年10月9日开源提供Redis集群功能的第一个RC版本,并在经历了6个RC版本后,Redis官方于2015年4月1日推出了Redis Cluster第一个稳定版本。由于Redis Cluster稳定版本发布的时间较晚,所以当前对Redis Cluster的分析还不是很多,且基于Redis Cluster生产环境的应用更少。    Redis官方文档说,Redis Cluster没有使用consistent hashing进行数据分片,而是采用所谓的“哈希槽”(hash slot)进行数据分片。

3

3.最终一致性       Redis在进行主从数据同步的时候,采用的是异步复制策略,所以包含主从模式的Redis的数据一致性是最终一致性。

4

4. 集群与单机的不同     在单机版的Redis中,每个Master之间是没有任何通信的,所以我们一般在Jedis客户端或者Codis这样的代理中做Pre-sharding。按照CAP理论来说,单机版的Redis属于保证CP(Consistency & Partition-Tolerancy)而牺牲A(Availability),也就说Redis能够保证所有用户看到相同的数据(一致性,因为Redis不自动冗余数据)和网络通信出问题时,暂时隔离开的子系统能继续运行(分区容忍性,因为Master之间没有直接关系,不需要通信),但是不保证某些结点故障时,所有请求都能被响应(可用性,某个Master结点挂了的话,那么它上面分片的数据就无法访问了)。    有了Cluster功能后,Redis从一个单纯的NoSQL内存数据库变成了分布式NoSQL数据库,CAP模型也从CP变成了AP。也就是说,通过自动分片和冗余数据,Redis具有了真正的分布式能力,某个结点挂了的话,因为数据在其他结点上有备份,所以其他结点顶上来就可以继续提供服务,保证了Availability。然而,也正因为这一点Redis无法保证曾经的强一致性了。这也是CAP理论要求的,三者只能取其二。

推荐信息