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

news2024/12/26 0:16:08

目录

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.coloradmin.cn/o/749263.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python-Web框架flask使用

目录 1.Web框架 1.1 flask 1.1.1 debug调试 1.1.2 定义参数web服务 获取字符串 ​编辑 1.1.3 html网页渲染 1.13.1 带参数传给网页文件 普通元素 列表元素 字典元素 1.Web框架 1.1 flask python的web框架&#xff0c;目录结构如下&#xff1a; 1.static存放的是css,…

《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.3》

一、环境信息 操作系统&#xff1a;Centos7.6.1810 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 如下图所示&#xff1a; 注意&#xff1a;升级后由于加密算法的区别&#xff0c;低版本的SSH工具可能无法连接&#xff0c;建议改用Xshell7或SecureCRT9.0以上版本。 二、注意事项 1、 …

2023最新版 Navicat 16.2.3安装和试用教程详解:轻松掌握最新版本的数据库管理工具连接Redis

&#x1f337;&#x1f341; 博主 libin9iOak带您 Go to New World.✨&#x1f341; &#x1f984; 个人主页——libin9iOak的博客&#x1f390; &#x1f433; 《面试题大全》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33…

kettle开发-Day40-AI分流之case/switch

前言&#xff1a; 前面我们讲到了很多关于数据流的AI方面的介绍&#xff0c;包括自定义组件和算力提升这块的&#xff0c;今天我们来学习一个关于kettle数据分流处理非常重要的组件Switch / Case 。当我们的数据来源于类似日志、csv文件等半结构化数据时&#xff0c;我们需要在…

计算机网络 day6

目录 arp协议 arp病毒\欺骗 arp病毒的运行原理 arp病毒产生的后果&#xff1a; 解决方法&#xff1a; ICMP协议 ICMP用在哪里&#xff1f; ICMP协议数据的封装过程 ​编辑 为什么icmp协议封装好数据后&#xff0c;还要加一个ip包头&#xff0c;再使用ip协议再次进…

【UE4 C++】08-生成抛射物来模拟攻击效果

步骤 新建一个C类&#xff0c;父类为Actor&#xff0c;命名为“ASMagicProjectile” 在“ASMagicProjectile.h”中添加如下代码&#xff1a; 在“ASMagicProjectile.cpp”中添加如下代码&#xff1a; 编译后在虚幻编辑器中新建一个蓝图&#xff0c;选择父类为我们刚创建的C类…

vscode插件开发之终端那些事儿

在开发vscode插件的时候&#xff0c;好几个设计都需要集成终端。 查资料后发现vsocd为开发者提供了丰富的终端API。 结合我自己的需求来展开终端的那些事儿吧&#xff1a; 从treeview中点击触发打开一个终端 无关的代码省略&#xff1a; vscode.window.createTerminal({name…

python+selenium进行cnblog的自动化登录测试

Web登录测试是很常见的测试&#xff0c;手动测试大家再熟悉不过了&#xff0c;那如何进行自动化登录测试呢&#xff01;本文就基于pythonselenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化登录测试&#xff0c;可提供点参考&#xff01;下面就包括测试代…

有没有好的PC端和移动端都能用的便签app?

生活在快节奏的社会环境中&#xff0c;我们每天都要面对大量的事务。为了更好地管理任务和时间&#xff0c;便签app成为了越来越多人选择的工具。因为&#xff0c;便签app不仅能帮助我们记录并安排日常事务&#xff0c;还可以设置提醒事项&#xff0c;准时发送提醒通知告诉我们…

数学建模——插值算法

概念&#xff1a;数模比赛中&#xff0c;常常需要根据有已知的函数点进行数、模型处理和分析&#xff0c;而有时候现有的数据是极少的&#xff0c;不足以支撑分析的进行&#xff0c;这时就需要使用一些数学的方法&#xff0c;“模拟产生“一些新的但又比较靠谱的值来满足需求&a…

为什么很多人说不建议学JAVA,说很难找到工作?

