Redis的安装方法与基本操作

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
日志服务 SLS,月写入数据量 50GB 1个月
简介: Redis是一个开源的内存数据结构存储系统,也可以用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

前言

Redis是一个开源的内存数据结构存储系统,也可以用作数据库、缓存和消息中间件。它支持多种数据结构,包括字符串(strings)、哈希(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)等。

Redis的特点包括:


高性能:Redis将数据存储在内存中,因此具有非常快速的读写速度。

持久化:Redis支持两种持久化方式,即RDB(Redis Database)和AOF(Append-Only File)。


RDB是将数据以快照的形式保存到磁盘上,通常用于备份和恢复数据。

AOF是将每个写操作追加到文件中,以日志的形式记录,通过重新执行这些写操作可以恢复数据。



多种数据结构:Redis支持多种数据结构,使得它可以灵活地应用于不同的场景。

发布/订阅模式:Redis支持发布/订阅模式,可以将消息发布到多个订阅者。

高可用性:Redis支持主从复制和哨兵机制,可以实现高可用性和故障转移。

支持事务:Redis可以通过MULTI、EXEC、WATCH等命令实现事务的功能,保证多个命令的原子性。

分布式:Redis Cluster可以将数据分布在多个节点上,提高系统的可扩展性和容错性。


Redis广泛应用于缓存、计数器、队列、排行榜等场景,具有高性能、高可用性和灵活性的特点,成为了很多互联网公司的首选技术之一。


一、REDIS概述


REDIS属于非关系型数据库,采用内存存储的方式(速度快,但不 能长久保存)


Redis全称Remote Dictionary Server 远程字典服务

官网:https://www.redis.net.cn/


1.内存存储、持久化、   键值对存储、监听端口号:6379

数据类型:

       字符串(string)

       哈希值(hash)

       列表(list)

       集合(set)

       位图(bitmap)


2.类型:

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

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

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

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

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


3.应用场景:

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

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

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

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

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


二、REDIS安装


1、编译安装

配置环境:设置防火墙、selinux、图形化、配置IP确保联网

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
setenforce: SELinux is disabled
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=1 ttl=128 time=51.6 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=2 ttl=128 time=32.7 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=3 ttl=128 time=111 ms
64 bytes from 220.181.38.150 (220.181.38.150): icmp_seq=4 ttl=128 time=114 ms
^C
--- www.a.shifen.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 32.740/77.544/114.197/36.007 ms
[root@localhost ~]# 

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

