系统学习Linux-Redis基础

一、redis概述

NoSQL(非关系型数据库、内存存储)

类型

文档型数据库(Document-oriented database)如MongoDB;

列族数据库(Column-family database)如HBase、Cassandra等;

图形数据库(Graph database)如Neo4j、ArangoDB等;

键值对数据库(Key-value database)如Redis、Memcached等;

对象数据库(Object-oriented database)如db4o等。

应用场景

缓存:Redis最常用的应用场景就是缓存,它可以缓存各种类型的数据,如数据库查询结果、API返回结果等,以提高应用程序的响应速度和并发性能。

分布式锁:Redis的分布式锁可以确保在分布式系统中对某个资源的互斥访问,避免多个节点出现并发操作的问题。

计数器:Redis支持对计数器的操作,能够方便地实现各种计数器的功能,如网站访问次数计数、订单数量计数等。

会话管理:Redis可以用来管理会话信息,实现会话的状态存储和共享,避免了单点故障的问题。

消息队列:Redis支持发布订阅模式,可以作为一个轻量级的消息队列使用,实现异步消息处理和任务派发等功能。


Redis(远程字典服务)

监听端口号:6379

全称:Remote Dictionary Server

内存存储、持久化、键值对存储

官网:Redis中文网

数据类型:字符串(string)、哈希值(hash)、列表(list)、集合(set)、位图(bitmap)

二、安装方式

编译安装

wget http://download.redis.io/releases/redis-5.0.8.tar.gz

解压进入目录后

make && make install

 修改配置文件redis.conf

# no 表示关闭保护模式
protected-mode no
# yes表示以守护进程的方式运行(会占用一个终端) 
daemonize yes

启动Redis命令:./src/redis-server

[root@localhost redis-5.0.8]# ./src/redis-server
8123:C 08 Aug 2023 14:50:08.278 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8123:C 08 Aug 2023 14:50:08.278 # Redis version=5.0.8, bits=64, commit=00000000, modified=0, pid=8123, just started
8123:C 08 Aug 2023 14:50:08.278 # Warning: no config file specified, using the default config. In order to specify a config file use ./src/redis-server /path/to/redis.conf
8123:M 08 Aug 2023 14:50:08.279 * Increased maximum number of open files to 10032 (it was originally set to 1024)._._                                                  _.-``__ ''-._                                             _.-``    `.  `_.  ''-._           Redis 5.0.8 (00000000/0) 64 bit.-`` .-```.  ```\/    _.,_ ''-._                                   (    '      ,       .-`  | `,    )     Running in standalone mode|`-._`-...-` __...-.``-._|'` _.-'|     Port: 6379|    `-._   `._    /     _.-'    |     PID: 8123`-._    `-._  `-./  _.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |           http://redis.io        `-._    `-._`-.__.-'_.-'    _.-'                                   |`-._`-._    `-.__.-'    _.-'_.-'|                                  |    `-._`-._        _.-'_.-'    |                                  `-._    `-._`-.__.-'_.-'    _.-'                                   `-._    `-.__.-'    _.-'                                       `-._        _.-'                                           `-.__.-'                                               8123:M 08 Aug 2023 14:50:08.279 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
8123:M 08 Aug 2023 14:50:08.279 # Server initialized
8123:M 08 Aug 2023 14:50:08.279 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
8123:M 08 Aug 2023 14:50:08.279 # WARNING you have Transparent Huge Pages (THP) support enabled in your kernel. This will create latency and memory usage issues with Redis. To fix this issue run the command 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' as root, and add it to your /etc/rc.local in order to retain the setting after a reboot. Redis must be restarted after THP is disabled.
8123:M 08 Aug 2023 14:50:08.279 * Ready to accept connections

后台启动redis命令:nohup ./src/redis-server &

查看进程:ps -ef | grep redis

[root@localhost redis-5.0.8]# nohup ./src/redis-server &
[1] 8153
nohup: 忽略输入并把输出追加到"nohup.out"
[root@localhost redis-5.0.8]# ps -ef | grep redis
root       8153   3688  0 14:52 pts/0    00:00:00 ./src/redis-server *:6379
root       8168   3688  0 14:52 pts/0    00:00:00 grep --color=auto redis
[root@localhost redis-5.0.8]# 

进入redis数据库

[root@localhost redis-5.0.8]# ./src/redis-cli查看所有键
语法错误需要加s
127.0.0.1:6379> key *
'(error) ERR unknown command `key`, with args beginning with: `*`, 
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

select切换数据库

127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
(empty list or set)
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys *
1) "zhangsan"

