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

Redis是一个基于内存的NoSQL数据库,常用于缓存、会话存储和消息队列。文章介绍了Redis的特点,包括键值存储、内存存储、可编程性、扩展性、持久化及集群支持。同时对比了MySQL和NoSQL的区别,强调了扩展性和数据模型的灵活性。还详细讲解了在Linux环境下安装Redis5的步骤及配置要点。
摘要由CSDN通过智能技术生成

目录

1.认识Redis

Redis主要特点

主要应用场景

2.MySQL VS NoSQL

3.Redis的安装与配置

redis5的安装 

修改配置文件 

 启动redis

4.Redis客户端

命令行客户端

图形化界面客户端

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


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

安装redis5 

修改配置文件 

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

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

 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的配置文件中

将ip地址127.0.0.1修改为0.0.0.0 

 2)将保护模式设置为no

 3)启动守护进程

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

4)设置工作目录

创建工作目录

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

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

5)设置日志目录

先创建日志目录

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

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

 启动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

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也是更佳的

  • 44
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 35
    评论
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

YoLo♪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值