1. 总结pg和mysql的优劣势
MySQL和PostgreSQL(简称PG)都是流行的关系型数据库管理系统(RDBMS),它们在许多方面有着不同的优劣势。以下是对它们的优劣势的总结:
MySQL的优势:
性能:MySQL以其高效的查询性能而闻名,适用于高并发的应用程序。
简单易用:MySQL具有较为简单的安装和配置过程,易于上手和管理。
社区支持:MySQL有一个庞大的用户社区,提供了丰富的文档、教程和支持资源。
可扩展性:MySQL能够在处理大量数据时持续提供可靠的性能,并能通过水平和垂直扩展来满足不同规模的应用需求。
广泛应用:由于其普及度高,很多应用程序和工具都对MySQL提供了良好的支持和集成。
PostgreSQL的优势:
功能强大:PostgreSQL具有广泛的功能集,包括复杂的数据类型、触发器、存储过程、地理空间和全文搜索等功能。
可靠性:PostgreSQL以其强大的数据完整性和可靠性而著称,支持事务和ACID(原子性、一致性、隔离性和持久性)属性,适用于对数据完整性要求较高的应用场景。
扩展性和可定制性:PostgreSQL提供了丰富的扩展机制,可以通过插件来实现更多的功能,并能够根据具体需求进行自定义开发。
完整的SQL支持:PostgreSQL支持最新的SQL标准,并提供了更多高级的查询和优化功能。
开源社区支持:PostgreSQL是一个开源项目,拥有活跃的社区,提供了广泛的帮助和支持。
总体而言,MySQL适用于需要高性能和简单部署的应用程序,而PostgreSQL适用于复杂的数据模型和对数据完整性和可靠性有更高要求的应用程序。选择适合的数据库管理系统取决于实际需求、数据量和应用场景。
2. 总结pg二进制安装和编译安装。
二进制安装
1、下载二进制包
[root@centos7 ~]# sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
[root@centos7~]# sudo dnf -qy module disable postgresql
2、在线安装postgresql服务
[root@centos7~]# sudo dnf install -y postgresql14-server
3、初始化数据库
[root@centos7~]# sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
4、设置自启动数据库
[root@centos7~]# sudo systemctl enable postgresql-14
5、启动数据库
[root@centos7~]# sudo systemctl start postgresql-14
编译安装
#安装相关依赖
[root@centos7 postgresql-14.2]#
yum -y install gcc make readline-devel zlib-devel
#编译安装
./configure --prefix=/apps/pgsql
make -j 2 world
make install-world
#创建pgsql账号密码
useradd -s /bin/bash -m -d /home/postgres postgres
echo -e '123456\n123456' |passwd postgres
[root@centos7 postgresql-14.2]# useradd -s /bin/bash -m -d /home/postgres postgres
[root@centos7 postgresql-14.2]# echo -e '123456\n123456' |passwd postgres
Changing password for user postgres.
New password: BAD PASSWORD: The password is shorter than 8 characters
Retype new password: passwd: all authentication tokens updated successfully.
#创建数据目录并授权
mkdir -pv /pgsql/data/
chown -R postgres.postgres /pgsql/data/
#切换账号
su - postgres
#设置环境变量
[root@pgsql ~]# vim /etc/profile.d/pgslq.sh
#!/bin/bash
export PGHOME=/apps/pgsql
export PATH=$PGHOME/bin/:$PATH
export PGDATA=/pgsql/data
export PGUSER=postgres
export MANPATH=/apps/pgsql/share/man:$MANPATH
#生效环境变量
. /etc/profile.d/pgslq.sh
#初始化数据库
initdb -D /pgsql/data
#启动数据库并生成日志
pg_ctl -l logfile start
#创建开机自启动服务:方法1
cp /usr/local/src/postgresql-14.2/contrib/start-scripts/linux /etc/init.d/postgresql
chmod +x /etc/init.d/postgresql
#修改启动文件
/etc/init.d/postgresql
# Installation prefix
prefix=/apps/pgsql
# Data directory
PGDATA="/pgsql/data"
#设置开机自启动
[root@pgsql ~]# vim /etc/rc.local
#生效配置
[root@pgsql ~]# systemctl daemon-reload
#设置自启动
[root@pgsql ~]# systemctl enable --now postgresql.service
3. 总结pg服务管理相关命令 pg_ctl 和pgsql命令选项及示例和不同系统的初始化操作
pg_ctl命令管理
初始化PostgreSQL数据库实例
启动、终止和重启PostgreSQL数据库服务
查看PostgreSQL数据库服务的状态
让数据库实例重新读取配置文件,允许给一个指定的PostgreSQL进程发送信号
控制standby服务器为可读写
在window平台下允许为数据库实例注册或取消一个系统服务
psql常用命令选项
\h 查看sql语法
\? 命令行操作的帮助
Tab键可以补全目录
\i sql文件 执行sql文件
\l 列出所有的数据库
\dn 列出所有schema
\db 显示所有表空间(pg中的表空间是一个目录,表放在表空间相当于将表的数据文件放到该目录之下)
\d 查看当前schema 中所有的表、视图、序列
\d+ 同上,但是多额外信息,下面几个命令都有带+版,能看到更详细的信息
\d schema.obj 查看对象结构(相当于desc)
\dt 只显示匹配的表
\di 只显示匹配的索引
\ds 只显示序列
\dv 只显示视图
\df 只显示函数
\sf 函数名 查看函数定义
\du 或 \dg 列出数据库中所有角色或用户(pg中是一样的)
\dp 或 \z 表名 显示表的权限分配情况
\x 横纵显示切换 (类似mysql \G)
\dT+ 显示扩展类型相关属性及描述
\q 退出pg命令行
\z 或 \dp 表名 显示表的权限分配情况
\timing 显示执行时间
\watch 5 每五秒循环执行sql语句
\c dbname 切换数据库
\conninfo 查看连接信息
\echo 字符串 输出一行信息
\encoding 字符集名 设置客户端字符集
\set [NAME [VALUE]] 设置内部变量,不加参数则列出内部变量
4. 总结pg数据库结构组织
实例:一个PostgreSQL对应一个安装的数据目录$PGDATA,即一个instance实例。
数据库:一个PostgreSQL数据库服务下可以管理多个数据库,当应用连接到一个数据库时,一般只能访问这个数据库中的数据,而不能访问其他数据库中的内容。
模式:一个数据库可以创建多个不同的名称空间即Schema,用于分隔不同的业务数据。
表和索引:一个数据库可以有多个表和索引。
行和列:每张表中有很多列和行数据。
5. 实现pg远程连接。输入密码和无密码登陆
#主机添加远程认账权限
[root@pgsql ~]# vim /pgsql/data/pg_hba.conf
92 # IPv6 local connections:
93 host all all ::1/128 trust
94 host all all 0.0.0.0/0 md5
#client连接
[postgres@postgers ~]$ apt -y install postgresql
[postgres@postgers ~]$ psql -h 192.168.188.88 postgres
6. 总结库,模式,表的添加和删除操作。表数据的CURD。同时总结相关信息查看语句。
表的添加:
通用:CREATE DATABASE ; PostgreSQL专用:CREATEDB
表的删除:
DROP DATABASE
查看数据库相关命令:
(1)列出所有数据库:\l
(2)查看当前连接信息:\c
(3)查看详细的信息:\conninfo
(4)连接数据库:\c db_name 相当于mysql中的use
查看表和表信息命令:
(1)列出所有表,视图,序列:\d
(2)查看表信息:\dt tb_name
(3)查看表结构:\d tb_name 相当于mysl中的desc
表的CRUD:
INSERT UPDATA DELETE SELECT
注意:PostgreSQL用INSERT时,一定加上INTO。
7. 总结pg的用户和角色管理。
角色
PostgreSQL使用角色的概念管理数据库访问权限。 根据角色自身的设置不同,一个角色可以看做是一个数据库用户,或者一组数据库用户。 角色可以拥有数据库对象(比如表)以及可以把这些对象上的权限赋予其它角色, 以控制谁拥有访问哪些对象的权限。
操作角色的语句:
create role db_role1; /--创建角色/
drop role db_role1; /--删除角色/
select rolename from pg_roles; /--查看所有角色/
/du --在命令格式下查看所有角色的命令
角色的权限
一个数据库角色可以有很多权限,这些权限定义了角色和拥有角色的用户可以做的事情。
create role db_role1 LOGIN; --创建具有登录权限的角色db_role1
create role db_role2 SUPERUSER; --创建具有超级用户权限的角色
create role db_role3 CREATEDB; --创建具有创建数据库权限的角色
create role db_role4 CREATEROLE --创建具有创建角色权限的角色
alter role db_role1 nologin nocreatedb; --修改角色取消登录和创建数据库权限
用户
其实用户和角色都是角色,只是用户是具有登录权限的角色。
create user db_user1 password '123'; --创建用户
create role db_user1 password '123' LOGIN; --同上一句等价
drop user db_user1; --删除用户
alter user db_user1 password '123456'; --修改密码
alter user db_user1 createdb createrole; --对用户授权
赋予角色控制权限
我们可以使用GRANT 和REVOKE命令赋予用户角色,来控制权限。
create user db_user1; --创建用户1
create user db_user2; --创建用户2
create role db_role1 createdb createrole; --创建角色1
grant db_role1 to db_user1,db_user2; --给用户1,2赋予角色1,两个用户就拥有了创建数据库和创建角色的权限
revoke db_role1 from db_user1; --从用户1移除角色1,用户不在拥有角色1的权限
8. 添加mage用户,magedu模式,准备zabbix库,配置mage用户的默认模式magedu,要求mage用户给zabbix库有所有权限。
# 创建数据库
create database zabbix;
# 创建模式
create schema magedu;
# 创建用户
create user mage;
alter schema magedu owner to mage;
alter database zabbix owner to mage;
9. 总结pgsql的进程结构,说明进程间如何协同工作的。
1、postmaster 主进程
2、bgwriter 后台写进程
3、walwriter 预写式日志
4、checkpointer 检查点操作
5、autovacuum 自动清理进程
6、pgarch 归档进程 #相当于mysql的二进制文件
7、pgstat 统计数据收集进程
8、syslogger 系统日志进程
9、startup 启动进程
10、session 会话进程
[root@pgsql ~]# ps auxf | grep ^postgres
postgres 29546 0.0 0.4 382560 17640 ? Ss Jul21 0:01 /apps/pgsql/bin/postgres -D /pgsql/data
postgres 29548 0.0 2.6 382676 99660 ? Ss Jul21 0:00 \_ postgres: checkpointer
postgres 29549 0.0 0.1 382668 6896 ? Ss Jul21 0:00 \_ postgres: background writer
postgres 29550 0.0 0.2 382560 8076 ? Ss Jul21 0:00 \_ postgres: walwriter
postgres 29551 0.0 0.1 383236 6600 ? Ss Jul21 0:01 \_ postgres: autovacuum launcher
postgres 29552 0.0 0.1 237584 4920 ? Ss Jul21 0:03 \_ postgres: stats collector
postgres 29553 0.0 0.1 383108 5420 ? Ss Jul21 0:00 \_ postgres: logical replication launcher
postgres 35581 0.0 0.2 383492 8368 ? Ss 04:44 0:00 \_ postgres: postgres postgres 192.168.188.20(45530) idle
数据更新过程
1、先将数据库文件中的更改的数据加载至内存
2、在内存更新数据
3、将日志写入内存WAL的缓存区
4、将日志提交,将日志写入操作系统cache
5、同步日志到磁盘
6、后台写数据库的更新后的数据到操作系统cache
7、写完数据后,更新检查点checkpoint
进程间的协同工作取决于消息传递和通信机制。主进程通过进程间通信(Inter-Process Communication,IPC)机制与后台进程进行通信,如共享内存、信号、套接字等。前端进程通过客户端-服务器模型与主进程通信,通过连接套接字进行交互。
主进程负责将客户端请求分派给合适的后台进程来执行。后台进程执行任务后将结果返回给主进程,主进程再将结果发送给对应的前端进程,最终将结果返回给客户端。
通过这种进程间协同工作的方式,PostgreSQL实现了客户端与后台进程之间的并发处理、任务分配和结果返回,以实现高性能、可靠的数据库服务。
10. 总结pgsql的数据目录中结构,说明每个文件的作用,并可以配上一些示例说明文件的作用。
pgsql的数据目录结构:
PG_VERSION pg服务器主版本号文件
base/ 数据库目录都在此目录下
global/ 数据库集簇范围的表(比如pg_database, 类似mysql的performance_schema)
pg_commit_ts/ 事物提交的时间戳数据
pg_dynshmem/ 动态共享内存子系统中使用的文件
pg_hba.conf 控制pg客户端认证配置的文件
pg_ident.conf pg用户映射文件
pg_logical/ 逻辑解码的状态数据
pg_multixact/ 多事务状态数据
pg_notify/ Listen/Notify状态数据
pg_replslot/ 复制槽数据
pg_serial/ 已提交的可串行化事务相关信息
pg_snapshots/ 快照信息
pg_stat/ 统计子系统的永久文件
pg_stat_tmp/ 统计子系统的临时文件
pg_subtrans/ 子事务状态数据
pg_tblspc/ 指向表空间的符号链接
pg_twophase/ 两阶段事务的状态文件
pg_wal/ WAL文件
pg_xact/ 事务提交状态数据
postgresql.auto.conf 存储使用alter system修改的配置
postgresql.conf 配置文件
postmaster.opts 记录服务器上一次启动的命令行选项
postmaster.pid 服务器pid文件
15. 总结日志记录的内容包含什么
日志记录的内容
- 历史事件:时间、地点、人物、事件
- 日志级别:时间的关键程度,loglevel
16. 总结日志分类, 优先级别。图文并茂解释应用如何将日志发到rsyslog,并写到目标。
(1)日志分类:
#内置分类
Faclility:设施,从功能或程序上对日志进行分类。
auth, authpriv, cron, daemon,ftp,kern, lpr, mail, news, security(auth), user, uucp, syslog #自定义的分类
local0-local7
(2)优先级别:
Priority优先级别,从低到高排序。
debug,info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
17. 总结rsyslog配置文件格式
/etc/rsyslog.conf 配置文件格式:由三部分组成
MODULES:相关模块配置
GLOBAL DIRECTIVES:全局配置
RULES:日志记录相关的规则配置
RULES配置格式:
facility.priority; facility.priority… target
facility格式:
* #所有的facility
facility1,facility2,facility3,... #指定的facility列表
priority格式:
*: 所有级别
none:没有级别,即不记录
PRIORITY:指定级别(含)以上的所有级别
=PRIORITY:仅记录指定级别的日志信息
target格式:
文件路径:通常在/var/log/,文件路径前的-表示异步写入
用户:将日志事件通知给指定的用户,* 表示登录的所有用户
日志服务器:@host,把日志送往至指定的远程UDP日志服务器 @@host 将日志发送到远程TCP日志服务器
管道: | COMMAND,转发给其它命令处理
通常的日志文件的格式:
日志文件有很多,如: /var/log/messages,cron,secure等,基本格式都是类似的。格式如下
事件产生的日期时间 主机 进程(pid):事件内容
18.完成功能,sshd应用将日志写到rsyslog的local6分类,过滤所有级别,写入到/var/log/ssh.log。
[root@centos7 ~]# vim /etc/ssh/ssh_config
# Logging
SyslogFacility LOCAL6
[root@centos7 log]# vim /etc/rsyslog.d/ssh.conf
local6.* /var/log/ssh.log
[root@centos7 ~]# systemctl restart sshd rsyslog
18. 完成功能,将3个主机(要求主机名为ip)的ssh日志,通过rsyslog服务将ssh日志写入到集中的主机上的rsyslog服务,写入到/var/log/all-ssh.log文件
19. 总结/var/log/目录下常用日志文件作用。
/var/log/secure 系统安全日志,文本格式,应周期性分析。
/var/log/btmp 当前系统上,用户的失败尝试登录相关的日志,二进制格式,lastb可进行查看。
/var/log/wtmp 当前系统上,用户正常登录的相关日志信息,二进制格式,last可进行查看。
/var/log/lastlog 每一个用户最近一次的登录信息,二进制格式,lastlog可进行查看。
/var/log/dmesg Centos7之前版本系统引导过程的日志信息,文本格式,开机后的硬件变化不在记录,也可以通过命令dmesg查看,可持续查看硬件变化的信息。
/var/log/boot.log 系统启动的相关信息,文本格式。
/var/log/messages 系统中的大部分日志信息。
/var/log/anaconda anaconda的日志信息。
20. 总结journalctl命令的选项及示例
日志的配置文件
/etc/systemd/journald.conf
Journalctl [options….] [MATCHES….]
查看所有日志(默认情况下只保存本次启动的日志)
Journalctl
查看内核日志(不显示应用日志)
Journalctl –k
查看系统本次启动的日志
Journalctl –b
Journalctl –b -0
查看上一次启动的日志(需更改设置)
查看指定时间的日志
journalctl --since='2023-8-15 07:00:00'
journalctl –since '20 min ago'
journalctl –since 'yesterday'
journalctl –since '2023-8-10 07:00:00' –until '2023-8-15 07:00:00'
journalctl –since 09:00 –until ‘1 hour ago’ journalctl
显示尾部最新10行日志
Journalctl –n
显示尾部指定行数的日志
Journalctl –n 20
实时动态显示日志
Journalctl –f
查看指定服务的日志
Journalctl /usr/lib/system/system
查看指定进程的日志
Journalctl _PID=1000
查看某个路劲的脚本日志
Journalctl /usr/bin/bash
查看指定用户的日志
Journalctl _UID=1000 –since tody
查看某个Unit的日志
Journalctl -u nginx.server
Journalctl -u nginx.server –since today
合并显示多个Unit的最新日志
Journalctl -u nginx.server –u php-fpm.server --since today
查看指定优先级(及以上级别)的日志,共有8级。
0:emerg
1: alert
2:crit
3:err
4:warning
5:notice
6:info
7:debug
23. 总结DAS, NAS, SAN区别,使用场景
1.直连式存储DAS:一块的方式来使用硬盘存储,本机用,不支持远程
2.存储区域网络SAN:把硬盘放在很远的距离,只负责提供空间,一块的形式存储,会分享一个一个独立的空间给用户存储数据,商业产品
3.网络附加村存储NAS:把文件系统都管理好,数据存储好,直接访问数据,以文件的形式存储
24. 实现nfs共享/data/nfs目录,所有压缩为666用户。并配置其他虚拟机自动挂载。
25. 总结inotify原理,命令及使用
原理:
使用 inotify 很简单:创建一个文件描述符,附加一个或多个监视器(一个监视器 是一个路径和一组事件),然后使用 read 方法从描述符获取事件。read 并不会用光整个周期,它在事件发生之前是被阻塞的。
更好的是,因为inotify 通过传统的文件描述符工作,您可以利用传统的 select 系统调用来被动地监控监视器和许多其他输入源。两种方法 — 阻塞文件描述符和使用 select— 都避免了繁忙轮询。
moved_to 文件或目录被移动到监控的目录中
moved_from 文件或目录从监控中被移动
move 文件或目录不管移到还是移出监控目录都触发事件
access 文件或目录被读取
delete_self 文件或目录被删除,目录本身被删除
unmount 取消挂载
持续后台监控,并记录日志
inotifywait -o /root/inotify.log -drq /data/www --timefmt "%Y-%m-%d %H:%M:%S" --format "%T %w%f event: %e"
持续前台监控特定事件
inotifywait -mrq /data/www --timefmt "%F %H:%M:%S" --format "%T %w%f event: %;e" -e create,delete,moved_to,close_write,attrib
26. 总结rsync原理,命令及ssh命令和rsync协议使用。完成目录文件同步。
1)软件简介
Rsync 是一个远程数据同步工具,可通过 LAN/WAN 快速同步多台主机间的文件。Rsync 本来是用以取代rcp 的一个工具,它当前由 Rsync.samba.org 维护。Rsync 使用所谓的“Rsync 演算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。运行 Rsync server 的机器也叫 backup server,一个 Rsync server 可同时备份多个 client 的数据;也可以多个Rsync server 备份一个 client 的数据。
Rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式。Rsync server 会打开一个873的服务通道(port),等待对方 Rsync 连接。连接时,Rsync server 会检查口令是否相符,若通过口令查核,则可以开始进行文件传输。第一次连通完成时,会把整份文件传输一次,下一次就只传送二个文件之间不同的部份。
Rsync 支持大多数的类 Unix 系统,无论是 Linux、Solaris 还是 BSD 上都经过了良好的测试。此外,它在windows 平台下也有相应的版本,比较知名的有 cwRsync 和 Sync2NAS。
Rsync 的基本特点如下:
可以镜像保存整个目录树和文件系统;
可以很容易做到保持原来文件的权限、时间、软硬链接等;
无须特殊权限即可安装;
优化的流程,文件传输效率高;
可以使用 rcp、ssh 等方式来传输文件,当然也可以通过直接的 socket 连接;
支持匿名传输。
2)核心算法
假定在名为 α 和 β 的两台计算机之间同步相似的文件 A 与 B,其中 α 对文件A拥有访问权,β 对文件 B 拥有访问权。并且假定主机 α 与 β 之间的网络带宽很小。那么 Rsync 算法将通过下面的五个步骤来完成:
β 将文件 B 分割成一组不重叠的固定大小为 S 字节的数据块。最后一块可能会比 S 小。
β 对每一个分割好的数据块执行两种校验:一种是32位的滚动弱校验,另一种是128位的 MD4 强校验。
β 将这些校验结果发给 α。
α 通过搜索文件 A 的所有大小为 S 的数据块(偏移量可以任选,不一定非要是 S 的倍数),来寻找与文件B 的某一块有着相同的弱校验码和强校验码的数据块。这项工作可以借助滚动校验的特性很快完成。
α 发给 β 一串指令来生成文件 A 在 β 上的备份。这里的每一条指令要么是对文件 B 经拥有某一个数据块而不须重传的证明,要么是一个数据块,这个数据块肯定是没有与文件 B 的任何一个数据块匹配上的。
3) 文件级别的RSync(只传输变化的文件)工作过程:(我的理解)
* 机器A构造FileList,FileList包含了需要与机器B sync的所有文件信息对name->id,(id用来唯一表示文件例如MD5);
* 机器A将FileList发送到机器B;
* 机器B上运行的后台程序处理FileList,构建NewFileList,其中根据MD5的比较来删除机器B上已经存在的文件的信息对,只保留机器B上不存在或变化的文件;
* 机器A得到NewFileList,对NewFileList中的文件从新传输到机器B;
4)进一步的优化存储和传输
文件级别的Rsync + Rsync对单个文件分块比较和传输 : 实现了文件的高效传输。
如果Server上存储有所有文件的MD5码索引的数据库 + hardlink技术 : 实现Server的重复文件删除,单个文件只存储一份的技术。
如果server有单个文件只存储一份的技术,(有所有文件的MD5数据库),则在Rsync传输的过程中只传输Rsync Server没有的文件,如果Rsync Server由此文件直接使用。
5)rsync有六种不同的工作模式
拷贝本地文件;当SRC和DES路径信息都不包含有单个冒号":"分隔符时就启动这种工作模式。
使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号":"分隔符时启动该模式。
使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号":"分隔符时启动该模式。
从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含"::"分隔符时启动该模式。
从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含"::"分隔符时启动该模式。
列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可
29. 总结 Redis多种安装方法和内核参数优化
Redis可以通过多种方式进行安装,主要包括源码编译安装、包管理工具安装和Docker容器化部署等。以下是对Redis多种安装方法和内核参数优化的总结:
-
源码编译安装:
- 下载最新稳定版的Redis源码,解压并编译安装。
- 优点:可以获得最新的Redis版本,可以根据需求自定义编译参数。
- 缺点:需要手动处理依赖关系,不方便管理和升级。
-
包管理工具安装:
- 使用Linux发行版的包管理工具如apt、yum等进行安装。
- 优点:方便快捷,自动处理依赖关系,易于管理和升级。
- 缺点:可能不是最新版本,可定制性较差。
-
Docker容器化部署:
- 使用Docker镜像部署Redis容器。
- 优点:便于部署和管理,隔离性好,易于横向扩展。
- 缺点:需要了解Docker的相关知识,对容器网络和存储进行合理配置。
内核参数优化:
- 最大连接数(maxclients):根据实际需求适当调整,确保不超过系统资源限制。
- 最大内存限制(maxmemory):根据可用内存和实际需求进行设置,避免内存溢出。
- 持久化方式:根据数据的重要性和对性能的要求选择合适的持久化方式(如RDB快照、AOF日志)。
- 网络参数:调整TCP连接参数,如超时时间、最大连接数等,以提高网络性能。
- 文件描述符限制:根据实际需求适当调整,确保不超过系统资源限制。
- 内核参数:根据实际情况调整内核参数,如透明大页、文件系统参数等,以提高Redis的性能和稳定性。
总的来说,安装方法的选择应根据具体的场景和需求来决定,而内核参数的优化则需要根据实际情况进行调整,以确保Redis能够在高性能和高可用性的环境下稳定运行。
30. 总结 Redis 常见指令和数据类型
常见指令:
- SET key value:设置指定键的值
- GET key:获取指定键的值
- DEL key:删除指定键
- EXISTS key:检查键是否存在
- KEYS pattern:按模式匹配获取键
- EXPIRE key seconds:设置键的过期时间
- TTL key:获取键的剩余过期时间
- INCR key:将键的值加1
- DECR key:将键的值减1
- HSET key field value:在哈希数据类型中设置字段的值
- HGET key field:在哈希数据类型中获取字段的值
- LPUSH key value:将值推入列表的左侧
- RPUSH key value:将值推入列表的右侧
- LPOP key:从列表的左侧弹出值
- RPOP key:从列表的右侧弹出值
常见数据类型:
- String:简单的键值对
- Hash:类似于关联数组,包含键值对的集合
- List:包含多个元素的列表,可用于实现队列和栈
- Set:不重复元素的集合
- Sorted Set:与Set类似,但每个元素都关联一个分数,用于排序
这些是Redis中最常用的指令和数据类型,但Redis还提供了许多其他高级功能和指令,如发布/订阅、事务、持久化等。