博客 Redis特性初识及其安装与配置

Redis特性初识及其安装与配置

   数栈君   发表于 2023-08-10 11:04  144  0

1.认识Redis

Redis(Remote Dictionary Server)是一个基于客户端-服务器架构的存储数据的中间件。它是一种内存数据库,属于NoSQL(非关系型数据库)的一种,可用于作为数据库,缓存/会话存储,消息队列。

它通常被用作中间缓存层,将频繁访问的数据存储在内存中,从而大幅提升读取性能。上文所说的主从分离/冷热分离架构中的缓存服务器就可以用Redis来实现,以提高热点数据的读取性能。

Redis主要特点

1.键值存储:Redis使用简单的键值对(K-V)数据模型。每个键都与一个唯一的值相关联,通过键可以快速访问和操作对应的值。

2.内存存储:Redis将数据保存在内存中,以实现高速的读写操作(还引入了IO多路复用,一个线程管理多个socket)。这使得Redis能够实现非常低延迟和高吞吐量的数据访问

3.可编程的:可直接通过简单的交互式命令进行操作,也可通过脚本的方式,批量执行操作

4.可扩展:Redis提供了一组API,在原有的功能上进行扩展(以支持更多的数据结构,命令),通过几个语言编写Redis扩展,本质上是一个动态链接库

5.持久化与备份:提供持久化功能,将数据写入磁盘或其他持久存储介质。此外,一些RDS还支持数据备份和恢复功能,以防止数据丢失

6.支持集群:支持水平扩展(类似于分库分表),将数据分片到多个节点上,以提高存储和处理能力

7.高可用性:Redis支持主从复制(Master-Slave Replication)和哨兵(Sentinel)机制,以提供数据的高可用性和容错能力。通过配置主从复制和哨兵节点,Redis可以实现自动故障恢复和故障转移

主要应用场景

1.实时的数据存储(Real-time data store),将 Redis 当作数据库。适用于对性能要求高的业务场景

2.作为缓存/会话存储(Caching & session storage),MySql存储数据空间大,但是读取速度慢,满足不了缓存的要求

会话存储时,cookie用来存储用户信息的身份标识(sessionId),需要session配合,Redis真正存储了用户信息。无论负载均衡器将登录请求分担给哪个应用服务器,都能从Redis中获取到会话

3.消息队列(服务器)(Streaming & messaging),可以实现网络版的生产者-消费者模型(优势:解耦合;削峰填谷)

注意:由于是使用内存来存储数据,不能使用Redis存储大规模数据,考虑使用其它数据库

2.MySQL VS NoSQL

Redis属于一种NoSQL数据库

数据模型:

●MySQL是关系型数据库管理系统(RDBMS),使用表格来组织数据,并使用结构化查询语言(SQL)进行数据操作。数据以行和列的形式存储,且需预定义数据模式和数据类型。

●NoSQL是非关系型数据库,其数据模型可以是键值对(Key-Value)、文档(Document)、列族(Wide-Column)或图形(Graph)等。NoSQL数据库更加灵活,不需要预定义固定的数据模式

扩展性:

●MySQL在水平扩展时存在一些限制,常规部署通常是单机或主从复制架构。虽然可以通过分区和分片等技术来提高性能和可伸缩性,但相对较复杂。

●NoSQL数据库通常天生具备可伸缩性,易于构建分布式集群,可以通过添加更多节点来水平扩展,以应对大规模数据和高并发访问的需求。

强一致性和灵活性:

●MySQL支持强一致性,即保证所有读取操作都能看到最新的写入操作。通过事务和锁机制,确保数据一致性和完整性。

●NoSQL数据库中的一些类型,如键值对存储,可能会放宽一致性要求以换取更高的性能和可用性。这种弱一致性模型在某些场景下更加适用。

查询复杂性:

●MySQL作为关系型数据库,支持SQL语言进行复杂查询,可以执行连接操作、聚合函数和多表关联等。

●NoSQL数据库的查询方式相对简单,通常使用键值对或类似于JSON的查询语法。它们更适合于数据访问模式简单、数据结构扁平化的场景。

如果需要强大的事务支持、复杂查询和一致性保证,以及已经有现有的SQL架构和工具链,那么MySQL是一个不错的选择。对于大规模数据、高并发和灵活的数据模型,以及更容易进行水平扩展的需求,可以考虑使用NoSQL数据库。

此外,也可以在特定场景中将两者结合使用,如使用MySQL作为主数据库,然后使用NoSQL数据库作为辅助或缓存数据库来提升性能。

3.Redis的安装与配置

redis5的安装

Redis官方不支持Windows版本的,需要在Linux中安装

前置工作:安装Linux环境

我们在CentOS上安装Redis5,如果是CentOS8,yum仓库中默认的redis是5版本,直接yum install

如果是CentOS7,yum仓库中默认的redis是3版本,不能直接yum install

需要先安装额外的软件源-scl源

yum install centos-release-scl-rh
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/f3dd07509d4e0fa74a4602f5b87f1a8d..png
  

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/016e1d6c4130d5bd7e677b53707e9a24..png
  


安装redis5
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4a8e91d3ed9a8a717f0af875f200d804..png
  
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/501f654e53c815a41ebbb5bcf41f30e6..png
  

修改配置文件

