【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的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出

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

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

相关文章

2024年阿里云2核4G配置服务器测评_ECS和轻量性能测评

阿里云2核4G服务器多少钱一年&#xff1f;2核4G服务器1个月费用多少&#xff1f;2核4G服务器30元3个月、85元一年&#xff0c;轻量应用服务器2核4G4M带宽165元一年&#xff0c;企业用户2核4G5M带宽199元一年。本文阿里云服务器网整理的2核4G参加活动的主机是ECS经济型e实例和u1…

Vue3制作一个可拖拽的小箭头

效果图 可以抓住小箭头进行左右拖拽&#xff0c;不会做git图&#xff0c;所以只有静态效果QAQ 代码 <template><div class"tip"draggable"true"dragstart"start" //拖拽开始时drag"dragging" //拖拽种dragend "…

2024.2.27每日一题

之前是出去旅游了没发&#xff0c;现在开学了&#xff0c;继续每日一题&#xff0c;继续卷&#xff0c;一上来就是困难题&#x1f613;&#xff0c;直接cv大法。 LeetCode 统计树中的合法路径数目 2867. 统计树中的合法路径数目 - 力扣&#xff08;LeetCode&#xff09; 题目…

选择何种操作系统作为网站服务器

选择操作系统时&#xff0c;需考虑稳定性、安全性、成本、兼容性和技术支持等因素&#xff0c;常见选项有Windows Server和Linux发行版。 选择网站服务器的操作系统是一个关键的决策&#xff0c;因为它将影响到网站的性能、稳定性、安全性以及未来的扩展性&#xff0c;目前市场…

PMP考试之20240229

1、两个团队成员讨论一个关于服务器配置的问题&#xff0c;当第一个成员问为什么这个问题一直发生时&#xff0c;第二个成员说服务器参数混乱&#xff0c;使他很难处理它的配置。第一个团队成员建议他们应该在接下来的几次服务器配置中进行咨询&#xff0c;第二个团队成员同意并…

数据库之ACID

一、ACID **原子性&#xff08;Atomicity&#xff09;&#xff1a;**即事务是不可分割的最小工作单元&#xff0c;事务内的操作要么全做&#xff0c;要么全不做&#xff0c;不能只做一部分&#xff1b; 一致性&#xff08;Consistency&#xff09;&#xff1a;在事务执行前数据…

oauth2.0怎么和jwt结合

OAuth 2.0 和 JWT 可以结合使用&#xff0c;以提供安全的身份验证和授权机制。在结合使用 OAuth 2.0 和 JWT 时&#xff0c;通常是使用 OAuth 2.0 进行用户授权和颁发访问令牌&#xff0c;而 JWT 则用作访问令牌&#xff08;Access Token&#xff09;。 下面是 OAuth 2.0 和 J…

NineData:从 Kafka 到 ClickHouse 的数据同步解决方案

在大数据处理领域&#xff0c;Apache Kafka 和 ClickHouse 都是非常重要的工具。Kafka 是一个分布式流处理平台&#xff0c;被数千家公司用于高性能数据管道、流式分析、数据集成和关键任务应用&#xff0c;如今已成为数据交换、数据集成、数据流转过程中的核心组件。而 ClickH…

【大数据】Flink SQL 语法篇(八):集合、Order By、Limit、TopN

Flink SQL 语法篇&#xff08;八&#xff09;&#xff1a;集合、Order By、Limit、TopN 1.集合操作2.Order By、Limit 子句2.1 Order By 子句2.2 Limit 子句 3.TopN 子句 1.集合操作 集合操作支持 Batch / Streaming 任务。 UNION&#xff1a;将集合合并并且去重。UNION ALL&a…

什么是索引优化?如何确定何时添加或删除索引?如何监控MySQL的性能?

什么是索引优化&#xff1f;如何确定何时添加或删除索引&#xff1f; 索引优化是数据库性能调优的一个重要环节&#xff0c;它涉及到对数据库索引的创建、修改和删除等操作&#xff0c;以提高数据库查询性能和数据访问效率。索引优化主要包括选择合适的索引类型、索引列、索引顺…

