目录
一、 概述
(一)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
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
数据类型
二、安装
(一)编译安装
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
检查AOF文件
redis-check-aof [--fix] <aof-file>
redis-check-aof /var/lib/redis/appendonly.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 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 zn zm
renamenx 重命名键名称
renamenx zm zn
move
move zn 0
ttl
expire
七、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