redis安装使用教程

官网下载地址

https://redis.io/download/

https://download.redis.io/releases/

下载安装启动

安装依赖包

#redis-5.0.3这个版本的依赖包验证通过
[root@localhost ~]# yum -y install gcc-c++ glibc-headers tcl

下载安装包

wget http://download.redis.io/releases/redis-6.2.5.tar.gz
wget http://download.redis.io/releases/redis-5.0.3.tar.gz
wget https://repo.huaweicloud.com/redis/redis-5.0.3.tar.gz

解压

[root@localhost ~]# tar -zxvf redis-5.0.3.tar.gz

编译

#在编译Redis时指定使用标准libc库中的内存管理函数来进行内存分配。
#这样做可能是为了解决编译问题,或者是为了满足特定的性能和兼容性需求。
#在选择内存分配器时,应考虑实际应用的特点,并进行相应的性能测试,以确保选择最适合当前需求的分配器
[root@localhost redis-5.0.3]# cd redis-5.0.3
[root@localhost redis-5.0.3]# make MALLOC=libc

安装

[root@localhost redis-5.0.3]# cd src/
[root@localhost src]# make install PREFIX=/opt/redis/

拷贝conf文件到安装后的路径下

[root@localhost redis-5.0.3]# cp /root/redis-5.0.3/redis.conf /opt/redis/bin/

启动redis

#方式1:直接启动,无后台,启动时直接显示实时日志
[root@localhost redis-5.0.3]# /opt/redis/bin/redis-server /opt/redis/bin/redis.conf
-----------------------------------------------------
#方式2:手动添加后台启动(推荐此方式)
[root@localhost redis-5.0.3]# nohup /opt/redis/bin/redis-server /opt/redis/bin/redis.conf > redis.log 2>&1 &
------------------------------------------------------
#方式3:修改配置文件,在redis.conf中找到下面的值,把no改为yes(不推荐此方式,找不到日志在哪里)
# Note that Redis will write a pid file in /var/run/redis.pid when daemonized.
#daemonize no
daemonize yes
#再次之前直接启动的方式
[root@localhost bin]# /opt/redis/bin/redis-server /opt/redis/bin/redis.conf
2301:C 14 Jun 2024 22:41:49.271 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2301:C 14 Jun 2024 22:41:49.271 # Redis version=5.0.3, bits=64, commit=00000000, modified=0, pid=2301, just started
2301:C 14 Jun 2024 22:41:49.271 # Configuration loaded

登录redis

标准登录方式

[root@localhost bin]# /opt/redis/bin/redis-cli -h host -p port -a password

使用的是默认端口 也没有设置密码

[root@localhost ~]# ps -ef|grep redis
root       2225   1277  0 22:33 pts/0    00:00:00 /opt/redis/bin/redis-server 127.0.0.1:6379

[root@localhost bin]# /opt/redis/bin/redis-cli 

127.0.0.1:6379> set name wangjian   #设置key value
OK
127.0.0.1:6379> get name     #通过key获取到value
"wangjian"
127.0.0.1:6379> keys *        #获取所有的key
1) "name"

有密码且端口也不一样的登录方式

[root@localhost bin]# /opt/redis/bin/redis-cli -p 16379   #指定端口
127.0.0.1:16379> auth wangjian   #输入密码wangjian
OK
127.0.0.1:16379> keys *
(empty list or set)
127.0.0.1:16379> set name wang
OK
127.0.0.1:16379> get name
"wang"
127.0.0.1:16379> keys *
1) "name"
127.0.0.1:16379>

修改redis端口

在redis.conf中修改
# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 16379

修改redis密码

在redis.conf中修改
# Warning: since Redis is pretty fast an outside user can try up to
# 150k passwords per second against a good box. This means that you should
# use a very strong password otherwise it will be very easy to break.
#
requirepass wangjian

开启远程访问

步骤1:

#把redis.conf配置文件中的127.0.0.1注释掉就可以开启远程访问了
# IF YOU ARE SURE YOU WANT YOUR INSTANCE TO LISTEN TO ALL THE INTERFACES
# JUST COMMENT THE FOLLOWING LINE.
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#bind 127.0.0.1

步骤2:

