Redis是一款开源的内存数据结构存储,(可在内存中存储结构化的数据),用做数据库,缓存和消息中间件,支持多种数据结构,如:strings,hashes,lists,sets,带有范围查询的sorted sets ,bitmaps,hyperloglogs,带有半径查询的geospatial Indexes,和stream;html
Redis内置了的主从复制,事务,以及不一样级别的持久化功能,并经过Sentinel和自动分区的Cluster提供了高可用性;前端
在redis中能够对这些类型进行原子操做(线程安全);mysql
为了得到优秀的性能,redis把数据存储在内存中,根据实际状况你能够每隔一段时间将数据转存至磁盘或者追加每个操做指令到log中,来实现持久化;若是只须要用于内存缓存,你能够禁用持久化;git
redis还支持异步主从复制和很是快的非阻塞的首次同步,自动重连和部分数据从新同步在遇到网络分裂(异常)时;web
Redis使用c编写,能够运行于绝大多数POSIX系统上,例如 Linux,OS X,BSD,并且不须要任何的外部依赖,Linux和OS X是Redis开发和测试最多的两个操做系统,建议使用LInux系统部署,Windows版本没有官方支持。redis
官网:https://redis.iosql
能够看出redis和mysql有很是大的区别,主要体如今数据结构和存储方式上,mysql是关系型数据库,存储数据前必须明肯定义表结构和数据类型,数据之间能够存在关联关系,而redis中并不须要提早定义数据模型,随时能够添加新的结构到数据库中,redis也不能维护数据间的关系;shell
这里不得不提到的一个名称就是NoSQL,NoSQL有两种含义数据库
No Relations和Not Only SQL,一般咱们谈及NoSQL都是泛指非关系型数据库,即数据之间没有关系;vim
NoSQL伴随着web2.0开始崛起,web2.0时代(要处理大规模的数据,且常常存在非结构化的数据)传统数据库表现的力不从心,并且出现一系列难以攻克的问题;
关系型与非关系型的对比:
对比项 | 关系型 | 非关系型 |
---|---|---|
事务支持 | 完整的事务支持,很是适合存储系统关键数据 | 大多没有完整的ACID事务支持,数据的一致性较差,不支持回滚 |
存储方式 | 完整数据存储在磁盘上,大多数操做都须要读写磁盘 | 数据存储在内存中,仅在持久化时读写磁盘,且读写磁盘操做一般是很是少的 |
存储结构 | 数据必须是结构化的,数据表须要预先定义好,可靠性,稳定性高,和维护性高,但当须要修改已有结构时很是的麻烦 | 存储非结构化数据,不须要定义数据结构,任什么时候候任何地方均可以插入任何类型的数据,很是灵活,很容易适应数据类型和结构的变化 |
高性能 | 一方面磁盘读写致使速度慢另外一方面因为须要保证强一致性,一般会对须要并发操做的数据加锁 | 直接对读写内存中的数据速度是很是快的,另外因为不须要保证强一致性,操做不须要加锁,效率很是高 |
扩展性 | 总体效率依赖于IO速度,因为数据须要保证数据之间的一致性,且数据具有固定的结构,横向扩展困难,分库分表实施困难,且没法通用 | 没有了固定存储结构,没有了强一致性要求,系统能够轻松的进行横向扩展,容易实现分布式,向资源池添加新的计算资源便可实现扩展 |
查询 | 经过结构化查询语言(SQL)来完成,根据表中定义的key,来优化查询速度,可实现复杂的连表查询语句 | 各个不一样的NoSQL没有统一的标准,数据一般经过key来进行精准查询,没法实现太复杂的查询逻辑 |
经过对比能够发现NoSQL和关系型数据库各自有各自的优缺点,那么在实际运用中该如何选择呢?
必定要强调的是,二者不是非此即彼的关系,而是优点互补,一般咱们把项目的关键数据(必须须要保证ACID)放在关系型数据库中,而对于一些临时的,非关键性的,访问频率很是高的数据放在NoSQL中;另外Redis也常常用于消息中间件;
NoSQL的分类:链接
缓存(数据查询、短链接、新闻内容、商品内容等等)。
分布式集群架构中的session分离。
聊天室的在线好友列表。
任务队列。(秒杀、抢购、12306等等)
应用排行榜。
网站访问统计。
数据过时处理(能够精确到毫秒)
安装过程:连接
bin目录说明:
直接运行redis-server可在前台启动服务端,但该方式将致使当前shell被占用没法执行其余操做,除非终止redis的运行....
后台进程模式启动,该方式可将redis运行与后台,须要先修改配置文件
从源码目录复制配置文件redis.conf
至bin目录下
cp ~/redis-6.0.3/redis.conf /usr/local/redis/bin/
修改daemonize 为yes (vim 打开文件后 输入//daemonize
可定位到改行)
3.指定使用redis.conf配置文件启动(先进入bin目录下)
./redis-server redis.conf #利用客户端链接测试 ./redis-cli #看见以下内容表示已经服务端已经正常运行
#关闭运行在localhost上的redis服务 ./redis-cli shutdown #关闭运行在指定地址上的redis服务 ./redis-cli -h 127.0.0.1 shutdown
3.强制中止,经过kill命令直接强行结束redis服务端进程,该方式存在不稳定性,生产环境勿用
#查询进程id ps aux|grep redis #根据进程id结束服务 kill 进程id
语法: redis-cli -h 主机地址 -p 端口
其中主机地址和端口号都可省略 默认主机为localhost
,默认端口为:6379