安装redis、配置redis
目录
一、 概述
(一)NoSQL
1、类型
2、应用场景
(二)Redis
二、安装
(一)编译安装
(二)RPM安装
三、目录结构
四、命令解析
五、redis登录更改
1、发现问题
2、解决办法
六、数据库操作
(一)登录数据库
(二)帮助信息
1、help 命令字
2、tab补齐
(三)库操作
1、切换
(四)数据操作
七、redis持久化
(一)RDB模式
(二)AOF模式
一、 概述
(一)NoSQL
NoSQL(Not Only SQL)是一种非关系型数据库(Non-Relational Database),与传统的关系型数据库(SQL)相对应。NoSQL数据库以灵活的模式和可伸缩性为特点,适用于大规模数据的存储和处理。
与关系型数据库不同,NoSQL数据库不使用固定的表格和预定义的模式,而是使用动态的模式和灵活的数据模型。这意味着在NoSQL数据库中,可以存储不同结构和类型的数据,并且可以根据需求随时更改模式,而不需要进行预定义的表定义和模式修改。
NoSQL数据库的设计目标是提供高性能、高可用性和可伸缩性。它们通常采用分布式架构,可以在多个服务器上分布数据,并以水平扩展的方式处理大量的读写操作。
NoSQL数据库被广泛应用于互联网和大数据领域,适用于需要处理海量数据和实时数据的场景,例如社交媒体、物联网、日志分析等。常见的NoSQL数据库包括MongoDB、Cassandra、Redis、Couchbase等。
1、类型
文档型数据库(Document-oriented database) | MongoDB |
Couchbase | |
Apache CouchDB | |
RethinkDB | |
列族数据库(Column-family database) | Apache Cassandra |
Apache HBase | |
ScyllaDB | |
图形数据库(Graph database) | Neo4j |
Amazon Neptune | |
Microsoft Azure Cosmos DB (Graph API) | |
键值对数据库(Key-value database) | Redis |
Riak | |
CouchDB | |
对象数据库(Object-oriented database) | ObjectDB |
db4o | |
Versant Object Database |
2、应用场景
缓存:Redis最常用的应用场景就是缓存,它可以缓存各种类型的数据,如数据库查询结果、API返回结果等,以提高应用程序的响应速度和并发性能。
分布式锁:Redis的分布式锁可以确保在分布式系统中对某个资源的互斥访问,避免多个节点出现并发操作的问题。
计数器:Redis支持对计数器的操作,能够方便地实现各种计数器的功能,如网站访问次数计数、订单数量计数等。
会话管理:Redis可以用来管理会话信息,实现会话的状态存储和共享,避免了单点故障的问题。
消息队列:Redis支持发布订阅模式,可以作为一个轻量级的消息队列使用,实现异步消息处理和任务派发等功能。
(二)Redis
Redis [Remote Dictionary Server] 是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型。内置复制、Lua脚本、LRU收回、事务以及不同级别磁盘持久化功能,同时通过Redis Sentinel提供高可用,通过Redis Cluster提供自动分区。
基本的键值对操作,Redis还支持丰富的功能,如发布/订阅(pub/sub)模式、事务、Lua脚本、分布式锁等。它还可以作为缓存层,提供高速缓存以加快应用程序的性能。
Redis被广泛应用于互联网领域,用于缓存、会话存储、消息队列、实时分析、计数器等场景。它的简单性和高性能使得它成为许多应用程序的首选数据存储解决方案。
英文官网(官方高版本)
https://redis.io/
中文官网(版本相对较低)
https://www.redis.net.cn/
监听端口号 6379
软件包 redis
数据类型
字符串(string)
哈希值(hash)
列表(list)
集合(set)
有序集合(sorted set)
位图(bitmap)
hyperloglogs
二、安装
(一)编译安装
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
make && make install
(二)RPM安装
安装repl源
yum install -y epel-release
此命令数输入两次为升级repl源
yum install -y redis
启动redis(任选其一即可)
systemctl start redis
redis-server /etc/redis.conf
默认监听127.0.0.1地址
三、目录结构
查看已安装软件包的安装路径及生成的文件
rpm -ql redis
主配置文件
vim /etc/redis.conf
常用主配置文件解析
bind 127.0.0.1 | 监听地址 |
port 6379 | 监听端口号 |
daemonize | 是否将程序或进程转变为守护进程,在后台运行 |
pidfile | 指定通过该配置文件启动 reids进程后的PID文件名称 |
loglevel | 定义日志级别 |
logfile | 定义日志存储路径 |
databases | 指定默认数据库数量 |
save | 定义单位时间内key的改变次数 |
dbfilename | 定义存储RDB持久化数据的文件名称 |
dir | 定义RDB与AOF文件的存储目录 |
appendonly | AOF的启停 |
appendfilename | 定义AOF持久化文件的名称 |
appendfsync | 定义AOF数据同步间隔 |
requirepass | 设置登录redis的密码 |
哨兵模式配置文件
vim /etc/redis-sentinel.conf
持久化文件存储目录
cd /var/lib/redis
日志文件存储目录
cd /var/log/redis
PID文件存储目录
cd /var/run/redis
四、命令解析
redis启动命令
redis-server 配置文件目录
redis登录命令
redis-cli
命令选项 | |
---|---|
-h | redis服务器IP |
-p | 指定访问端口号 |
-a | 指定登录密码 |
-n | 指定数据库编号 |
-a 指定登录密码的配置文件设置在/etc/redis.conf
命令使用方式
redis-cli -h 192.168.41.130 -p 6379 -a 123123 -n 1
注:如果端口号为默认端口,可以不进行指定;密码可-a输入,也可进入后auth 123123 输入密码;-n端口为0~16 ,共17个数据库。
检查RDB文件
redis-check-rdb
redis-check-rdb /var/lib/redis/dump.rdb
内容解析:
[offset 0] Checking RDB file /var/lib/redis/dump.rdb
:开始检查RDB文件/var/lib/redis/dump.rdb
。
[offset 27] AUX FIELD redis-ver = '3.2.12'
:redis-ver
是RDB文件中的一个辅助字段,指示Redis的版本号为3.2.12。
[offset 41] AUX FIELD redis-bits = '64'
:redis-bits
是RDB文件中的一个辅助字段,指示Redis的位数为64位。
[offset 53] AUX FIELD ctime = '1691495331'
:ctime
是RDB文件中的一个辅助字段,指示创建RDB文件的时间(Unix时间戳)。
[offset 68] AUX FIELD used-mem = '754984'
:used-mem
是RDB文件中的一个辅助字段,指示在创建RDB文件时Redis使用的内存量。
[offset 70] Selecting DB ID 0
:选择了数据库ID为0的数据库。
[offset 98] Checksum OK
:RDB文件的校验和是正确的,没有发现数据损坏。
[offset 98] \o/ RDB looks OK! \o/
:整个RDB文件的检查没有发现错误,RDB文件看起来是完好的。
[info] 2 keys read
:读取了2个键值对。
[info] 0 expires
:没有过期的键值对。
[info] 0 already expired
:没有已经过期的键值对。
检查AOF文件
redis-check-aof [--fix] <aof-file>
--fix
选项可用于修复AOF文件中的错误。
<aof-file>
是AOF文件的路径和名称。
首先停止Redis服务器,以确保AOF文件不会被修改。
使用redis-check-aof命令来检查AOF文件的正确性。命令的使用方式如下:
redis-check-aof /var/lib/redis/appendonly.aof
注:
如果使用了
--fix
选项修复了AOF文件中的错误,建议再次运行redis-check-aof命令来验证修复是否成功。确认AOF文件已经正确修复后,可以启动Redis服务器,并将修复后的AOF文件用作持久化文件。
五、redis登录更改
开启从服务需要复制配置文件,更改其监听端口号,理论上可以开设无限个从服务器,更改其监听端口即可(首先需要有一个特别特别好的电脑配置,不然不建议尝试,系统会崩)。
cp /etc/redis.conf /opt/redis_6380.conf
1、发现问题
更改完port后,systemctl启动redis异常
2、解决办法
使用redis-server /opt/redis_6380.conf
redis-server /opt/redis_6380.conf
此时发现进程为前台进程,影响操作
若要redis后台运行需修改配置文件,将daemonize的值改为yes
vim /etc/redis.conf
再次输入命令进行检查
检查监听端口进行查看
六、数据库操作
(一)登录数据库
本地登录
监听回环地址(127.0.0.1)
redis-cli
监听本地网卡地址
redis-cli -h IP -p 端口号
redis-cli -h 192.168.41.130 -p 6379
此时因为更改过redis 的监听地址,在使用时则会进行报错。需添加IP地址和监听端口。(监听端口前文已经说过,再次不在过多追述)
远程登录
redis-cli -h 192.168.41.130 -p 6379 -n 0
(二)帮助信息
1、help 命令字
2、tab补齐
(三)库操作
1、切换
select 1
(四)数据操作
set 设置键值对
set key value
set name zn
keys
keys * 查看所有键的名称
keys *
keys 键名称 查看一个键是否存在
keys name
get
取出键值对
get name
get 键
键不存在则返回空
get aaa
del
删除键值对 del key
del name
del aaa
如果成功则返回结果为1,不成功则为0。这里我们没有创建aaa的键,所以返回结果为0。
flushall 清空所有数据库中的数据
flushall
rename 重命名键名称
不论更名后的键是否存在都会覆盖原有键,并将改名前的键的值赋予改名后的键
rename oldkey newkey
rename zn zm
renamenx 重命名键名称
假如改名后键名称存在则更改不成功
renamenx oldkey newkey
renamenx zm zn
move
移动键值对到指定数据库
move key dbnumber
假如目标数据库中存在同名键则移动失败
move zn 0
ttl
查看键值对的生命周期
ttl key
-1 永久
-2 已过期
expire
设置键值对的存储周期
expire key seconds
七、redis持久化
(一)RDB模式
默认持久化
/var/lib/redis/dump.rdb 数据库启动时会读取
触发条件 | redis进程退出 | 宕机 |
redis程序崩溃 | ||
手动保存(触发RDB) | save |
(二)AOF模式
默认关闭,需手动打开
vim /etc/redis.conf
可以与RDB同时使用
重启服务
systemctl restart redis
去数据库添加内容,而后返回查看
set aaa 123123
默认进程启动时读取 appendonly yes
内容解析:
$6
: 这是一个长度字段,表示后面的字符串的长度为6个字节。
SELECT
: 这是一个Redis命令,表示切换到指定的数据库。在这里,它表示切换到数据库0。
$11
: 这是一个长度字段,表示后面的字符串的长度为11个字节。
*3
: 这是一个Redis命令,表示执行一个命令组,后面跟着3个命令。
$3
: 这是一个长度字段,表示后面的字符串的长度为3个字节。
set
: 这是一个Redis命令,表示设置一个键值对。
$3
: 这是一个长度字段,表示后面的字符串的长度为3个字节。
aaa
: 这是一个键名。
$6
: 这是一个长度字段,表示后面的字符串的长度为6个字节。
123123
: 这是一个值。