把redis.conf配置文件中的protected-mode 设置成no
默认是设置成yes的, 防止了远程访问,在redis3.2.3版本后
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode no

设置开机自启

编辑启动服务文件

vim /etc/systemd/system/redis.service
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
User=root
Group=root
ExecStart=/opt/redis/bin/redis-server /opt/redis/bin/redis.conf --logfile /root/redis.log
ExecStop=/usr/bin/redis-cli shutdown
Restart=always

[Install]
WantedBy=multi-user.target

重新加载系统服务

systemctl daemon-reload

设置开机启动

systemctl daemon-reload
#禁止开机自启
systemctl disable redis

服务启停

[root@localhost ~]# systemctl status redis
[root@localhost ~]# systemctl stop redis
[root@localhost ~]# systemctl start redis

持久化数据设置

Redis 的持久化有两种主要方式:RDB(Redis Database Backup)和 AOF(Append Only File)。这两种方式各有优缺点,选择哪一种取决于你的具体需求,比如数据安全性、性能要求和恢复速度等。

RDB 持久化

RDB 是 Redis 默认的持久化方式,它会在特定的时间点创建数据集的快照,并将其保存到硬盘上。当 Redis 重启时,它会从最近的 RDB 文件恢复数据。

配置 RDB 持久化
打开 Redis 的配置文件,通常是 /etc/redis/redis.conf。

查找 save 行,这一行定义了在何种情况下 Redis 会执行一次快照保存。默认配置可能如下:

save 900 1
save 300 10
save 60 10000

#解释说明:
如果在 900 秒内至少有一个 key 被更改,就会触发保存;
如果在 300 秒内至少有 10 个 key 被更改,就会触发保存;
如果在 60 秒内至少有 10000 个 key 被更改,就会触发保存。

如果你不想使用默认的策略,可以自定义 save 参数,或者完全禁用 RDB 持久化,通过注释掉 save 行。

配置 RDB 文件的名称和保存位置:

dbfilename dump.rdb
dir /var/lib/redis

这将告诉 Redis 将 RDB 文件保存在 /var/lib/redis/dump.rdb

dbfilename dump.rdb
dir ./

也有可能是这样显示,数据保存的位置取决你在哪个目录进行启动,我在/root/在执行的启动脚本,所以数据文件就会在/root/下。但是在配置文件中就会显示在./下。

AOF 持久化

AOF 方法会记录所有写入操作的命令,并追加到文件中。这种方式可以提供更高的数据安全性,因为即使在断电的情况下,也只会丢失最后一条命令。

  • 配置 AOF 持久化,在配置文件中启用 AOF 持久化:
appendonly yes
  • 配置 AOF 文件的重写策略,避免 AOF 文件无限增长:
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb

这里都是默认的设置,appendfsync everysec 表示每秒钟将 AOF 文件写入磁盘一次,这提供了一个较好的数据安全性和性能平衡,实际的大小,可以根据情况做调整。

  • 指定 AOF 文件的保存位置:
dir /var/lib/redis
aof-file /var/lib/redis/appendonly.aof

注意,aof-file 不是标准的 Redis 配置选项,你应该使用 appendfilename

appendfilename "appendonly.aof"

完整配置信息如下:

# Please check http://redis.io/topics/persistence for more information.

appendonly yes

# The name of the append only file (default: "appendonly.aof")

appendfilename "appendonly.aof"

  • 重启 Redis

设置键的过期时间

#设置name的值 10秒过期
127.0.0.1:6379> setex name 10 wang
OK
127.0.0.1:6379> get name
"wang"
127.0.0.1:6379> get name #10秒后再查询
(nil)

增删改查

查询

#查询所有的key
127.0.0.1:6379> keys *
1) "xingbie"
2) "name"
127.0.0.1:6379>

查询key的值

#查询一个key的值
127.0.0.1:6379> get a
"xiaoming"
#查询多个key值
127.0.0.1:6379> mget a b c
1) "xiaoming"
2) "xiaohong"
3) "zhangsan"
#获取所有value的值

新增

新增一个字符串使用set进行设置