设置键值对

127.0.0.1:6379> set key value [expiration EX seconds|PX milliseconds] [NX|XX]

 设置键zhangsan 值为123 

get 取出/查看键对 键不存在则返回空

127.0.0.1:6379> set zhangsan 123
OK
127.0.0.1:6379> keys *
1) "zhangsan"
127.0.0.1:6379> get zhangsan
"123"

删除键值对

del key

127.0.0.1:6379> keys *
1) "zhangsan"
127.0.0.1:6379> del zhangsan
(integer) 1
127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> 

rename 重命名键名称 rename oldkey newkey

不论更名后的键是否存在都会覆盖原有键,并将改名前的键的值富裕改名后的键

127.0.0.1:6379> keys *
(empty list or set)
127.0.0.1:6379> set zhangsan 123
OK
127.0.0.1:6379> rename zhangsan lisi
OK
127.0.0.1:6379> keys *
1) "lisi"
127.0.0.1:6379> get lisi
"123"
127.0.0.1:6379> set wangwu 456
OK
127.0.0.1:6379> keys *
1) "wangwu"
2) "lisi"
127.0.0.1:6379> rename lisi wangwu
OK
127.0.0.1:6379> get wangwu
"123"
127.0.0.1:6379> 

renamenx 重命名键名称

假如改名后键名称存在则更改不成功

renamenx oldkey newkey

127.0.0.1:6379> keys *
1) "wangwu"
2) "lisi"
127.0.0.1:6379> renamenx lisi wangwu
(integer) 0

move 移动键值对到指定数据库

假如目标数据库中存在同名键则移动失败

127.0.0.1:6379> move lisi 1
(integer) 1
127.0.0.1:6379> select 1
OK
127.0.0.1:6379[1]> keys *
1) "lisi"

ttl 查看键值对的生命周期

ttl key 

-1 永久     -2 已过期

expire 设置键值对的存储周期

expire key seconds

lisi为永久
127.0.0.1:6379[1]> ttl lisi
(integer) -1设置lisi 180秒后过期
127.0.0.1:6379[1]> expire lisi 180
(integer) 1
查看过期时间 还有67秒过期
127.0.0.1:6379[1]> ttl lisi
(integer) 67
已过期
127.0.0.1:6379[1]> ttl lisi
(integer) -2

rpm源码安装

安装epel源如果没有去官网下载

wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm

yum install -y epel-release

yum install -y redis

