天津储鑫盛钢材现货供应商 发表于 2024-8-17 05:24:52

Redis从入门到精通(一)Redis安装与启动、Redis客户端的利用

写在最前

工作中开发的几个项目,险些都用到了Redis,但是呢我发现我也只是会简单地存储数据、取出数据,至于性能怎么样?如何由数据库0切换到其他的15个数据库(Redis分为16个数据库),一概不知。以是我就想着要对Redis体系深入地学习一下。
网络上其实有非常多的学习资料,颠末比较,我最终选定的资料包括:


[*]网站:黑马步调员-Redis入门到精通 http://yun.itheima.com/course/994.html?capid=1$javaeezly
[*]网站:Redis官方文档 https://redis.io/docs/
[*]网站:桌面可视化工具 https://github.com/qishibo/AnotherRedisDesktopManager/releases/tag/v1.6.3
下面就开始Redis的学习吧!
第1章 Redis概述

1.1 初识Redis

Redis是一种键值型的NoSQL数据库。 这里有两个关键词:


[*]键值型
[*]NoSQL
其中,键值型是指Redis中存储的数据都是以key-value对的情势存储的,key只能是字符串,而value的情势多种多样,可以是字符串、数值、json等。
1.1.1 NoSQL

NoSQL可以翻译为Not Only SQL(不仅仅是SQL),大概No SQL(非SQL)。它是相对于关系型数据库而言的,泛指非关系型数据库。
关系型数据库和非关系型数据库有很大的差异,主要包括7个方面:


[*] 1)数据结构

[*] 关系型数据库是结构化数据,每一张表都有严格的约束信息,比方规定字段的数据范例、长度、是否为空、是否为主键等等,插入的数据必须遵守这些约束;
[*] 非关系型数据库则对数据库格式没有严格约束,可以是键值型、文档型,以致是图格式。

[*] 2)数据关联

[*] 关系型数据库的表与表之间每每存在关联,比方外键:
https://i-blog.csdnimg.cn/blog_migrate/e6383cc1c1eaae1cab125c4537eb8160.png
[*] 非关系型数据库则不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合。

[*] 3)查询方式

[*] 关系型数据库会基于SQL语句做查询,语法有统一标准;
[*] 非关系型数据库则语法差异很大,差别数据库之间语法不一样。
https://i-blog.csdnimg.cn/blog_migrate/404a44a6d969c3d6a18b365cd73fe7d9.png

[*] 4)事务特性

[*] 关系型数据库能满足事务ACID原则,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、恒久性(Durability),它们是数据库事务处理的四个基本特性。
[*] 非关系型数据库则每每不支持事务,大概不能严格包管ACID特性,只能实现基本的一致性。

[*] 5)存储方式

[*] 关系型数据库基于磁盘举行存储,会有大量的磁盘IO,对性能有肯定影响。
[*] 非关系型数据库的操作更多是依靠于内存,而内存的读写速度非常快,因此性能更好。

[*] 6)扩展性

[*] 关系型数据库集群模式一样平常是主从模式,主从数据一致,起到数据备份的作用,成为垂直扩展。
[*] 非关系型数据库集群模式一样平常是将数据举行拆分,分别存储在差别的节点上,因此可以保存海量数据,可以解决内存巨细有限的题目。

1.1.2 Redis的特点与优势

Redis诞生于2009年,全称是Remote Dictionary Server(远程词典服务器),作者是Antirez,是一个基于内存的键值型NoSQL数据库。
它的特点包括:


[*] 1)Redis是内存型数据库,即key-value对存储在内存中,故效率此磁盘型数据库要高。
[*] 2)Redis采用单线程工作模式,即网络I/O和数据读写是由⼀个线程来完成的。
       查阅了一些资料,官方FAQ表示:
