当前位置: 首页 > news >正文

【Redis】redis简介与安装

Redis 简介

Redis 是完全开源的,遵守 BSD 协议(Berkeley Software Distribution 意思是"伯克利软件发行版),是一个高性能的 key-value 数据库。具有以下几个比较明显的特点:

  • 性能极高 – Redis能读的速度可以达到110000次/s,写的速度可以达到81000次/s 。由此可以想到redis是将数据存储在内存中的。
  • 持久化 – Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。
  • 丰富的数据类型 – Redis不仅仅支持简单的key-value类型的数据,同时还提供list、set、zset、hash、BitMap、GEO等数据结构的存储。
  • 支持主从备份 – Redis支持数据的备份,即master-slave模式的数据备份。
  • 功能强大 – 支持类MQ的发布订阅功能,支持Lua脚本,支持事务,支持pipeline
  • 原子性 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
  • 丰富的特性 – Redis还支持 publish/subscribe,通知,key 过期等等特性。

Redis与其他key-value存储区别

  • Redis有着更为复杂的数据结构并且提供对他们的原子性操作,这是一个不同于其他数据库的进化路径。Redis的数据类型都是基于基本数据结构的同时对程序员透明,无需进行额外的抽象。

  • Redis运行在内存中但是可以持久化到磁盘,所以在对不同数据集进行高速读写时需要权衡内存,因为数据量不能大于硬件内存。在内存数据库方面的另一个优点是,相比在磁盘上相同的复杂的数据结构,在内存中操作起来非常简单,这样Redis可以做很多内部复杂性很强的事情。同时,在磁盘格式方面他们是紧凑的以追加的方式产生的,因为他们并不需要进行随机访问。

Redis安装

redis的安装比较简单,我们以目前经常使用的centos7 为例进行安装,其他环境请自行测试。下面提供一个在centos7 上使用源码的方式安装redis 6.0.6版本的脚本。注意不同版本的安装可能有所差别,当然日常测试使用完全也可以使用yum的方式进行安装,可以参考另一篇博客https://blog.csdn.net/margu_168/article/details/133122869

[root@k8s-m2 ~]# cat  install_redis6.0.6.sh 
#!/bin/bash
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
cd /root
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
tar xzf redis-6.0.6.tar.gz -C /usr/local
mv /usr/local/redis-6.0.6 /usr/local/redis
cd /usr/local/redis
make# 日志目录在配置文件中暂未修改
# mkdir -p /data/redis/data/ && mkdir -p /data/redis/logs
##手动修改配置
mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/redis.conf
#IP=`ip a|grep inet|grep eth0 |awk -F' |/' '{print $6}'`
sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis/redis.conf
sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis/redis.conf
sed -i 's/^daemonize no/daemonize yes/g' /etc/redis/redis.conf
##添加启动文件cat > /usr/lib/systemd/system/redis.service  <<EOF
[Unit]
Description=Redis
After=network.target[Service]
Type=forking
PIDFile=/data/redis/logs/redis_6379.pid
ExecStart=/usr/local/redis/src/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -s HUP
ExecStop=/bin/kill -s QUIT
PrivateTmp=true[Install]
WantedBy=multi-user.target

安装结束后,我们可以看到在/usr/local/redis/src/ 目录下有一些 关于 redis 可执行文件,大致说明如下:

名称作用
redis-server启动 redis 服务器
redis-cliredis 命令行客户端
redis-benchmark redis性能测试工具
redis-check-aofAOF 文件修复工具
redis-check-dumpRDB 文件检查工具
redis-sentinelSentinel 服务器(2.8以后)

redis不同启动方式比较

redis 常见的有三种启动方式,分别如下。

最简单启动

直接使用命令行让redis在前台运行。

[root@k8s-m2 src]# ./redis-server 
8616:C 25 Feb 2024 16:46:16.723 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8616:C 25 Feb 2024 16:46:16.723 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=8616, just started
8616:C 25 Feb 2024 16:46:16.723 # Warning: no config file specified, using the default config. In order to specify a config file use ./redis-server /path/to/redis.conf
8616:M 25 Feb 2024 16:46:16.725 * monotonic clock: POSIX clock_gettime_._                                                  _.-``__ ''-._                                             _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._                                  (    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 8616`-._    `-._  `-./  _.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |           https://redis.io       `-._    `-._`-.__.-'_.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |                                  `-._    `-._`-.__.-'_.-'    _.-'                                   `-._    `-.__.-'    _.-'                                       `-._        _.-'                                           `-.__.-'                                               8616:M 25 Feb 2024 16:46:16.726 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8616:M 25 Feb 2024 16:46:16.726 # Server initialized
8616:M 25 Feb 2024 16:46:16.726 * Ready to accept connections

该启动方式将使用 redis 的默认配置。默认使用端口 6379 ,日志信息直接打印在屏幕上。缺点就是退出后redis服务(Ctrl+c)也就停止了。

动态参数启动

我们以指定端口号启动 redis为例,其他参数可以根据实际需要添加:

[root@k8s-m2 src]# ./redis-server --port 6389
14493:C 25 Feb 2024 16:50:50.212 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
14493:C 25 Feb 2024 16:50:50.212 # Redis version=6.2.6, bits=64, commit=00000000, modified=0, pid=14493, just started
14493:C 25 Feb 2024 16:50:50.212 # Configuration loaded
14493:M 25 Feb 2024 16:50:50.214 * monotonic clock: POSIX clock_gettime_._                                                  _.-``__ ''-._                                             _.-``    `.  `_.  ''-._           Redis 6.2.6 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._                                  (    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6389|    `-._   `._    /     _.-'    |     PID: 14493`-._    `-._  `-./  _.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |           https://redis.io       `-._    `-._`-.__.-'_.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |                                  `-._    `-._`-.__.-'_.-'    _.-'                                   `-._    `-.__.-'    _.-'                                       `-._        _.-'                                           `-.__.-'                                               14493:M 25 Feb 2024 16:50:50.215 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
14493:M 25 Feb 2024 16:50:50.215 # Server initialized
14493:M 25 Feb 2024 16:50:50.215 * Loading RDB produced by version 6.2.6
14493:M 25 Feb 2024 16:50:50.215 * RDB age 17 seconds
14493:M 25 Feb 2024 16:50:50.215 * RDB memory usage when created 0.77 Mb
14493:M 25 Feb 2024 16:50:50.215 # Done loading RDB, keys loaded: 0, keys expired: 0.
14493:M 25 Feb 2024 16:50:50.216 * DB loaded from disk: 0.000 seconds
14493:M 25 Feb 2024 16:50:50.216 * Ready to accept connections

同样的还是在前台打印出了日志信息,并且端口号变为了指定的 6389,覆盖了默认配置文件中的端口号。缺点还是退出后redis服务也就停止了。
验证:

[root@k8s-m2 src]# ./redis-cli -p 6389
127.0.0.1:6389> get *
(nil)
127.0.0.1:6389> 

配置文件启动

在日常的使用中,我们一般都是采用配置启动的方式,一方面是涉及到很多配置参数,其次通过命令行指定大量配置效率低,容易出错,长时间也不可能记得当初指定了哪些参数。所以推荐使用配置文件的方式来启动更好。

如上安装脚本所示:
习惯将配置文件放在/etc目录下,可以根据自己的习惯进行修改,在使用时指定实际目录即可。创建一个/etc/redis 目录,并 拷贝一个原始的redis.conf 文件到该目录。

mkdir /etc/redis
cp /usr/local/redis/redis.conf /etc/redis/redis.conf
# 修改了部分配置
sed -i 's/^bind 127.0.0.1/bind 0.0.0.0/g' /etc/redis/redis.conf
sed -i 's/^protected-mode yes/protected-mode no/g' /etc/redis/redis.conf
sed -i 's/^daemonize no/daemonize yes/g' /etc/redis/redis.conf

大家可以自行先查看一下配置文件中具体有哪些配置。使用下列命令启动 redis。

/usr/local/redis/src/redis-server /etc/redis/redis.conf 

可以看到控制台什么都没返回,说明 redis 以守护进程的方式启动了。
查看进程是否存在,并进行连接测试。

[root@k8s-m2 src]# ps aux|grep redis
root     31308  0.1  0.0 162588  2956 ?        Ssl  17:03   0:00 /usr/local/redis/src/redis-server 0.0.0.0:6379
root     32402  0.0  0.0 112816   968 pts/1    S+   17:04   0:00 grep --color=auto redis
[root@k8s-m2 src]# ./redis-cli 
127.0.0.1:6379> get *
(nil)

关闭 redis

以守护进程方式启动redis后,我们可以使用下列命令关闭:

# 通过ps查看到redis进场的pid号
[root@k8s-m2 src]# ps aux | grep redis
[root@k8s-m2 src]# kill -9 PID值# 端口号是默认的可以不指定
[root@k8s-m2 src]# redis-cli -p port shutdown

相关文章:

【Redis】redis简介与安装

Redis 简介 Redis 是完全开源的&#xff0c;遵守 BSD 协议&#xff08;Berkeley Software Distribution 意思是"伯克利软件发行版&#xff09;&#xff0c;是一个高性能的 key-value 数据库。具有以下几个比较明显的特点&#xff1a; 性能极高 – Redis能读的速度可以达…...

【xss跨站漏洞】xss漏洞利用工具beef的安装

安装环境 阿里云服务器&#xff0c;centos8.2系统&#xff0c;docker docker安装 前提用root用户 安装docker yum install docker 重启docker systemctl restart docker beef安装 安装beef docker pull janes/beef 绑定到3000端口 docker run --rm -p 3000:3000 janes/beef …...

编程笔记 html5cssjs 086 JavaScript 内置对象

编程笔记 html5&css&js 086 JavaScript 内置对象 一、Object二、Array三、String四、Number五、Math六、Date七、RegExp八、Function九、示例小结 JavaScript 内置对象是 JavaScript 语言本身定义的一系列预定义的对象&#xff0c;这些对象在全局作用域中可以直接使用&…...

AttributeError: ‘DataFrame‘ object has no attribute ‘set_value‘怎么修改问题的解决

在jupyternotebook中运行&#xff1a; def remplacement_df_keywords(df, dico_remplacement, roots False):df_new df.copy(deep True)for index, row in df_new.iterrows():chaine row[plot_keywords]if pd.isnull(chaine): continuenouvelle_liste []for s in chaine.…...

Jmeter内置变量 vars 和props的使用详解

JMeter是一个功能强大的负载测试工具&#xff0c;它提供了许多有用的内置变量来支持测试过程。其中最常用的变量是 vars 和 props。 vars 变量 vars 变量是线程本地变量&#xff0c;它们只能在同一线程组内的所有线程中使用&#xff08;线程组内不同线程之间变量不共享&#…...

c#高级-正则表达式

正则表达式是由普通字符和元字符&#xff08;特殊符号&#xff09;组成的文字形式 应用场景 1.用于验证输入的邮箱是否合法。 2.用于验证输入的电话号码是否合法。 3.用于验证输入的身份证号码是否合法。等等 正则表达式常用的限定符总结&#xff1a; 几种常用的正则简写表达式…...

说说UE5中的几种字符串类

在Unreal Engine 5 (UE5) 的C中&#xff0c;与字符串相关的类主要包括&#xff1a; FString&#xff1a; Unreal Engine中用于处理字符串的主要类&#xff0c;提供了丰富的字符串操作方法和功能。 FText&#xff1a; 用于表示本地化文本的类&#xff0c;可以包含多种语言的文本…...

(done) 如何判断一个矩阵是否可逆?

参考视频&#xff1a;https://www.bilibili.com/video/BV15H4y1y737/?spm_id_from333.337.search-card.all.click&vd_source7a1a0bc74158c6993c7355c5490fc600 这个视频里还暗含了一些引理 1.若 AX XB 且 X 和 A,B 同阶可逆&#xff0c;那么 A 和 B 相似。原因&#xff1…...

洗眼镜用的超声波清洗机哪一家更好一点?好用超声波清洗机排名

在我们日常生活中&#xff0c;眼镜、首饰、手表等细小物件的清洁一直是一个让人头疼的问题。传统的清洁方法不仅耗时耗力&#xff0c;还可能因为不当的操作而损伤到这些精细的物品。那么&#xff0c;有没有一种既快捷又安全的清洁方式呢&#xff1f;答案就是使用超声波清洗机。…...

(二十二)Flask之上下文管理第三篇【收尾—讲一讲g】

目录: 每篇前言:g到底是什么?生命周期在请求周期内保持数据需要注意的是:拓展—面向对象的私有字段深入讲解一下那句:每篇前言: 🏆🏆作者介绍:【孤寒者】—CSDN全栈领域优质创作者、HDZ核心组成员、华为云享专家Python全栈领域博主、CSDN原力计划作者🔥🔥本文已…...

五种多目标优化算法(MOGWO、MOJS、NSWOA、MOPSO、MOAHA)性能对比,包含6种评价指标,9个测试函数(提供MATLAB代码)

一、5种多目标优化算法简介 1.1MOGWO 1.2MOJS 1.3NSWOA 1.4MOPSO 1.5MOAHA 二、5种多目标优化算法性能对比 为了测试5种算法的性能将其求解9个多目标测试函数&#xff08;zdt1、zdt2 、zdt3、 zdt4、 zdt6 、Schaffer、 Kursawe 、Viennet2、 Viennet3&#xff09;&#xff0…...

istio实战:springboot项目在istio中服务调用

目录 一、前言二、准备工作三、问题排查四、总结参考资料 一、前言 在经过前面几天k8s和Istio的安装之后&#xff0c;开始进入最核心的阶段。微服务在抛弃传统的服务注册和服务发现之后&#xff0c;是怎么在istio怎么做服务间的调用的呢&#xff1f;本次实战花费了我2-3天的时…...

随机分布模型

目录 前言 一、离散型随机变量 1.1 0-1分布 1.2 二项分布 1.3 帕斯卡分布 1.4 几何分布 1.5 超几何分布 1.6 泊松分布 二、连续型随机变量 2.1 均匀分布 2.2 指数分布 2.3 高斯分布/正态分布 2.4 分布&#xff08;抽样分布&#xff09; 2.5 t分布&#xff08;抽样…...

Visual Studio:Entity设置表之间的关联关系

1、选择表并右键-》新增-》关联 2、设置关联的表及关联关系并“确定”即可...

每日五道java面试题之spring篇(二)

目录&#xff1a; 第一题 Spring事务传播机制第二题 Spring事务什么时候会失效?第三题 什么是bean的⾃动装配&#xff0c;有哪些⽅式&#xff1f;第四题 Spring中的Bean创建的⽣命周期有哪些步骤&#xff1f;第五题 Spring中Bean是线程安全的吗&#xff1f; 第一题 Spring事务…...

287.【华为OD机试真题】字符串序列判定(贪心算法—JavaPythonC++JS实现)

🚀点击这里可直接跳转到本专栏,可查阅顶置最新的华为OD机试宝典~ 本专栏所有题目均包含优质解题思路,高质量解题代码(Java&Python&C++&JS分别实现),详细代码讲解,助你深入学习,深度掌握! 文章目录 一. 题目-字符串序列判定二.解题思路三.题解代码Python题…...

Sentinel微服务流量治理组件实战上

目录 分布式系统遇到的问题 解决方案 Sentinel 是什么&#xff1f; Sentinel 工作原理 Sentinel 功能和设计理念 流量控制 熔断降级 Sentinel工作主流程 Sentinel快速开始 Sentinel资源保护的方式 基于API实现 SentinelResource注解实现 Spring Cloud Alibaba整合…...

Three.js加载PLY文件

这是官方的例子 three.js webgl - PLY 我在Vue3中使用&#xff0c;测试了好久始终不显示点云数据。在网上查询后发现ply文件要放置在public目录下才行 <el-row><el-button type"primary" class"el-btn" click"IniThree1">PLY</…...

chrome闪退后打不开问题 打开立即闪退

今天刚遇到&#xff0c;大概率是某些网站引起的闪退&#xff0c;重启和清理也不能解决问题 网上到处都是答非所问&#xff0c;还有什么打开chrome再进行设置这种回答 在此解决下 注意该方法根据我测试&#xff0c;唯一会损失的是chrome扩展&#xff0c;可以提前去 C:\Users…...

Slave被误写入数据如何恢复到主库

背景 在GreatSQL主从复制环境中&#xff0c;有时候可能会出现一些误操作&#xff0c;将本应该写入到主库的数据写入到了从库&#xff0c;导致主从数据不一致&#xff0c;影响数据同步。是否可以将写入从库的数据同步写入主库呢&#xff1f; 测试环境 角色IP地址数据库开放端…...

电气噪声抑制实战:从原理到电磁屏蔽的电子系统稳定性设计

1. 项目概述&#xff1a;无处不在的“隐形杀手”——电气噪声作为一名在电子硬件开发一线摸爬滚打了十多年的工程师&#xff0c;我处理过无数稀奇古怪的故障。很多时候&#xff0c;问题不是出在核心算法或主控芯片上&#xff0c;而是一个看不见摸不着的“隐形杀手”——电气噪声…...

表空间(Tablespace)管理

1.1、表空间类型类型用途说明永久表空间存储用户数据SYSTEM, SYSAUX, USERS, 自定义UNDO表空间事务回滚和读一致性自动管理&#xff0c;12c支持多UNDO临时表空间排序、哈希等临时操作TEMP&#xff0c;不产生redo大文件表空间单个数据文件可达128TBBigfile Tablespace加密表空间…...

终极免费风扇控制软件:如何让你的电脑既安静又凉爽

终极免费风扇控制软件&#xff1a;如何让你的电脑既安静又凉爽 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_Trending/fa/Fa…...

HX‑01 USB 音频编码模块:全行业通用的稳定音频核心解决方案

HX‑01 USB 音频编码模块凭借免驱即用、高清语音处理、宽温稳定运行、强抗干扰设计、灵活配置模式的核心优势&#xff0c;不仅在矿山行业构建了可靠的语音通讯体系&#xff0c;更能适配安防监控、智能楼宇、教育会议、工业自动化、机器人设备、医疗健康等多行业场景&#xff0c…...

基于语义检索的LLM工具发现框架:从原理到工程实践

1. 项目概述与核心价值最近在折腾AI应用开发&#xff0c;特别是想把手头的几个大语言模型&#xff08;LLM&#xff09;能力整合到自己的工具链里&#xff0c;发现一个挺头疼的问题&#xff1a;模型本身很强大&#xff0c;但让它去精准调用外部工具&#xff08;比如查数据库、发…...

别再让request.getRemoteAddr()背锅了!TongWeb7/6负载均衡后获取真实IP的两种实战方案

负载均衡环境下TongWeb获取真实客户端IP的工程实践 在分布式架构盛行的今天&#xff0c;负载均衡已成为高可用系统的标配组件。但当流量经过多层代理后&#xff0c;后端服务获取的客户端IP往往会"失真"——这不仅是TongWeb特有的问题&#xff0c;而是所有Java Web容…...

【NotebookLM艺术学研究加速器】:20年数字人文专家亲授5大冷启动技巧,3天构建专属艺术文献知识图谱

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM艺术学研究辅助的范式革命 NotebookLM 作为 Google 推出的基于用户上传文档进行深度语义理解的 AI 助手&#xff0c;正悄然重构艺术学研究的知识生产逻辑。它不再依赖通用网络语料&#xff0…...

Zotero文献去重终极指南:3步快速清理重复文献库的完整教程

Zotero文献去重终极指南&#xff1a;3步快速清理重复文献库的完整教程 【免费下载链接】ZoteroDuplicatesMerger A zotero plugin to automatically merge duplicate items 项目地址: https://gitcode.com/gh_mirrors/zo/ZoteroDuplicatesMerger 在学术研究过程中&#…...

Go语言集成OpenAI智能体:从原理到工程实践

1. 项目概述&#xff1a;当Go语言遇上OpenAI智能体最近在GitHub上看到一个挺有意思的项目&#xff0c;叫openai-agents-go。光看名字&#xff0c;大概就能猜到它的定位&#xff1a;一个用Go语言实现的、基于OpenAI API的智能体&#xff08;Agent&#xff09;框架。对于咱们这些…...

小红书内容采集全攻略:XHS-Downloader开源工具完整指南

小红书内容采集全攻略&#xff1a;XHS-Downloader开源工具完整指南 【免费下载链接】XHS-Downloader 小红书&#xff08;XiaoHongShu、RedNote&#xff09;链接提取/作品采集工具&#xff1a;提取账号发布、收藏、点赞、专辑作品链接&#xff1b;提取搜索结果作品、用户链接&am…...