下载epel源
[root@localhost ~]# wget http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
\--2023-08-08 18:53:49--  http://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-14.noarch.rpm
正在解析主机 dl.fedoraproject.org (dl.fedoraproject.org)... 38.145.60.23, 38.145.60.24, 38.145.60.22
正在连接 dl.fedoraproject.org (dl.fedoraproject.org)|38.145.60.23|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:15608 (15K) [application/x-rpm]
正在保存至: “epel-release-7-14.noarch.rpm”100%[======================================>] 15,608      50.6KB/s 用时 0.3s   2023-08-08 18:53:50 (50.6 KB/s) - 已保存 “epel-release-7-14.noarch.rpm” [15608/15608])[root@localhost ~]# ls
epel-release-7-14.noarch.rpm 下载完后安装
[root@localhost ~]# yum install epel-release-7-14.noarch.rpm  -y
已加载插件:fastestmirror, langpacks
正在检查 epel-release-7-14.noarch.rpm: epel-release-7-14.noarch
epel-release-7-14.noarch.rpm 将被安装
正在解决依赖关系
--> 正在检查事务
---> 软件包 epel-release.noarch.0.7-14 将被 安装
--> 解决依赖关系完成
local                                                    | 3.6 kB     00:00     依赖关系解决================================================================================Package           架构        版本        源                              大小
================================================================================
正在安装:epel-release      noarch      7-14        /epel-release-7-14.noarch       25 k事务概要
================================================================================
安装  1 软件包总计:25 k
安装大小:25 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : epel-release-7-14.noarch                                    1/1 验证中      : epel-release-7-14.noarch                                    1/1 已安装:epel-release.noarch 0:7-14                                                    完毕!安装redis
[root@localhost ~]# yum install -y redis
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                                     | 6.1 kB     00:00     * epel: mirrors.bfsu.edu.cn
epel                                                     | 4.7 kB     00:00     
local                                                    | 3.6 kB     00:00     
(1/3): epel/x86_64/group_gz                                |  99 kB   00:00     
epel/x86_64/updateinfo         FAILED                                          
https://mirrors.tuna.tsinghua.edu.cn/epel/7/x86_64/repodata/43fd207679e4a5a870ce853bffb53fdcc2a8d73fb85ba1d9bad7db2c8a7e723b-updateinfo.xml.bz2: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像。
To address this issue please refer to the below wiki article https://wiki.centos.org/yum-errorsIf above article doesn't help to resolve this issue please use https://bugs.centos.org/.epel/x86_64/primary_db         FAILED                                          
https://mirrors.cqu.edu.cn/epel/7/x86_64/repodata/d05e409278f3f3af0c829c7f2aff0a194f152a4b4c1cd50b584005193ea1f777-primary.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像。
(2/3): epel/x86_64/updateinfo                              | 1.0 MB   00:00     
epel/x86_64/primary_db         FAILED                                          
https://ftp.riken.jp/Linux/fedora/epel/7/x86_64/repodata/d05e409278f3f3af0c829c7f2aff0a194f152a4b4c1cd50b584005193ea1f777-primary.sqlite.bz2: [Errno 14] HTTPS Error 404 - Not Found
正在尝试其它镜像。
(3/3): epel/x86_64/primary_db                              | 7.0 MB   00:00     
正在解决依赖关系
--> 正在检查事务
---> 软件包 redis.x86_64.0.3.2.12-2.el7 将被 安装
--> 正在处理依赖关系 libjemalloc.so.1()(64bit),它被软件包 redis-3.2.12-2.el7.x86_64 需要
--> 正在检查事务
---> 软件包 jemalloc.x86_64.0.3.6.0-1.el7 将被 安装
--> 解决依赖关系完成依赖关系解决================================================================================Package           架构            版本                     源             大小
================================================================================
正在安装:redis             x86_64          3.2.12-2.el7             epel          544 k
为依赖而安装:jemalloc          x86_64          3.6.0-1.el7              epel          105 k事务概要
================================================================================
安装  1 软件包 (+1 依赖软件包)总下载量:648 k
安装大小:1.7 M
Downloading packages:
警告:/var/cache/yum/x86_64/7/epel/packages/jemalloc-3.6.0-1.el7.x86_64.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID 352c64e5: NOKEY
jemalloc-3.6.0-1.el7.x86_64.rpm 的公钥尚未安装
(1/2): jemalloc-3.6.0-1.el7.x86_64.rpm                     | 105 kB   00:00     
(2/2): redis-3.2.12-2.el7.x86_64.rpm                       | 544 kB   00:00     
--------------------------------------------------------------------------------
总计                                               1.7 MB/s | 648 kB  00:00     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 检索密钥
导入 GPG key 0x352C64E5:用户ID     : "Fedora EPEL (7) <epel@fedoraproject.org>"指纹       : 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5软件包     : epel-release-7-14.noarch (@/epel-release-7-14.noarch)来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction正在安装    : jemalloc-3.6.0-1.el7.x86_64                                 1/2 正在安装    : redis-3.2.12-2.el7.x86_64                                   2/2 验证中      : redis-3.2.12-2.el7.x86_64                                   1/2 验证中      : jemalloc-3.6.0-1.el7.x86_64                                 2/2 已安装:redis.x86_64 0:3.2.12-2.el7                                                   作为依赖被安装:jemalloc.x86_64 0:3.6.0-1.el7                                                 完毕!

启动redis默认监听127.0.0.1地址

[root@localhost ~]# systemctl start redis
[root@localhost ~]# netstat -anptu | grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      64355/redis-server  
[root@localhost ~]# 

目录结构