因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的巨细大概网络带宽。既然单线程轻易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了。
看完其实照旧不太明白,这个疑问先放着,也许在接下来的学习中也顺理成章地明白了。
[*] 3)key-value对中的value值既可以是字符串,也可以是复杂的数据范例,如链表、聚集、Hash表等。
[*] 4)Redis支持数据恒久化,可以采用RDB、AOF、RDB+AOF这3种方案。及其重启后可以从磁盘中举行数据规复。
[*] 5)Redis支持主从结构,可以利用从实例举行数据备份。
Redis支持10万以上的QPS(Queries-per-second,每秒查询率),其性能之以是高,主要缘故原由有:


[*] 1)Redis的绝大部分命令处理只是纯粹的内存操作,内存的读写速度黑白常快的。
[*] 2)Redis提供单线程多进程服务,避免了不须要的上下文切换,不存在加锁、开释锁等同步操作。
[*] 3)Redis利用多路I/O复用模型(select、poll、epoll),可以高效处理大量并发连接。
       一会单线程,一会多进程,然后又是多路I/O、高并发,虽然知道肯定是不辩论的,但是轻易肴杂。跟上面一样,也不太明白,那就都先带着这个疑问吧!!
[*] 4)Redis中的数据结构是专门设计的,增编削查等操作相对简单。
1.2 安装Redis

此处基于Linux体系来安装Redis,Linux版本为CentOS 7,Redis版本为官网目前的最新稳定版本7.2.4。
1.2.1 安装依靠库

Redis是基于C语言编写的,因此首先需要安装gcc依靠:
yum install -y gcc tcl
1.2.2 安装Redis

利用wget命令拉取官网的最新版本Redis并解压:
wget https://download.redis.io/releases/redis-7.2.4.tar.gz
tar -zxvf redis-7.2.4.tar.gz
https://i-blog.csdnimg.cn/blog_migrate/e3e70592d64aae763a5bc1c43d3ec130.png
然后举行编译:
cd redis-7.2.4
make && make install
安装完成,默认的安装路径是/usr/local/bin:
https://i-blog.csdnimg.cn/blog_migrate/ac189e5f902f8fe6a5e580c8b6c4a700.png


[*]redis-cli:redis提供的命令行客户端。
[*]redis-server:redis的服务端启动脚本。
[*]redis-cli:redis的哨兵模式启动脚本。
该目次下已经默认设置到环境变量,因此可以在任意目次下运行这些命令。
1.2.3 启动Redis

Redis的启动方式有多种,包括默认启动、指定设置启动、开启启动等。
1.2.3.1 默认启动

安装完成后,在任意目次下输入redis-server命令即可启动Redis,如图:
https://i-blog.csdnimg.cn/blog_migrate/916a81c413c966c53ccb557708d0ae7e.png
这种方式属于前台启动,会阻塞整个会话窗口,窗口关闭大概按下CTRL+C时,Redis也会停止。
1.2.3.2 指定设置启动

如果要让Redis以背景方式启动,则必须修改Redis设置文件,即Redis解压后目次下的redis.conf文件:
https://i-blog.csdnimg.cn/blog_migrate/275123591043b90e1d23f906116faffe.png
先将redis.conf设置文件备份一份:
cp redis.conf redis.conf.bak
然后修改redis.conf设置文件中的一些设置:
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问
# 修改为0.0.0.0则可以在任意IP访问
# 注意生产环境不会设置为0.0.0.0
bind 0.0.0.0
# 监听端口,默认6379
port 6379
# 守护进程,修改为yes后即可后台运行
daemonize yes
# 密码,设置后访问Redis需要输入密码
requirepass 123321
# 工作目录,默认是当前目录,也就是运行redis-server命令时的目录
# 日志、持久化等文件会保存在这个目录
dir ./
# 数据库数量,设置为1代表只使用1个库,默认有16个,编号为0-15
databases 1
# 设置Redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志
logfile "redis.log"
最后,指定设置文件启动Redis:
# 进入Redis解压后目录
cd /root/redis-7.2.4
# 指定配置文件启动Redis
redis-server redis.conf
启动后,会话窗口不会有任何提示,但可以通过查察日志文件redis.log来确定是否已启动成功:
https://i-blog.csdnimg.cn/blog_migrate/0ce7a343582a85334e584c01a156d871.png
如果要停止服务,可利用以下命令:
# 利用redis-cli来执行shutdown命令,即可停止Redis服务
# 因为之前配置了密码,因此需要通过 -a 来指定密码
redis-cli -a 123321 shutdown
1.2.3.3 开机自启

