系统学习Linux-Redis基础

news2024/11/24 13:24:26

一、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-errors

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

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

相关文章

如何将视频转成gif图?视频怎么转gif高清图片?

在看电视或是短视频的时候&#xff0c;总能发现一些有趣的片段&#xff0c;当想把这些视频转gif图片发送给朋友的时候该怎么处理呢&#xff1f;其实可以试试专业的视频转gif工具&#xff0c;本文介绍一个视频在线转gif的方法&#xff0c;一起来了解一下吧。 打开首页&#xff…

Profibus DP主站转Modbus TCP网关profibus主站模拟软件

捷米JM-DPM-TCP网关。这款产品在Profibus总线侧实现了主站功能&#xff0c;在以太网侧实现了ModbusTcp服务器功能&#xff0c;为我们的工业自动化网络带来了全新的可能。 捷米JM-DPM-TCP网关是如何实现这些功能的呢&#xff1f;首先&#xff0c;让我们来看看它的Profibus总线侧…

IPC之三:使用 System V 消息队列进行进程间通信的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;本文主要介绍消息队列(Message Queues)&#xff0c;消息队列可以完成同一台计算机上的进程之间的通信&#xff0c;相比较管道&#xff0c;消息队列要复杂一些&#xff0c;但使用起来更加灵活和方便&am…

C++的auto究竟是何方神圣

C的auto究竟是何方神圣 前言&#x1f64c;auto&#xff08;C 11&#xff09; 的使用细则auto是什么&#xff1f; auto声明的变量是在什么时期被编译器推导出来呢&#xff1f;为什么使用auto进行定义变量时&#xff0c;必须进行初始化&#xff1f; auto 的使用场景auto与指针和引…

gitee分支合并

合并dev分支到master&#xff08;合并到主分支&#xff09; git checkout master git merge dev //这里的dev表示你的分支名称 git push //推送到远程仓库 效果如下图 不报错就表示推送成功了&#xff0c;希望能帮助各位小伙伴

Flamingo

基于已有的图像模型和文本模型构建多模态模型。输入是图像、视频和文本&#xff0c;输出是文本。 Vision encoder来自预训练的NormalizerFree ResNet (NFNet)&#xff0c;之后经过图文对比损失学习。图片经过图像模型的输出是2D grid&#xff0c;视频按1FPS的频率采样后经过图…

python优雅地爬虫

申明&#xff1a;仅用作学习用途&#xff0c;不提供任何的商业价值。 背景 我需要获得新闻&#xff0c;然后tts&#xff0c;在每天上班的路上可以听一下。具体的方案后期我也会做一次分享。先看我喜欢的万能的老路&#xff1a;获得html内容-> python的工具库解析&#xff0…

Running Homebrew as root is extremely dangerous and no longer supported

Running Homebrew as root is extremely dangerous and no longer supported 查看磁盘所有信息 在使用homebrew安装smartmontools&#xff0c;查看Mac磁盘信息&#xff0c;包括mac磁盘写入量、mac磁盘健康、磁盘启动次数等&#xff0c;遇到的问题及解决方案 使用brew install s…

单片机开发 esp8266

一、固件界面 二、项目介绍 固件名称&#xff1a;esp8266-universalboard v1.0 提供商&#xff1a; 半条虫(466814195) 下载&#xff1a;esp8266-universalboard.bin 源码地址&#xff1a;Gitlab

STM32 F103C8T6学习笔记1:开发环境与原理图的熟悉

作为一名大学生&#xff0c;学习单片机有一段时间了&#xff0c;也接触过嵌入式ARM的开发&#xff0c;但从未使用以及接触过STM32C8T6大开发使用&#xff0c;于是从今日开始&#xff0c;将学习使用它~ 本文介绍STM32C8T6最小系统开发环境搭建注意问题&#xff0c;STM32C8T6单片…

TCP的四次挥手与TCP状态转换

文章目录 四次挥手场景步骤TCP状态转换 四次挥手场景 TCP客户端与服务器断开连接的时候&#xff0c;在程序中使用close()函数&#xff0c;会使用TCP协议四次挥手。 客户端和服务端都可以主动发起。 因TCP连接时候是双向的&#xff0c;所以断开的时候也是双向的。 步骤 三次…

dueling network原理和实现

算法原理&#xff1a; Q ( s , a ; θ , α , β ) V ( s ; θ , β ) ( A ( s , a ; θ , α ) − max ⁡ a ′ ∈ ∣ A ∣ A ( s , a ′ ; θ , α ) ) . \begin{gathered}Q(s,a;\theta,\alpha,\beta)V(s;\theta,\beta)\left(A(s,a;\theta,\alpha)-\max_{a\in|\mathcal{A}…

网络编程(JavaEE初阶系列10)

目录 前言&#xff1a; 1.网络编程的基础 1.1为什么需要网络编程 1.2什么是网络编程 1.3网络编程中的基本概念 1.3.1发送端和接收端 1.3.2请求和响应 1.3.3客户端和服务端 2.Socket套接字 2.1概念 2.2分类 3.UDP数据报套接字编程 3.1DataGramSocket API 3.2Datagr…

【刷题笔记8.8】LeetCode题目:两数之和

LeetCode&#xff08;Hot100&#xff09;&#xff1a;两个数之和 题目描述及示例&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会…

《合成孔径雷达成像算法与实现》Figure3.3

代码复现如下&#xff1a; clc clear all close all%参数设置 TBP [25,50,100,200,400]; %时间带宽积 T 1e-6; %脉冲持续时间H figure; for i 1:5% 参数计算B TBP(i)/T; % 信号带宽K B/T; % 线性调频频率alp…

分布式协议与算法——Paxos算法

目录 Paxos算法Basic Paxos算法三种角色如何达成共识&#xff08;协商过程&#xff09;小结&#xff1a; Multi-Paxos算法关于 Multi-Paxos 的思考领导者优化Basic PaxosChubby 的 Multi-Paxos 实现小结 参考 Paxos算法 Paxos论文 Paxos Made Simple 、author&#xff1a;Lesli…

中电金信发布源启·数字构建平台 全面跃升应用研发全生命周期数字生产力

6月28日&#xff0c;中电金信发布源启数字构建平台。源启数字构建平台是企业级研发全生命周期支持管理平台、工程平台、工具链平台。 面向金融等重点行业超大规模、超复杂度的数字化应用&#xff0c;源启数字构建平台通过灵活、强大的平台赋能&#xff0c;端到端支持应用研发全…

[Vulnhub] matrix-breakout-2-morpheus

目录 <1> 信息收集 <2> getshell <3> Privilege Escalation&#xff08;提权&#xff09; <1> 信息收集 nmap -sP 192.168.236.0/24 扫描一下靶机ip 靶机ip: 192.168.236.154 nmap -A -p 1-65535 192.168.236.154 扫描一下靶机开放哪些服务 开放…

SpringMVC与三层架构

目录 一、SpringMVC1.1 概述1.2 SpringMVC核心组件1.3 SpringMVC工作原理1.4 统一异常处理 二、三层架构三、MVC与三层架构3.1 三层架构与MVC的关系3.2 SSM与三层架构的对应关系 一、SpringMVC 1.1 概述 MVC 是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c…

单元测试用例分组 demo

文章目录 目标1、使用 Category 进行用例分组&#xff08;1&#xff09;设置用例组&#xff08;2&#xff09;编写测试类&#xff0c;case设置对应的用例组&#xff08;3&#xff09;编写执行类&#xff08;4&#xff09;查看运行结果&#xff08;5&#xff09;联系项目 2、参数…