一、概述
1、NoSQL
Not Only SQL,意思:不仅仅是SQL
四大分类
KV键值
新浪:BerkeleyDB+redis
美团:redis+tair阿里
百度:memcache+redis
文档型数据库(bson格式比较多)
CouchDBMongoDBMongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
列存储数据库
Cassandra, HBase分布式文件系统
图关系数据库
它不是放图形的,放的是关系比如:朋友圈社交网络、广告推荐系统社交网络,推荐系统等。专注于构建关系图谱Neo4J, InfoGrid
2、CAP(三进二)
C : Consistency(强一致性)
A : Availability(可用性)
P : Partition tolerance(分区容错性)
CAP理论就是说在分布式存储系统中,最多只能实现上面的两点。而由于当前的网络硬件肯定会出现延迟丢包等问题,所以分区容错性是我们必须需要实现的。所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。注意:分布式架构的时候必须做出取舍。一致性和可用性之间取一个平衡。多余大多数web应用,其实并不需要强一致性。因此牺牲C换取P,这是目前分布式数据库产品的方向一致性与可用性的决择对于web2.0网站来说,关系数据库的很多主要特性却往往无用武之地数据库事务一致性需求很多web实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求并不高。允许实现最终一致性。数据库的写实时性和读实时性需求对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。对复杂的SQL查询,特别是多表关联查询的需求任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的报表查询,特别是SNS类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。
CAP理论的核心是
一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP原则和满足 AP 原则三大类:
CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。
3、redis优点
Redis:REmote DIctionary Server(远程字典服务器)
是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(Key/Value)分布式内存数据库,基于内存运行,并支持持久化的NoSQL数据库,是当前最热门的NoSQL数据库之一,也被人们称为数据结构服务器
三个特点
Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。
Redis不仅仅支持简单的 key-value 类型的数据,同时还提供list、set、zset、hash等数据结构的存储。
Redis支持数据的备份,即master-slave模式的数据备份。
能干吗
内存存储和持久化:redis支持异步将内存中的数据写到硬盘上,同时不影响继续服务取最新N个数据的操作,如:可以将最新的10条评论的ID放在Redis的List集合里面
发布、订阅消息系统
地图信息分析
定时器、计数器
参考
Redis_百度百科 百度百科
二、安装
1、windows安装
下载地址:Releases · tporadowski/redis · GitHub
地址可能失效 百度很多地址,解压到自己电脑的环境目录即可
双击 redis-server.exe 启动即可
通过客户端去访问
# 基本的set设值
127.0.0.1:6379> set key hello
OK
# 取出存储的值
127.0.0.1:6379> get key"hello"
上面存在得问题,每次都要打开redis启动服务cmd窗口才能运行。
解决方法:安装成Windows服务—开机自启,打开cmd窗口,切换到redis目录,执行命令
redis-server --service-install redis.windows.conf
如图成功安装redis服务
打开cmd窗口输入services.msc,自行开启redis服务器即可
2、Linux安装
下载地址http://download.redis.io/releases/redis-5.0.7.tar.gz
下载之后上传到opt目录下并解压
tar -zxvf redis-5.0.7.tar.gz
因为tar文件类似java源码,需要经过编译,所以要先安装编译c源码的编译器gcc
yum -y install gcc
在安装目录下编译
make
注意:make命令执行后如果发生-jemalloc/jemalloc.h没有那个文件或目录这个错误,执行命令 make distclean
编译完成之后进行安装
make install
默认在 /usr/local/bin目录下安装
启动redis
redis启动有前台和后台两种方式启动,推荐后台启动
前台启动
在 /usr/local/bin下执行
redis-server
启动之后不能执行其他命令,通过Ctrl+c强制关闭,但是redis也会关闭
后台启动
进入 /opt/redis-3.2.1下,将redis.conf文件拷贝到指定路径,这里我复制到etc下
cp redis.conf /etc/redis.conf
进入etc对redisc.conf修改
vim redis.conf daemonize yes (这里讲原来的no改为yes,目的是为了设置后台运行)
进入/usr/local/bin目录下启动redis
redis-server /etc/redis.conf
测试
/usr/local/bin目录下执行
redis-cli ping 查看结果
关闭
方式1 /usr/local/bin 下执行shutdown
方式2 kill -9 杀掉进程
三、可视化工具
目前Redis的可视化管理客户端较多,像国产的RedisView、WebRedisManager以及一个官方收费的RedisDesktopManager,这几个不管是从颜值还是功能可能都有些差强人意,介绍两个免费开源且跨平台的Redis客户端管理工具,其中一个也是国人开发的!
1、RedisPlus
参考地址:https://gitee.com/MaxBill/RedisPlus
RedisPlus是为Redis可视化管理开发的一款开源免费的桌面客户端软件,支持Windows 、Linux 、Mac三大系统平台,RedisPlus提供更加高效、方便、快捷的使用体验,有着更加现代化的用户界面风格。该软件支持单机、集群模式连接,同时还支持SSH(单机、集群)通道连接。RedisPlus目前是由Java开发的,在后面的4.0版本总会采用nodejs+vue+iview+electron开发,现在还没发布!而且3.0版本的我觉得已经很好用了!
码云提供了下载地址,我这里就不再提供了,但如果你下载速度太慢,可以留言我会提供帮助。安装好后打开:
添加连接
我们打开后点击左上角的连接,并点击添加连接(添加后你还可以编辑、删除、备份、还原等操作)
然后填写你的redis服务器的信息,添加完成可以进行一下测试,成功的话会有提示,然后记得点击保存
双击方才添加的连接就可以进行连接了,工作台的主要界面提供很多操作,并且有服务器端监控
对网络、内存、CPU、数据的实时监控
2、AnotherRedisDesktopManager
这个名字很有意思,翻译过来就叫“另一个Redis桌面管理工具”,AnotherRedisDesktopManager是一个更快,更好,更稳定的redis桌面管理工具,兼容Linux,windows,mac。更重要的是,加载大量keys时不会崩溃。由于它是基于electron开发的,界面风格上更加现代化一点,而且支持中文
参考地址:https://github.com/qishibo/AnotherRedisDesktopManager
安装启动
安装都是非常简单,就是在MacOS上要添加信任,windows双击安装、Linux双击运行
点击左上角的新建连接按钮
主界面,你可以选择简体中文,这个地方主要显示的一些服务器的信息统计等
总结
RedisPlus和AnotherRedisDesktopManager都是不可多得的界面美观的Redis可视化客户端,而且都支持中文,对国人尤为友好,对于追求软件颜值的小伙伴赶紧来尝试了,真的非常不错!