前言 在回答这个问题之前&#xff0c;我曾经也看到了类似的其他语言相关的问题&#xff1a; 那么现在问题来了&#xff0c;什么语言都不建议学&#xff0c;那什么是可以学的呢&#xff1f;看多了所谓的不建议学习的文章和回答固然可以了解到该语言的些许缺点和当前环境下的一些…

NTLM协议

0x01 LM Hash加密算法 LM Hash本质是一个DES加密&#xff0c;从Windows Vista和Windows Server 2008开始就禁用了LM Hash。LM Hash明文密码被限定在14位以内&#xff0c;密码超过14位则会停止使用LM Hash。下面介绍一下LM Hash的加密流程&#xff0c;以Pss1234为例&#xff1a…

Element-Plus搭建CMS页面结构 引入第三方图标库iconfont(详细)

Element-Plus组件库使用 element plus组件库是由饿了么前端团队专门针对vue框架开发的组件库&#xff0c;专门用于电脑端网页的。因为里面集成了很多组件&#xff0c;所以使用他可以非常快速的帮我们实现网站的开发。 安装&#xff1a; npm install element-plus --save 引入…

制作Visual Studio离线安装包

vs2015之后官网就不提供离线安装包了&#xff0c;使用离线安装包就需要自己手动制作一个&#xff1b; 以vs2019为例&#xff1a; 先去官网下载在线安装器 官网下载地址&#xff1a;Visual Studio 较旧的下载 - 2019、2017、2015 和以前的版本 (microsoft.com) 展开2019的标签…

表格tr根据内容撑开高度并且每个td继承tr的高度(height:inherit,align-items: stretch)

项目设计图 实际上数据又长又短&#xff0c;例如类型有可能出现2行甚至3行的字数&#xff0c;所以整个行要适配最高的高度&#xff0c;然后其他子元素继承行的高度。 ps&#xff1a;原生的table或者uview的u-table都不怎么好使&#xff0c;所以用view来做 在做的过程中出现高度…

澎湃认证:浪潮信息携手可利邦推出隐私计算一体机解决方案

北京可利邦与浪潮信息联合发布隐私计算一体机解决方案&#xff0c;以浪潮信息inMerge超融合产品为基础设施平台&#xff0c;预装可利邦隐私计算软件平台&#xff0c;通过SRDC一体机进行整机柜交付&#xff0c;助力客户快速上线隐私计算应用系统。该方案已通过浪潮信息澎湃技术认…

Node连接Mongodb数据库

1.初始化 npm init 2.安装mongoose npm i mongoose 3.导入mongoose const mongooserequire("mongoose") 4.连接mongodb服务 mongoose.connect("mongodb://127.0.0.1:27017/user") 说明&#xff1a;mongodb是协议,user是数据库&#xff0c;如果没有会自动创…

Oracle通过函数调用dblink同步表数据方案(全量/增量)

创建对应的包&#xff0c;以方便触发调用 /*包声明*/ CREATE OR REPLACE PACKAGE yjb.pkg_scene_job AS /*创建同步任务*/FUNCTION F_SYNC_DRUG_STOCK RETURN NUMBER;/*同步*/PROCEDURE PRC_SYNC_DRUG_STOCK(RUNJOB VARCHAR2) ; END pkg_scene_job; /*包体*/ CREATE OR REPL…

Dubbo最核心功能——服务暴露的配置、使用及原理

系列文章目录 【收藏向】从用法到源码&#xff0c;一篇文章让你精通Dubbo的SPI机制 面试Dubbo &#xff0c;却问我和Springcloud有什么区别&#xff1f; 超简单&#xff0c;手把手教你搭建Dubbo工程&#xff08;内附源码&#xff09; 文章目录 系列文章目录前言一、服务暴露的…

idea乱码解决方式大汇总

目录 idea版本&#xff1a; 解决方法&#xff1a; 一、基本方法 1. File -> Settings -> Editor 2. 二、Maven乱码解决方法 三、运行时乱码解决方法 四、因为以前乱设置导致的乱码 idea版本&#xff1a; 解决方法&#xff1a; 一、基本方法 1. File -> Setti…