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

目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/22517.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Feign技术

说明&#xff1a;Feign和RestTemplate一样&#xff0c;是用于微服务之间通信的&#xff0c;配合注册中心技术Nacos&#xff0c;可以搭建一个完整的SpringCloud环境。本文介绍在NacosFeign环境下&#xff0c;Feign的使用。 环境介绍&#xff1a;创建两个服务&#xff0c;订单服…

Loki+promtail+Grafana监控docker容器日志

目标&#xff1a;监控docker容器的日志&#xff0c;适用于生产环境 效果&#xff1a; 需要的工具&#xff1a;Loki&#xff0c;promtail&#xff0c;Grafana 通过安装promtail容器收集日志&#xff0c;并把日志发送给loki存储处理&#xff0c;由Grafana展示日志。 参考官网的…

解决IDEA项目external libraries依赖包消失的问题

有时候电脑重启后&#xff0c;再打开IDEA上的项目时会出现external libraries目录下的依赖包都消失了的情况&#xff0c;只剩下了一个JDK的包 网上说可以通过刷新IDEA的缓存解决&#xff0c;但我试了没有效果&#xff0c;最后使用如下办法解决&#xff1a; 1.删除项目目录下的…

Web入门-SpringBoot

SpringBootweb快速入门 需求&#xff1a;使用Spring Boot开发一个web项目&#xff0c;浏览器发起请求/hello后&#xff0c;给浏览器返回字符串”Hello World~“开发步骤 创建SpringBoot工程&#xff0c;并勾选web开发的相关依赖 根据自己idea的版本的不同创建模块即可 &#x…

最火爆的大模型框架LangChain七大核心及案例剖析上(一)

最火爆的大模型框架LangChain七大核心及案例剖析上 10.1 Models解析及案例剖析 本节正式进入当前开源界最火爆的大模型开发框架LangChain的部分,会讲解整个LangChain解决的问题及它的工作机制,通过一个“LangChain GPT内容创建者”(“LangChain GPT Content Creator”)的具体…

冷门研究冒险家同济陈涵晟:让科技帮助未来人类拓展艺术边界

原来他们是这样走过来的&#xff01; 【AI红人荟】——这里是TechBeat人工智能社区为优秀的AI工作者开设的人物专访栏目。从膜拜“红人”到成为“红人”&#xff0c;TechBeat与你一起&#xff0c;在AI进阶之路上&#xff0c;升级打怪、完美通关~ 本篇人物&#xff0c;是来自同…

KMP算法和朴素算法对比

1.KMP速求next数组 先记录做题过程 等有时间再填内容吧

【GitHub】强大的终端录制工具-Terminalizer

Terminalizer 是一个GitHub上优秀的开源项目&#xff0c;目前项目点赞数已达&#xff1a;14k&#xff0c;该项目可以轻松记录下你在命令行的操作&#xff0c;并将录制好的内容输出成 gif 图像或直接分享到网上。 项目开源协议&#xff1a;MIT 项目主开发语言&#xff1a;JavaSc…

【Elasticsearch】DSL查询文档

目录 1.DSL查询文档 1.1.DSL查询分类 1.2.全文检索查询 1.2.1.使用场景 1.2.2.基本语法 1.2.3.示例 1.2.4.总结 1.3.精准查询 1.3.1.term查询 1.3.2.range查询 1.3.3.总结 1.4.地理坐标查询 1.4.1.矩形范围查询 1.4.2.附近查询 1.5.复合查询 1.5.1.相关性算分 …

IDEA使用插件绘制UML类图+PlantUML语法讲解

安装 IDEA安装插件 安装完插件记得重启一下IDEA 安装Graphviz&#xff08;亲测win11可以使用&#xff09; 安装完插件之后&#xff0c;还需要安装Graphviz才可以渲染图形。 Graphviz安装包下载地址 安装过程很简单&#xff0c;直接双击或者管理员身份运行即可&#xff0c;注…

mysql数据库的定时备份脚本(docker环境和非docker环境)

一、非docker安装的MySQL MySQL作为一种常用的数据库管理系统,拥有着众多的优秀特性,如高性能、高可靠性、高可扩展性等。然而,在数据备份上,也需要我们进行一定的处理,这样才能保证数据的安全性。因此,在这里我们将介绍如何定时备份MySQL数据库。 我们可以通过MySQL自…

5G时代的材料新宠——液晶高分子聚合物

液晶高分子聚合物时80年代初期发展起来的一种新型高性能工程塑料&#xff0c;英文名为&#xff1a;Liquid Crystal Polymer 简称为LCP。 聚合方法以熔融缩聚为主&#xff0c;全芳香族LCP多辅以固相缩聚以制得高分子量产品。非全芳香族LCP常采用一步或二步熔融聚合制取产品。近年…