[root@localhost bin]# pwd
/opt/redis/bin
[root@localhost bin]# ./redis-cli 
127.0.0.1:6379> set name wj
OK
127.0.0.1:6379> get name
"wj"
127.0.0.1:6379
#使用set,有一个特性,就是值容易覆盖,比如下面
[root@localhost bin]# ./redis-cli 
127.0.0.1:6379> set name wj
OK
127.0.0.1:6379> get name
"wj"
127.0.0.1:6379> set name haha
OK
127.0.0.1:6379> get name
"haha"
127.0.0.1:6379> 
#使用setnx进行设置,就不会覆盖
127.0.0.1:6379> setnx xingbie nan
(integer) 1 #表示设置成功
127.0.0.1:6379> get xingbie
"nan"
127.0.0.1:6379> setnx xingbie nv
(integer) 0  #表示设置错误
127.0.0.1:6379> get xingbie
"nan"
127.0.0.1:6379>

追加值

#使用append
127.0.0.1:6379> set a wang
OK
127.0.0.1:6379> get a
"wang"
127.0.0.1:6379> append a jian  #追加值
(integer) 8
127.0.0.1:6379> get a
"wangjian"
127.0.0.1:6379>

127.0.0.1:6379> set a wang
OK
127.0.0.1:6379> append a " jian" #带空格的加法
(integer) 9
127.0.0.1:6379> get a
"wang jian"
127.0.0.1:6379> 

新增多值

#使用mset新增多值
127.0.0.1:6379> mset a xiaoming b xiaohong c zhangsan
OK
127.0.0.1:6379> keys *
1) "b"
2) "c"
3) "xingbie"
4) "a"
127.0.0.1:6379>

删除

删除一个key

127.0.0.1:6379> keys *
1) "xingbie"
2) "name"
127.0.0.1:6379> del name
(integer) 1
127.0.0.1:6379> keys *
1) "xingbie"
127.0.0.1:6379> 

集群设置

Redis提供了三种集群模式,主从复制模式、哨兵模式和集群模式。这些模式各具特点,适用于不同的场景和需求。具体介绍如下:

主从复制模式

定义与工作原理:主从复制模式是最基本的Redis集群形式,其中包含一个主节点(Master)和一个或多个从节点(Slave)。主节点处理所有写操作并将数据同步给从节点,而从节点则主要用于读操作,实现读写分离。这种模式通过从节点复制主节点的数据来备份数据,并提高读取性能。
配置和使用:配置主从模式相对简单,只需在从节点的配置文件中指定主节点的信息,然后启动从节点即可开始数据同步过程。此模式不需要额外的配置或管理,便于快速部署和运行。
优点和局限性:主从复制模式的优点在于其简洁性和高效性,能够有效地进行读写分离,提高系统的读取性能。然而,这种模式的主要局限在于无法自动故障转移;如果主节点发生故障,系统需要人工介入以恢复服务。

哨兵模式

定义与工作原理:哨兵模式是在主从复制的基础上,增加了哨兵节点(Sentinel),用于监控主节点和从节点的状态,并在主节点故障时自动进行故障转移,提升系统的可用性。哨兵节点不仅负责监控Redis服务器的运行状态,还提供通知、自动故障迁移等重要功能。
配置和使用:配置哨兵模式涉及设置哨兵节点监控的主节点信息及故障转移策略。启动后,哨兵节点会自动执行监控和故障转移操作,简化了系统的维护工作。
优点和局限性:哨兵模式的主要优势在于能自动进行故障检测和恢复,极大提高了系统的可靠性。然而,它也引入了额外的复杂性和需要更多资源来维护哨兵节点的问题。

集群模式

定义与工作原理:集群模式是一种更为复杂的分布式解决方案,支持数据分片和多主多从结构。在这种模式下,整个数据集被分为多个部分(哈希槽),每个节点负责存储一部分数据。这允许系统在多个节点间共享数据存储和读取负载,优化性能和存储能力。
配置和使用:配置集群模式较为复杂,需要在每个节点上配置集群模式并定义其他节点信息。一旦配置完成,集群可以自动管理数据分布和节点间的通信,有效处理高并发请求。
优点和局限性:集群模式的主要优点是支持大规模的数据操作和高并发访问,同时提供高可用性和良好的水平扩展性。然而,这也使得它的配置和维护比主从和哨兵模式更为复杂,可能需要更多的资源和管理投入。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享