/etc/redis.conf主配置文件bind 127.0.0.1修改监听地址
port 6379修改监听端口号
pidfile 指定通过该配置文件启动
reids进程后的PID文件名称
loglevel定义日志级别
logfile定义日志存储路径
databases指定默认数据库数量
save定义单位时间内key的改变次数
dbfilename定义存储RDB持久化数据的文件名称
dir定义RDB与AOF文件的存储目录
appendonlyAOF的启停
appendfilename定义AOF持久化文件的名称
appendfsync定义AOF数据同步间隔
requirepass 设置登录redis的密码
/var/lib/redis持久化文件存储目录
/var/log/redis日志文件存储目录
/var/run/redisPID文件存储目录

命令解析

redis-serverredis启动命令
redis-cliredis登陆命令-hredis服务器IP
-p指定访问端口号
-a指定登录密码
-n指定数据库编号
redis-check-rdb检查RDB文件
redis-check-aof检查AOF文件

redis登陆更改

问题更改完port后,systemctl启动redis异常
解决办法使用redis-server /etc/redis.conf
若要redis后台运需修改配置文件 daemonize yes

本地登陆

监听本地网卡地址

redis-cli -h ip -p 端口号


三、Redis持久化

/var/lib/redis/

RDB模式

默认持久化

dump.rdb 数据库启动时会读取

触发条件

redis进程退出(宕机、redis程序崩溃)

手动保存(触发RDB)save

AOF模式

默认关闭

appendonly.aof 默认进程启动时读取

开启 appendonly yes

可以与RDB同时使用


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

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

相关文章

Databend 开源周报第 105 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Databend 轻量级…

【Linux】TCP协议简介

TCP协议简介 TCP协议格式面向连接1.连接管理机制2.包序管理 可靠传输1.保证数据可靠到达对端2.保证数据的传输效率 面向字节流&#xff34;&#xff23;&#xff30;粘包问题 TCP协议格式 16位源端口号和16位目的端口号&#xff1a;标识数据从哪个进程来&#xff0c;到哪个进程…

RocketMQ Learning(二)

目录 一、RocketMQ 1、顺序消息 2、延时消息 3、批量消息 批量切分发送 4、消息的过滤 Tag过滤 Sql过滤 5、分布式事务消息 6、Request-Reply消息 7、死信队列 一、RocketMQ 1、顺序消息 消息有序指的是可以按照消息的发送顺序来消费(FIFO)。RocketMQ可以严格的保证…

STM32F429IGT6使用CubeMX配置外部中断按键

1、硬件电路 2、设置RCC&#xff0c;选择高速外部时钟HSE,时钟设置为180MHz 3、配置GPIO引脚 4、NVIC配置 PC13相同 5、生成工程配置 6、部分代码 中断回调函数 /* USER CODE BEGIN 0 */void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) {if(GPIO_Pin GPIO_PIN_0){HAL_GPIO…

阿里云服务器部署Drupal网站教程基于CentOS系统

阿里云百科分享如何在CentOS 7操作系统的ECS实例上搭建Drupal电子商务网站。Drupal是使用PHP语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;它由内容管理系统&#xff08;CMS&#xff09;和PHP开发框架&#xff08;Framework&#xff09;共同构成。它用于…

如何实现Excel中多级数据联动

摘要&#xff1a;本文由葡萄城技术团队于CSDN原创并首发。转载请注明出处&#xff1a;葡萄城官网&#xff0c;葡萄城为开发者提供专业的开发工具、解决方案和服务&#xff0c;赋能开发者。 前言 在类Excel表格应用中&#xff0c;常用的需求场景是根据单元格之间的数据联动&…

C++ STL list

✅<1>主页&#xff1a;我的代码爱吃辣 &#x1f4c3;<2>知识讲解&#xff1a;C之 STL list介绍和模拟实现 ☂️<3>开发环境&#xff1a;Visual Studio 2022 &#x1f4ac;<4>前言&#xff1a;上次我们详细的介绍了vector&#xff0c;今天我们继续来介绍…

VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR

文章目录 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIORABSTRACT1 INTRODUCTION2 COMPRESSION WITH VARIATIONAL MODELS3 INTRODUCTION OF A SCALE HYPERPRIOR 个人总结动机流程思路 VARIATIONAL IMAGE COMPRESSION WITH A SCALE HYPERPRIOR ABSTRACT We describe …

【BASH】回顾与知识点梳理(十七)