DataGrip 2023:让数据库开发变得更简单、更高效 mac/win版

JetBrains DataGrip 2023是一款功能强大的数据库IDE&#xff0c;专为数据库开发和管理而设计。通过DataGrip&#xff0c;您可以连接到各种关系型数据库管理系统(RDBMS)&#xff0c;并使用其提供的一组工具来查询、管理、编辑和开发数据库。 DataGrip 2023 软件获取 DataGrip …

[unity]lua热更新——个人复习笔记【侵删/有不足之处欢迎斧正】

一、AssetBundle AB包是特定于平台的资产压缩包&#xff0c;类似于压缩文件 相对于RESOURCES下的资源&#xff0c;AB包更加灵活轻量化&#xff0c;用于减小包体大小和热更新 可以在unity2019环境中直接下载Asset Bundle Browser 可以在其中设置关联 AB包生成的文件 AB包文件…

【Linux】云服务器的Redis被黑

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;Linux ⛺️稳中求进&#xff0c;晒太阳 攻击发现&#xff1a; 这个异常情况是在腾讯云被入侵后&#xff0c;短信提醒发现的。并没有系统的学习过关于服务器安防相关的知识&#xff0c;遇到…

嵌入式学习日记 22

1.进程间的通信: 1.管道 2.信号 3.消息队列 4.共享内存 5.信号灯 6.套接字 1.管道: 1.无名管道 无名管道只能用于具有亲缘关系的进程间通信 pipe int pipe(int pipefd[2]); 功能: 创建一个无名管道 参数: …

【Hudi】并发控制

MVCC Hudi的表操作&#xff0c;如压缩、清理、提交&#xff0c;hudi会利用多版本并发控制来提供多个表操作写入和查询之间的快照隔离。使用MVCC这种模型&#xff0c;Hudi支持并发任意数量的操作作业&#xff0c;并保证不会发生任何冲突。Hudi默认这种模型。MVCC方式所有的tabl…

国产动漫|基于Springboot的国产动漫网站设计与实现(源码+数据库+文档)

国产动漫网站目录 目录 基于Springboot的国产动漫网站设计与实现 一、前言 二、系统功能设计 三、系统功能设计 1、用户信息管理 2、国漫先驱管理 3、国漫之最管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选题…

LVS-DR实验.

IP规划: servera(LVS-DR):192.168.145.128 serverb(WB1):192.168.145.129 servere(WB2):192.168.145.131 servera(LVS-DR): 添加VIP: # 使用ifconfig命令配置虚拟网卡ens160:0的IP地址为192.168.145.123&#xff0c;广播地址…

C语言中如何进行内存管理

主页&#xff1a;17_Kevin-CSDN博客 收录专栏&#xff1a;《C语言》 C语言是一种强大而灵活的编程语言&#xff0c;但与其他高级语言不同&#xff0c;它要求程序员自己负责内存的管理。正确的内存管理对于程序的性能和稳定性至关重要。 一、引言 C 语言是一门广泛使用的编程语…

VPX基于全国产飞腾FT-2000+/64核+复旦微FPGA的计算刀片

6U VPX计算板 产品简介 产品特点 飞腾计算平台&#xff0c;国产化率100% VPX-MPU6902是一款基于飞腾FT-2000/64核的计算刀片&#xff0c;主频2.2GHz&#xff0c;负责业务数据流的管控和调度。搭配自带独立显示芯片的飞腾X100芯片&#xff0c;可用于于各类终端及服务器类应用场…

蚓链数字化生态系统助力企业业务数字化转型

在当今数字化浪潮中&#xff0c;企业数字化转型已成为提升竞争力的关键。蚓链数字化生态系统致力于通过业务和技术的协同推动企业数字化转型&#xff0c;为企业提供了一套系统化的业务数字化解决方案。 业务数字化的第一步是根据企业当前业务分布&#xff0c;划分业务板块&…