也可以通过设置将Redis服务设置为开机自启,方便利用。
首先,新建一个体系服务文件:
vi /etc/systemd/system/redis.service
内容如下:

Description=redis-server
After=network.target


Type=forking
# 根据实际解压和安装位置进行配置
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true


WantedBy=multi-user.target
然后重载体系服务:
systemctl daemon-reload
完成以上设置,就可以利用以下命令来操作Redis的启停了:
# 启动
systemctl start redis
# 停止
systemctl stop redis
# 重启
systemctl restart redis
# 查看状态
systemctl status redis
执行下面的命令,可以让redis开机自启:
systemctl enable redis
1.3 Redis客户端

Redis安装完成,就可以操作Redis实现数据的CRUD了,这就需要利用Redis客户端。
Redis客户端包括:命令行客户端、图形化桌面客户端、编程客户端。
1.3.1 命令行客户端

Redis安装完成后,就自带了命令行客户端:redis-cli,其利用方式如下;
redis-cli
常见的options有:


[*]-h 127.0.0.1:指定要连接的Redis节点的IP所在,默认是127.0.0.1。
[*]-p 6379:指定要连接的Redis节点的端口,默认是6379。
[*]-a 123321:指定Redis的访问密码,在设置文件redis.conf中设置。
而commonds就是Redis的操作命令,比方ping,就是与Redis服务端做心跳测试,服务端正常会返回pong:
https://i-blog.csdnimg.cn/blog_migrate/467779537e11125e3129df89f50535e8.png
如果不指定commonds,则会进入交互控制台:
https://i-blog.csdnimg.cn/blog_migrate/8c50334cefd65eb362a0f3229d270992.png
如果options中没有指定-a 123321,则进入控制台后可以利用auth 123321举行授权。
1.3.2 图形化桌面客户端

选用的是GitHub大神写的客户端,所在:https://github.com/qishibo/AnotherRedisDesktopManager/releases/tag/v1.6.3
安装后运行该客户端,界面如下:
https://i-blog.csdnimg.cn/blog_migrate/a2f9b1ccd2002827915c7db44e29d007.png
点击左上角New Connection,创建一个新连接:
https://i-blog.csdnimg.cn/blog_migrate/bbefc19462e34f73169ceb12332f806a.png
点击确定,建立连接,成功后界面会表现Redis服务端的一些基本信息,如版本、内存、状态等:
https://i-blog.csdnimg.cn/blog_migrate/ab91a1b33924efd4bfcbb640c519e220.png
1.3.3 编程客户端

编程客户端就是通过编写代码来连接Redis。在Redis官网中,提供了各种编程语言的客户端:https://redis.io/docs/clients/。
https://i-blog.csdnimg.cn/blog_migrate/a6d3e968fb677da802b6b23fe3665f44.png
其中Java客户端又包含Jedis和Lettuce两种:
https://i-blog.csdnimg.cn/blog_migrate/411bb11e7be89f1692ae8adab231b773.png
1.4 小结

第1章到此就学习完毕了,本章的主题是:Redis概述。回顾一下本章的学习的内容:
(一)Redis介绍、Redis的安装和启动、Redis客户端
更多内容请查阅分类专栏:Redis从入门到精通
第2章主要学习:Redis数据范例和常见命令。包括:


[*]Redis通用命令;
[*]String范例;
[*]Hash范例;
[*]List范例;
[*]Set范例;
[*]SortedSet范例。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Redis从入门到精通(一)Redis安装与启动、Redis客户端的利用