[root@localhost ~]# wget http://download.redis.io/releases/redis-5.0.8.tar.gz
--2023-08-08 23:05:12--  http://download.redis.io/releases/redis-5.0.8.tar.gz
正在解析主机 download.redis.io (download.redis.io)... 45.60.125.1
正在连接 download.redis.io (download.redis.io)|45.60.125.1|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:1985757 (1.9M) [application/octet-stream]
正在保存至: “redis-5.0.8.tar.gz”
100%[==============================================================================>] 1,985,757   46.3KB/s 用时 59s    
2023-08-08 23:06:11 (32.7 KB/s) - 已保存 “redis-5.0.8.tar.gz” [1985757/1985757])
[root@localhost ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  redis-5.0.8.tar.gz  公共  模板  视频  图片  文档  下载  音乐  桌面
[root@localhost ~]# 

解压此处大家可自行选择路径,编译安装

[root@localhost ~]# mkdir redis
[root@localhost ~]# tar -xf redis-5.0.8.tar.gz -C redis
[root@localhost ~]# cd redis/
[root@localhost redis]# ls
redis-5.0.8
[root@localhost redis]# cd redis-5.0.8/
[root@localhost redis-5.0.8]# make && make install

编译安装结束后我们进入配置文件redis.conf修改daemonize yes改为后台启动

在我们的redis-5.0.8目录启动REDIS命令:登录redis-cli

redis-server redis.conf
[root@localhost redis-5.0.8]# vim redis.conf
[root@localhost redis-5.0.8]# redis-server redis.conf 
8921:C 08 Aug 2023 16:34:33.301 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
8921:C 08 Aug 2023 16:34:33.301 # Redis version=5.0.8, bits=64, commit=00000000, modified=0, pid=8921, just started
8921:C 08 Aug 2023 16:34:33.301 # Configuration loaded
[root@localhost redis-5.0.8]# netstat -anput |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      8922/redis-server 1 


2.yum安装

1.和编译安装一样配置环境

2.安装epel源前需要去看看我们的yum如下图所示

1.[root@localhost yum.repos.d]# ls
back                   CentOS-Media.repo
CentOS-Base.repo       CentOS-Sources.repo
CentOS-CR.repo         CentOS-Vault.repo
CentOS-Debuginfo.repo  CentOS-x86_64-kernel.repo
CentOS-fasttrack.repo
[root@localhost yum.repos.d]# yum -y install epel-release
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.bfsu.edu.cn
 * extras: mirrors.ustc.edu.cn
 * updates: mirrors.bfsu.edu.cn
base                                   | 3.6 kB     00:00     
extras                                 | 2.9 kB     00:00     
updates                                | 2.9 kB     00:00     
(1/4): base/7/x86_64/group_gz            | 153 kB   00:00     
(2/4): extras/7/x86_64/primary_db        | 250 kB   00:00     
(3/4): base/7/x86_64/primary_db          | 6.1 MB   00:05     
(4/4): updates/7/x86_64/primary_db       |  22 MB   00:10     
正在解决依赖关系
--> 正在检查事务
---> 软件包 epel-release.noarch.0.7-11 将被 安装
--> 解决依赖关系完成
依赖关系解决
==============================================================
 Package           架构        版本         源           大小
==============================================================
正在安装:
 epel-release      noarch      7-11         extras       15 k
事务概要
==============================================================
安装  1 软件包
总下载量:15 k
安装大小:24 k
Downloading packages:
警告:/var/cache/yum/x86_64/7/extras/packages/epel-release-7-11.noarch.rpm: 头V3 RSA/SHA256 Signature, 密钥 ID f4a80eb5: NOKEY
epel-release-7-11.noarch.rpm 的公钥尚未安装
epel-release-7-11.noarch.rpm             |  15 kB   00:00     
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 检索密钥
导入 GPG key 0xF4A80EB5:
 用户ID     : "CentOS-7 Key (CentOS 7 Official Signing Key) <security@centos.org>"
 指纹       : 6341 ab27 53d7 8a78 a7c2 7bb1 24c6 a8a7 f4a8 0eb5
 软件包     : centos-release-7-9.2009.0.el7.centos.x86_64 (@anaconda)
 来自       : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  正在安装    : epel-release-7-11.noarch                  1/1 
  验证中      : epel-release-7-11.noarch                  1/1 
已安装:
  epel-release.noarch 0:7-11                                  
完毕!
[root@localhost yum.repos.d]# 

安装

yum -y install redis
1.[root@localhost yum.repos.d]# yum -y install redis
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel/x86_64/metalink                   | 5.9 kB     00:00     
 * base: mirrors.bfsu.edu.cn
 * epel: mirrors.bfsu.edu.cn
 * extras: mirrors.huaweicloud.com
 * updates: mirrors.bfsu.edu.cn
epel                                   | 4.7 kB     00:00     
(1/3): epel/x86_64/group_gz              |  99 kB   00:00     
(2/3): epel/x86_64/updateinfo            | 1.0 MB   00:00     
(3/3): epel/x86_64/primary_db            | 7.0 MB   00:03     
正在解决依赖关系
--> 正在检查事务
---> 软件包 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     
--------------------------------------------------------------
总计                             686 kB/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-11.noarch (@extras)
 来自       : /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                               
完毕!

3.启动

systemctl start redis
[root@localhost yum.repos.d]# systemctl start redis
[root@localhost yum.repos.d]# netstat -anput |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      9483/redis-server 1 
[root@localhost yum.repos.d]# 

三、Redis的目录结构


/var/lib/redis  持久化文件存储目录

/var/log/redis

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

appendfilename

定义AOF持久化文件的名称
 appendfsync 定义AOF数据同步间隔
 requirepass 设置登录redis的密码

四、基础命令解析


redis-server  redis启动命令
redis-cli

redis登录命令

-h:    redis服务器IP

-p:    指定访问端口号

-a:    指定登录密码

-n:    指定数据库编号

redis-check-rdb  检查RDB文件
redis-check-aof  检查AOF文件

五、在一台服务器上启动多个redis


1.列如我是采用yum的方式安装的redis,直接使用systectl start redis启动

[root@localhost yum.repos.d]# systemctl start redis
[root@localhost yum.repos.d]# 
[root@localhost yum.repos.d]# netstat -anput |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      10942/redis-server  
[root@localhost yum.repos.d]# 

2.接下来将redis的主配置文件复制到/opt目录下(可以以端口号命名,方便操作)

[root@localhost redis-5.0.8]# ls
00-RELEASENOTES  dump.rdb   redis.conf         sentinel.conf
BUGS             INSTALL    runtest            src
CONTRIBUTING     Makefile   runtest-cluster    tests
COPYING          MANIFESTO  runtest-moduleapi  utils
deps             README.md  runtest-sentinel
[root@localhost redis-5.0.8]# cp redis.conf /opt/redis_6380.conf
[root@localhost redis-5.0.8]# cd /opt/
[root@localhost opt]# ls
redis_6380.conf  rh

3.来到/opt目录在redis的配置文件中修改redis的端口

4.启动端口号为6380的redis并且验证服务是否启动

[root@localhost opt]# redis-server /opt/redis_6380.conf 
11126:C 08 Aug 2023 18:25:18.898 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
11126:C 08 Aug 2023 18:25:18.898 # Redis version=5.0.8, bits=64, commit=00000000, modified=0, pid=11126, just started
11126:C 08 Aug 2023 18:25:18.898 # Configuration loaded
[root@localhost opt]# netstat -anput |grep redis
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      10942/redis-server  
tcp        0      0 127.0.0.1:6380          0.0.0.0:*               LISTEN      11127/redis-server  
[root@localhost opt]# 

5.按照此方法可以启动多个redis

六、数据库的基本操作


(一)登录数据库
本地登录

监听回环地址           redis-cli

监听本地网卡地址    redis-cli -h IP - 端口号

远程登录 redis-cli -h IP -p 端口号


1、本地登录  redis-cli


2、远程登录 (这里我们需要2台主机并且都安装redis),我想用主机2登录主机1

在主机1的配置文件中修改bind监听地址为主机1的IP,并且设置一个密码,重启服务



在主机2上远程登录1命令


redis-cli -h 192.168.73.10 -p 6379

之后输入我们在主机1上设置的密码

[root@localhost redis-5.0.8]# redis-cli -h 192.168.73.10 -p 6379
192.168.73.10:6379> set k1 v1
(error) NOAUTH Authentication required.
192.168.73.10:6379> auth 123.com
OK
(二)基础命令

在redis中我们可以使用帮助信息 help 命令字  、tab补齐

库操作: 切换  select 数据库编号


set 设置键值对 set key value



keys * 查看所有键的名称


keys 键名称   查看一个键是否存在



get 取出键值对


get 键       键不存在则返回空



del 删除键值对




flushall  清空所有数据库中的数据(慎用)


rename 重命名键名称


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

rename oldkey newkey


renamenx  重命名键名称

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

renamenx oldkey newkey


move

   移动键值对到指定数据库

 

move key dbnumber

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


ttl查看键值对的生命周期

ttl key   (-1 永久-2已过期)


expire

   设置键值对的存储周期

 

expire key seconds

七、Redis持久化


Redis的持久化原理主要包括两种方式:RDB持久化和AOF持久化。

(一)RDB持久化

RDB持久化:RDB持久化是通过将Redis的数据集快照保存到硬盘上的一个二进制文件中实现的。当执行RDB持久化时,Redis会fork一个子进程来处理久化工作,该子进程会将当前数据集的副本保存到一个临时文件中,待保存完成后,再替换原来的RDB文件。RDB持久化的优点是可以生成一个紧凑的二进制文件,适合用于备份和恢复数据。缺点是在发生故障时,可能会丢失最后一次持久化后的数据。

RDB模式   默认持久化
dump.rdb 数据库启动时会读取
触发条件: redis进程退出、宕机、redis程序崩溃
手动保存(触发RDB)     save


在配置文件中我们可以看到dump.rdp

[root@localhost redis-5.0.8]# ls
00-RELEASENOTES  dump.rdb   redis.conf         sentinel.conf
BUGS             INSTALL    runtest            src
CONTRIBUTING     Makefile   runtest-cluster    tests
COPYING          MANIFESTO  runtest-moduleapi  utils
deps             README.md  runtest-sentinel

dump.rdp中存储着我们库里的数据,会自动记录,也可以通过save命令手动触发。

(二)AOF持久化

AOF持久化:AOF持久化是通过将Redis的操作日志追加到一个文件中实现的。当执行AOF持久化时,Redis会将每个写操作(包括读操作)以类似于写日志的方式追加到AOF文件的末尾。当Redis重启时,会重新执行AOF文件中的操作日志来恢复数据集的状态。AOF持久化的优点是可以提供更好的数据安全性,因为操作日志可以追加到文件中,避免数据丢失。缺点是AOF文件通常比RDB文件大,并且恢复数据集的速度比RDB持久化慢。

 AOF模式 AOF模式
appendonly.aof 默认进程启动时读取
开启 appendonly  yes   可以与RDB同时使用


在配置文件redis.conf中手动开启此功能,保存退出,重启服务

 
此时查看配置文件就会出现新生成的文件,里面会记录我们在数据库的操作与MySQL的二进制文件有些类似


我们查一下里面的内容

 

我们去数据库进行一些操作后再来看此文件



在Redis的配置文件中,可以通过设置"save"选项来控制RDB持久化的频率,通过设置"appendonly"选项来启用AOF持久化。此外,Redis还支持将RDB持久化和AOF持久化结合使用,以提供更好的数据安全性和恢复速度。


总结

今天很高兴和大家分享这些内容,今天主要是要对我们redis的安装进行一个操作,对于主配置文件来说是要记忆的,很多功能需要从中开启,最后要了解持久化的原理。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
10天前
|
NoSQL Java Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
软件开发常见流程之宝塔初始化安装环境配置,Lam前面不选,直接跳商城,在宝塔内点击软件商城,安Mysql5.7,安java项目管理器,安Ngnix最新版,安Redis
|
12天前
|
存储 消息中间件 缓存
apt安装Redis 7
【7月更文挑战第2天】
|
17天前
|
存储 NoSQL 关系型数据库
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
Redis系列学习文章分享---第一篇(Redis快速入门之初始Redis--NoSql+安装redis+客户端+常用命令)
42 1
|
25天前
|
NoSQL Java Redis
如何在 Java 中操作这些 Redis 数据结构的基本方法
如何在 Java 中操作这些 Redis 数据结构的基本方法
20 2
|
25天前
|
NoSQL Go Redis
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
如何使用 Go 和 `go-redis/redis` 库连接到 Redis 并执行一些基本操作
16 1
|
27天前
|
NoSQL Redis Windows
win10下Redis安装、启动教程
win10下Redis安装、启动教程
22 2
|
29天前
|
消息中间件 缓存 NoSQL
Redis单实例安装
Redis单实例安装
28 1
|
1月前
|
NoSQL Linux 网络安全
基于 centOS7 的 redis 安装
基于 centOS7 的 redis 安装
67 1
|
10天前
|
NoSQL Linux Redis
redis的安装和配置
redis的安装和配置
34 0
|
10天前
|
NoSQL Redis Windows
redis双击闪退解决方法,windows版的redis资源,redis安装,win资源可下
redis双击闪退解决方法,windows版的redis资源,redis安装,win资源可下