目录
1.NoSQL内存型数据库简介
NoSQL类型数据库通常习惯上被人们称之为非关系型数据库,但这种说法着实存在一些问题,原因在于NoSQL类型的数据库中的确允许进行一些关系性质数据的存储操作。所以本质上NoSQL类型数据库应当被称为是内存型数据库,因为这类数据库的数据实际上都是存在于内存中的。众所周知计算机对于存储数据的访问速度而言:
- 内存最快,数据就摆在手边,即拿即用。
- 固态硬盘次之,虽然需要多一道读取过程,但无需考虑转速限制。
- 移动硬盘最慢,受到转速限制,读取速度相当受影响。
所以对于硬盘式存储数据的SQL类数据库单从读写速度角度考虑的话,大概是比不过NoSQL这类内存式存储数据的数据库的。不过就当下而言SQL和NoSQL两种数据库出现融合趋势:SQL类型数据库逐渐允许向内存中临时存储,而NoSQL类型数据也逐渐向硬盘内进行存储。常见的SQL类型数据库和NoSQL类型数据库及其相关区别信息可以参见下面的表格。
SQL | NoSQL | |
数据库类型 | 【由二维表及其之间的联系组成的一个数据组织】 | 【键值存储数据库】 【列型存储数据库】 【文档存储数据库】 【图形存储数据库】 |
常见数据库 | Oracle、DB2、Microsoft SQL Server、MySQL | 【键值存储数据库】:redis 【列型存储数据库】:HBase Hadoop、 Cassandra Hadoop 【文档存储数据库】: MongoDb 【图形存储数据库】: Infinite Graph |
数据库特点 | 1.数据以表的形式存储 2.都支持sql语句 3.允许具有统一的sql操作语言 4.数据存储在硬盘中 5.适用于数据关系相对简单一些的场景 | 1.数据以key-value形式存储 2.不支持sql语法 3.没有统一的操作语言 4.数据存储在内存中 5.适用于对数据查询效率高的 |
2.Redis数据库简介
redis数据库的官网名称是redis中文网,网址地址是redis.cn。Redis数据库是采用C编辑的数据库,因此在windows系统下的安装过程可能需要同时安装gcc编译器和make工具。然而在mac下的homebrew工具提供了一键安装,能够略去单独操作的步骤。
2.1 redis数据库中允许存储的常见数据类型
- string 字符串类型
- hash 键值对类型
- list 类切片类型
- set 集合类型
- zset 有序集合类型
2.2 Redis三大特征:
- 支持数据持久化
- 支持多种数据类型存储
- 支持数据备份
其中的数据备份是指master-replica主从模式数据备份。其中master主数据库用于数据编辑操作,而replica从数据库用于定时对主数据库数据进行备份。(windows或者vmware环境下安装的redis,主从模式采用的关键词是master-slave,注意区别一下就可以。)
2.3 Redis优势:
- 读速度能达到110k次/s,写速度能达到81k次/s;与之对应硬盘的转速才7.2k/s,提高了一个数量级甚至更多
- 拥有丰富数据类型(五种)
- redis所有的操作都是原子性操作,可以对操作进行合并事务后的原子操作。
- 具有丰富的特性,例如支持publish/subscribe,通知,key过期等。
实际上redis数据库中的事务transaction操作是假的,同一个事务中的多条操作间没什么关系。不像mysql的事务,一条语句执行失败那么整条事务都会失败。redis数据库的事务中一条语句的失败对其他语句没影响,则立需要特别注意一下。
2.4 Redis应用场景
- 可以用来做即时缓存(ehcache/memcached),因为redis所有数据都是放在内存中的,因此存取速度很快。
- 可以某些特定场景下代替传统数据库,例如社交应用中的加载聊天记录
- 在大型系统中实现特定的功能,例如session共享进行用户登录状态监听、购物车数据加载
- 甚至可以应用于游戏数据存储,例如mmorpg(mutiplayer-online-Role-PlayingGame)中场景内人物坐标位置。
3.Mac环境下的redis数据库安装
Mac环境下安装redis的确是困难重重,如果你必须单步配置相信我那一定是一个不太幸福的回忆。但是mac中在配置完成Homebrew的前提下可以一键完成redis数据库的安装。
3.1 安装redis
直接通过执行指令【~/ $ brew install redis】安装即可,在网速正常的情况下大约只需要1分钟左右就能安装成功。而看到如下的提示信息证明redis数据库已经被安装完成。
To have launchd start redis at login:
ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents
Then to load redis now:
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
Or, if you don’t want/need launchctl, you can just run:
redis-server /usr/local/etc/redis.conf
具体安装过程:
***deMacBook-Pro:~ ***$ brew install redis
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/core).
==> New Formulae
postgresql@10
==> Updated Formulae
git ✔ fn osrm-backend
aircrack-ng frugal packer
alexjs fx paket
arangodb gcab pandoc-citeproc
awslogs git-archive-all pdftoedn
b2-tools git-standup pdftoipe
bundletool github-markdown-toc phoronix-test-suite
checkbashisms gitlab-runner picard-tools
circleci grpc pmd
cockroach healpix poppler
cppcheck imagemagick protobuf
dasht jenkins sceptre
diff-pdf kotlin shfmt
dmd libbi skopeo
doctl libbladerf syncthing
dub libosmium tmuxinator-completion
easyengine libphonenumber typescript
erlang@20 meson ubertooth
eslint mycli vips
exploitdb nativefier webpack
firebase-cli nghttp2 wtf
fluent-bit nmh youtube-dl
==> Deleted Formulae
apple-gcc42
==> Downloading https://homebrew.bintray.com/bottles/redis-5.0.2.high_sierra.bot
######################################################################## 100.0%
==> Pouring redis-5.0.2.high_sierra.bottle.tar.gz
==> Caveats
To have launchd start redis now and restart at login:
brew services start redis
Or, if you don't want/need a background service you can just run:
redis-server /usr/local/etc/redis.conf
==> Summary
? /usr/local/Cellar/redis/5.0.2: 13 files, 3.1MB
***deMacBook-Pro:~ ***$
3.2 redis数据库常见指令
- 开机启动redis命令 :【$ ln -sfv /usr/local/opt/redis/*.plist ~/Library/LaunchAgents】
- 使用launchctl启动redis server :【$ launchctl load ~/Library/LaunchAgents/homebrew.mxcl.redis.plist】
- 使用配置文件启动redis server :【$ redis-server /usr/local/etc/redis.conf】
- 停止redis server的自启动 :【$ launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.redis.plist】
- redis 配置文件的位置 :【/usr/local/etc/redis.conf】
- 卸载redis和它的文件 :【rm ~/Library/LaunchAgents/homebrew.mxcl.redis.plist】
3.3 homebrew下的redis指令
- 启动Redis服务:【~/ $ brew services start redis】
- 关闭Redis服务:【~/ $ brew services stop redis】
- 重启Redis服务:【~/ $ brew services restart redis】
- 卸载Redis服务:【~/ $ brew uninstall redis】
4.Mac环境下的redis数据库配置
4.1 进入redis.conf配置文件路径
想要配置redis数据库,就必须找到redis.conf这个数据库配置文件。而想要找到redis.conf配置文件,就必须要进入/这个Mac系统下的最根目录。而Mac下终端进入/路径还是稍微费一点点头脑的,一般情况下终端管理员默认进入的都是/user路径(这里纠正一个概念/usr路径和/user路径完全是两码事)。但是/usr文件夹是存在于最最最上层的根目录/之下的,因此需要先cd..方式,进入最根目录/。直到通过在目录下ls能够看到usr文件夹位置。另外需要切记一点,所有的..文件夹都是隐藏的(..其实就是父文件夹地址指针)。
***deMacBook-Pro:~ ***$ ls -al
total 128
drw***xr-x+ 25 *** staff 850 12 11 14:46 .
drw***xr-x 6 root admin 204 10 23 20:21 ..
drw***----+ 10 *** staff 340 12 9 17:31 Desktop
drw***----+ 4 shangyujie staff 136 10 24 15:04 Documents
drw***----+ 9 *** staff 306 12 11 14:07 Downloads
drw***----@ 60 *** staff 2040 12 8 12:31 Library
drw***----+ 3 *** staff 102 10 23 20:08 Movies
drw***----+ 4 *** staff 136 10 24 14:48 Music
drw***----+ 3 *** staff 102 10 23 20:08 Pictures
drw***xr-x+ 4 *** staff 136 10 23 20:08 Public
***deMacBook-Pro:~ ***$ cd ..
***deMacBook-Pro:Users ***$ cd ..
***deMacBook-Pro:/ ***$ ls -al
total 197
drw***xr-x 31 root wheel 1122 12 1 15:22 .
drw***xr-x 31 root wheel 1122 12 1 15:22 ..
drw***xr-x+ 55 root admin 1870 12 9 09:36 Applications
drw***xr-x+ 62 root wheel 2108 12 1 15:03 Library
drw***xr-x@ 2 root wheel 68 4 10 2018 Network
drw***xr-x@ 4 root wheel 136 7 4 16:58 System
drw***xr-x 6 root admin 204 10 23 20:21 Users
drw***xr-x@ 3 root wheel 102 12 11 09:39 Volumes
drw***xr-x@ 38 root wheel 1292 7 4 17:07 bin
drw***xr-t@ 2 root admin 68 4 10 2018 cores
dr-***xr-x 3 root wheel 4178 12 11 09:37 dev
lrw***xr-x@ 1 root wheel 11 10 23 19:54 etc -> private/etc
dr-***xr-x 2 root wheel 1 12 11 13:06 home
-rw***-r--@ 1 root wheel 313 2 7 2018 installer.failurerequests
dr-***xr-x 2 root wheel 1 12 11 13:06 net
drw***xr-x 3 root wheel 102 9 26 2016 opt
drw***xr-x@ 6 root wheel 204 7 4 17:02 private
drw***xr-x@ 63 root wheel 2142 10 23 19:55 sbin
lrw***xr-x@ 1 root wheel 11 10 23 19:54 tmp -> private/tmp
drw***xr-x@ 12 root wheel 408 12 1 15:24 usr
lrw***xr-x@ 1 root wheel 11 10 23 19:55 var -> private/var
***deMacBook-Pro:/ ***$
找到/usr文件就一切都好办了,因为redis的配置文件路径是前面提到过的【/usr/local/etc/redis.conf】,所以直接cd进去就可以。
***deMacBook-Pro:/ ***$ cd /usr/local/etc
***deMacBook-Pro:etc ***$ cd ls
bash_completion.d gtk-3.0 redis-sentinel.conf
fonts my.cnf redis.conf
gitconfig openssl
***deMacBook-Pro:/ ***$
然后【~/ $ vim redis.conf】开始配置redis文件内容,redis和mysql不一样不能直接使用默认设置就能用而是有一些参数必须手动配置才可以生效。又因为redis.conf配置文件的文本内容必然非常多,因此修改配置时必然需要用到vim的查询功能。在终端vim内执行查找功能是:【/内容】指令表示查找,Enter回车表示定位到当前查找到的内容。
***deMacBook-Pro:/ ***$ vim redis.conf
4.2 redis.conf常见配置字段和配置信息
字段名称 | 常规配置及作用 | |
1 | bind | redis数据库运行地址,如果需要远程访问则本行起始添加#注释或填写一个真正的ip,一般默认设置127.0.0.1 |
2 | port | redis数据库运行端口号,默认是6379(类似于mysql的3306一样,可改) |
3 | daemonize | redis进程执行方式,通常默认No表示前台运行,一般调整为Yes表示采用守护进程方式后台运行 |
4 | dbfilename | redis本地化文件名称,一般默认是dump.rdb |
5 | dir | redis本地化文件存储路径,一般紧挨着dbfilename字段 |
6 | logfile | redis数据库日志存储路径,默认为""。redis注释内一般提示/dev/null位置, 但实际上一般配置为/usr/local/var/log/redis/redis-server.log |
7 | database | redis会默认创建16个数据库,下标从0开始到15结束 |
8 | replicaof | redis设置主从备份字段,本字段在windows中应该是slaveof,一般默认是#注释关闭状态 |
5.redis数据库简单使用
5.1 开启redis-server数据库服务
不管什么数据库,在使用之前总是要先开启数据库服务的。mysql需要开启,同样redis也需要。在mac环境下redis数据库的服务开启方式比较简单,但是由于NoSQL数据库种类的多样性以及端口占用问题,我们可以通过【ps aux | grep redis】指令简单测试一下,来确保redis数据库服务真的已经打开(ps aux查询所有线程 | 过滤包含redis的线程名称)。redis数据库服务线程开启的证据是线程名称后面有redis-server字样,如果没有打开的话就执行【brew services start redis】指令先开启数据库服务。
***deMacBook-Pro:~ ***$ ps aux | grep redis
*** 3085 0.0 0.0 4268776 812 s000 R+ 12:36下午 0:00.01 grep redis
此时明显没有看到redis-server线程开启,所以执行指令开启redis服务线程
***deMacBook-Pro:~ ***$ brew services start redis
==> Tapping homebrew/services
Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...
remote: Enumerating objects: 14, done.
remote: Counting objects: 100% (14/14), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 14 (delta 0), reused 10 (delta 0), pack-reused 0
Unpacking objects: 100% (14/14), done.
Tapped 1 command (44 files, 58.9KB).
==> Successfully started `redis` (label: homebrew.mxcl.redis)
***deMacBook-Pro:~ ***$ ps aux | grep redis
*** 3603 0.0 0.0 4267752 816 s000 S+ 12:39下午 0:00.00 grep redis
*** 3599 0.0 0.0 4309372 2272 ?? S 12:36下午 0:00.16 /usr/local/opt/redis/bin/redis-server 127.0.0.1:6379
这次比较明显了,现在redis数据库服务器已经开启了。由于我这里是第一次安装redis并且第一次启动redis服务,因此会出现上面的很多输出提示。但是事实上大家在后面的开启服务的时候,只会看到一句很简短的提示。
***deMacBook-Pro:etc ***$ brew services start redis
==> Successfully started `redis` (label: homebrew.mxcl.redis)
5.2 进入redis数据库客户端
redis数据库分为服务端和客户端,我们正常的对数据库进行存取操作是需要通过客户端来完成的。因此需要进入redis数据库的客户端来准备接下来的基本增删改查操作。通过指令【redis-cli -h -p --raw】指令可以进入redis数据库客户端。
-h | 数据库服务器地址,默认127.0.0.1允许不写,其他地址则需要显式输入 |
-p | 数据库端口号,默认6379允许不写,其他端口则需要显式输入 |
--raw | 数据库内容加载方式,默认不写表示中文以ASCII编码识别,显式写出表示中文识别 |
***deMacBook-Pro:~ ***$ redis-cli
127.0.0.1:6379>
此时看到服务器地址与端口号的指令,表示进入redis数据库客户端成功
5.3 测试redis数据库客户端进入正常
不需要任何繁琐的其他任何特殊功能,直接【ping】指令回车。redis数据库会给出一个戏剧性的【pong】来回应,表示数据库一切工作正常,截止到当下位置,我们终于完成redis数据库一切环境配置,可以准备开始工作了。
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>