安装完成之后,由于默认的安装目录比较深且复杂,我们通过符号链接,把需要用的关键内容设置到方便使用的目录中,相当于快捷方式

1)针对可执行程序设置符号链接

[root@localhost user]# cd /usr/bin
[root@localhost bin]# ln -s /opt/rh/rh-redis5/root/usr/bin/redis-server ./redis-server
[root@localhost bin]# ln -s /opt/rh/rh-redis5/root/usr/bin/redis-sentinel ./redis-sentinel
[root@localhost bin]# ln -s /opt/rh/rh-redis5/root/usr/bin/redis-cli ./redis-cli

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/610a73ad6a37242df145c56397dde27d..png
  

2)针对配置文件设置符号链接

[root@localhost etc]# ln -s /etc/opt/rh/rh-redis5/ ./redis
[root@localhost etc]# ll redis/
总用量 76
drwxr-xr-x. 2 root root 6 4月 17 2019 opt
drwxr-xr-x. 2 root root 6 4月 17 2019 pki
drwxr-xr-x. 5 root root 52 7月 10 07:36 pm
-rw-r-----. 1 redis root 61916 10月 25 2021 redis.conf
-rw-r-----. 1 redis root 9837 10月 25 2021 redis-sentinel.conf


修改配置文件

1)设置ip地址

先进入redis的配置文件中

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/1e25c67e9e060ceceb9fa36230374714..png
  

将ip地址127.0.0.1修改为0.0.0.0

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/03516d8cd78bee132386fbdbfbd9b00e..png
  

2)将保护模式设置为no

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/e6159c1e319119accb3b2ececee4dbd2..png
  

3)启动守护进程

服务器程序一般都是一后台进程的方式运行,linux中的进程,分为前台进程和后台进程。前台进程会随着终端的关闭结束,后台进程不会随终端关闭而关闭

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/76a5687d3389536ff4940273964b3b47..png
  

4)设置工作目录

创建工作目录

在配置文件中,设置工作目录

[root@localhost redis]# mkdir -p /var/lib/redis
[root@localhost redis]# vim redis.conf


5)设置日志目录

先创建日志目录

[localhost redis]# mkdir -p /var/log/redis/

在配置文件中,设置日志目录

http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/2f025e9d723ac1a6da62dc60ab6af800..png
  

启动redis

启动redis命令:redis-server /etc/redis/redis.conf

[root@localhost redis]# mkdir -p /var/log/redis/
[root@localhost redis]# redis-server /etc/redis/redis.conf
[root@localhost redis]# netstat -anp | grep redis
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 64192/redis-server
[root@localhost redis]# redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379>
ping:与redis服务做心跳测试,服务端正常的话会返回pong

redis成功启动并且绑定端口为6379。进程id为64192

关闭redis:根据netstat或者ps查询到redis的服务器的pid,再根据pid进行kill即可

关闭redis命令:kill 64192

后续如果修改了配置文件,需要重启redis才能生效

查看redis生成的日志文件

[root@localhost redis]# cd /var/log/redis/
[root@localhost redis]# ll
总用量 4
-rw-r--r--. 1 root root 2496 7月 10 08:31 redis-server.log
[root@localhost redis]# vim redis-server.log
http://dtstack-static.oss-cn-hangzhou.aliyuncs.com/2021bbs/files_user1/article/4048daf4f130de6d19c1d5c3a513a302..png
  

4.Redis客户端

Redis也是一个基于客户端-服务器(Client-Server)架构的内存数据库

命令行客户端
自带的命令行客户端,可通过命令直接启动

redis-cli -h <host> -p <port>

其中 <host> 是Redis服务器的主机名或IP地址,<port> 是Redis服务器监听的端口号。

输入密码(如果有密码保护)。如果Redis服务器设置了密码保护,命令行客户端将提示输入密码以进行身份验证。输入密码后,按下回车键

图形化界面客户端

桌面程序或web程序,使用较少,依赖的是windows系统,连接到windows系统后会有诸多限制。

基于redis的API自行开发客户端

工作中最主要的形态,后续会通过java视角去演示开发客户端的过程

注意:redis的“快”是相对于mysql这类关系型数据库的,如果是直接和内存中的操作变量相比就没有优势甚至更慢了。

比如针对单机系统,应用程序要存储K-V结构的数据,那么使用redis还是HashMap更好呢?

引入redis,一定是比变量HashMap更慢的,因为map是直接操作内存,redis是先通过网络再操作内存的

具体是否使用redis还要考虑实际的需求,引入redis的缺点是会更慢,但数据能单独存储,后续重启服务器不会影响数据内容,使用hashmap,服务器重启后数据就没了。

此外,前文所描述的,如果未来要扩展成分布式系统,使用redis也是更佳的



免责申明:

本文系转载,版权归原作者所有,如若侵权请联系我们进行删除!

《数据治理行业实践白皮书》下载地址:https://fs80.cn/4w2atu

《数栈V6.0产品白皮书》下载地址:
https://fs80.cn/cw0iw1

想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:
https://www.dtstack.com/?src=bbs

同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:
https://github.com/DTStack

0条评论
上一篇:Ubuntu安装RabbitMq
社区公告
  • 大数据领域最专业的产品&技术交流社区,专注于探讨与分享大数据领域有趣又火热的信息,专业又专注的数据人园地

最新活动更多
微信扫码获取数字化转型资料
钉钉扫码加入技术交流群