项目基础一Redis(1)

一、聊聊redis的来龙去脉

1、redis简介

        redis是一种使用C语言编写、开源、高性能、非关系型的Key-Value数据库。从这里可以看出redis是属于一种非关系型的Key-Value数据库。

2、什么是非关系型数据库?

        看到非关系型数据库,我们自然联想到我们在大学中学到的关系型数据库。在这里简单的介绍一下关系型数据库,方便对比非关系型数据库。

        关系型数据库指的是使用关系模型(二维表格模型)来组织数据的数据库。常见的关系型数据库管理系统有:MySql、Oracle、SQL Server等数据库。关系型数据库的优势是:①采用二维表结构非常贴近正常开发逻辑;②支持通用的SQL(结构化查询语言)语句;③丰富的完整性大大减少了数据冗余和数据不一致的问题,并且全部由表结构组成,文件格式一致;④可以用SQL句子多个表之间做非常繁杂的查询;⑤关系型数据库提供对事务的支持,能保证系统中事务的正确执行,同时提供事务的恢复、回滚、并发控制和死锁问题的解决;⑥数据存储在磁盘中,安全可靠。

        通过以上对关系型数据库的介绍,关系型数据库有着较大的优势,那么为什么还要引进非关系型数据库呢?一个重要的原因是,随着互联网的发展,数据日益增多,关系型数据库面对海量的数据时会存在着很多的不足,比如无法满足高并发读写、高效率存储和访问等的需求

        非关系型数据库简称NOSQL数据库,指数据以对象的形式存储在数据库中,对象之间的关系通过每个对象自身的属性来决定,常用于存储非结构化的数据。

        常见的NOSQL数据库:①键值数据库:RedisMemcached、Riak②列族数据库:Bigtable、HBase、Cassandra③文档数据库:MongoDB、CouchDB、MarkLogic④图形数据库:Neo4j、InfoGrid。

         非关系型数据库的优势:①非关系型数据库存储数据的格式可以是 key-value 形式、文档形式、图片形式等。使用灵活,应用场景广泛,而关系型数据库则只支持基础类型速度快,效率高海量数据的维护和处理非常轻松,成本低非关系型数据库具有扩展简单、高并发、高稳定性、成本低廉的优势。可以实现数据的分布式处理。

        非关系型数据库的不足:①非关系型数据库暂时不提供SQL支持,学习和使用成本比较高②非关系数据库没有事务处理(ACID),无法保证数据的完整性和安全性③功能没有关系型数据库完善④复杂表关联查询不容易实现。

        总结:关系型数据库与NOSQL数据库并非对立的关系而是互补的,在通常的情况下使用的是关系型数据库,在特定情况下比较适合使用NOSQL数据库,以此弥补关系型数据库的不足。

3、什么是Key-Value数据库?

        顾名思义是一种以键值对存储数据的一种数据库,类似Java中的map、json等,每个键都会对应一个唯一的值,键和值都可以是从简单对象到复杂集合对象的任何内容。键值数据库是高度可分区的,并且允许以较大规模进行水平扩展。常用的键值数据库:Redis、Memcache等。

        Memcache:  ①很早出现的NOSQL数据库 。②数据都在内存中,一般不支持持久化(电脑关机后,内存中的数据就不存在了)。③支持简单的key-value模式,支持类型单一。④一般是作为缓存数据库辅助持久化的数据库(配合MySQL等数据库的使用)。

        Redis:①几乎覆盖了Memcached的绝大部分功能。②数据都在内存中,支持持久化,主要用作备份恢复。③除了支持简单的key-value模式,还支持多种数据结构的存储,比如list、set、hash、zset等。④一般是作为缓存数据库辅助持久化的数据库(配合MySQL等数据库的使用)。

4、Redis的概述

        (1)和Memcached类似,它支持存储的value类型相对较多,包括string、list、set、zset和hash。

        (2)Redis的数据类型的支持push/pop,add/remove及取交集、并集和差集及更丰富的操作,而且这些操作但是原子性的。

        (3)Redis支持各种不同方式的排序。

        (4)Redis与memcached一样,为了保证效率,数据都是缓存在内存中。但是,Redis会周期性的把数据写入磁盘或者把修改操作写入追加的记录文件中

        (5)Redis在此基础上实现了master-slave(主从)同步

5、Redis的应用场景

       (1)配合关系型数据库做高速缓存:

                ①高频次,热门访问的数据,降低数据库IO。

                ②分布式框架,做session的共享。

       (2)多样的数据结构存储持久化数据:

                ①最新的N个数据(通过List实现按自然时间排序的数据)。

                ②排行榜,Top N(利用zset有序集合)。

                ③时效性的数据,比如手机验证码(Expire过期)。

                ④计数器,秒杀(原子性,自增方法INCR、DECR)。

                ⑤去除大量数据中的重复数据(利用Set集合)。

                ⑥构建队列(利用List集合)。

                ⑦发布订阅消息系统(pub/sub模式)。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值