【BASH】回顾与知识点梳理 十七 十七. 什么是 Shell scripts17.1 干嘛学习 shell scripts自动化管理的重要依据追踪与管理系统的重要工作简单入侵检测功能连续指令单一化简易的数据处理跨平台支持与学习历程较短 17.2 第一支 script 的撰写与执行撰写第一支 script 17.3 撰写 s…

css flex 上下结构布局

display: flex; flex-flow: column; justify-content: space-between;

腾讯云服务器远程连接的方法大全

腾讯云服务器怎么连接登录&#xff1f;腾讯云服务器支持多种远程连接方法&#xff0c;可以使用腾讯云管理控制台自带的远程连接工具&#xff0c;也可以使用第三方远程连接工具&#xff0c;如如PuTTY、Xshell等&#xff0c;Linux操作系统可以SSH登录&#xff0c;Windows可以使用…

swagger 3.0 学习笔记

引入pom <dependency><groupId>io.springfox</groupId><artifactId>springfox-boot-starter</artifactId><version>3.0.0</version></dependency>配置 import io.swagger.models.auth.In; import io.swagger.v3.oas.annotati…

Linux计算机名自动变为bogon,修改计算机名

Linux计算机名自动变为bogon&#xff0c;修改计算机名 问题&#xff1a;这次机房停电&#xff0c;部分VM计算机名自动变为bogon&#xff0c;判断故障&#xff1a;因开启VM的时候&#xff0c;网卡需要获取DNS&#xff0c;但是DNS服务器还没有起来&#xff0c;故自动在resolv.con…

innodb buffer pool

buffer pool是主存中的一个区域&#xff0c;InnoDB 在访问时缓存表和索引数据。缓冲池允许直接从内存访问频繁使用的数据&#xff0c;这加快了处理速度。在专用服务器上&#xff0c;高达80% 的物理内存通常分配给缓冲池。为了提高大容量读取操作的效率&#xff0c;将缓冲池划分…

npm ERR! code ERESOLVEnpm ERR! ERESOLVE unable to resolve dependency tree

拉取项目到本地 执行 npm install 报错 遇到这个问题首先确认的就是版本是不是太高了&#xff0c;降一下版本。或者通过yarn命令替代npm install命令安装&#xff0c;同理&#xff0c;启动也可以采用yarn dev 启动代替npm run dev 下面教大家用一个NVM工具&#xff0c;这个工…

IntellIJ Idea 连接数据库-MySql

前言&#xff1a;可以用mariaDB工具&#xff0c;在本地创建服务器主机和数据库&#xff0c;而后用intellIJ Idea尝试连接 MariaDB创建数据库练习 1.IntellIJ Idea打开界面右侧Database工具&#xff0c;选择MySQL数据库。 2.填写数据库账号密码&#xff0c;地址端口号&#xff…

Kafka:springboot集成kafka收发消息

kafka环境搭建参考Kafka&#xff1a;安装和配置_moreCalm的博客-CSDN博客 1、springboot中引入kafka依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><…

无涯教程-Perl - print函数

描述 此函数将LIST中的表达式的值打印到当前的默认输出文件句柄或FILEHANDLE指定的句柄中。 如果设置,则$\变量将添加到LIST的末尾。 如果LIST为空,则打印$_中的值。 print接受一个值列表,列表中的每个元素都将被解释为一个表达式。 语法 以下是此函数的简单语法- print…

idea+gradle阅读spring5.2.9源码之源码构建报错解决方案

注意 1、先确保gradle版本和spring、jdk版本对应 本文:gradle:5.6.4/spring 5.2.9/jdk1.8&#xff08;gradle和jdk都要先安装好&#xff0c;gradle还要配置好本地资源文件路径&#xff09; 2、原来项目乱了的话&#xff0c;先重新导入下载的源码项目 3、进入源码所在根目录&…

AST入门与实战(三):if节点转switch节点(瑞数5)

原文地址:https://zhuoyue360.com/jsnx/110.html 1. 期望 这是一个瑞数5代解混淆的案例&#xff0c;我们本章节需要做的是把if节点的内容转换成switch-case内容.以此来熟悉AST对JS混淆的对抗. 原始代码: function whileState() {while (1) {aV cA[wU];if (aV < 4) {if (…