Oracle 10g R2 RAC 学习环境搭建教程
mhr18 2024-09-23 09:47 23 浏览 0 评论
大家好!今天有空整理了一下之前学习oracle 10g RAC的安装过程,适合初学者创建学习环境,有利于oracle的学习与实践。。。
后续会更新Oracle 11G RAC学习环境的搭建
1、 相关软件
OS:Oracle Linux 5.8 64bit
SoftWare(oracle 10g R2): cluster(10201_clusterware_linux_x86_64)
Database(10201_database_linux_x86_64)
Patch(p8202632_10205_Linux-x86-64)
相关工具:CRT、Xmanage、VNC
注:安装环境为Windows Server 2012 Hype-V
共享存储为Windows Server 2012(File and Storage Services)——Hype-V
节点物理内存:4G
ASM(3个):60G OCR(2个):1G VOTE(3个):1G
2、 安装OS注意事项【RAC1&RAC2】
分区:简单分区两个/和swap 注:swap分区为物理内存的两倍
软件包安装:
关闭sendmail服务
Service sendmail off chkconfig sendmail off chkconfig –list sendmail
字符界面设置
[root@rac2 ~]# vi /etc/inittab
3、安装rlwrap软件【RAC1&RAC2】
[root@rac1 ~]# tar -zxvf rlwrap-0.42.tar.gz
[root@rac1 ~]# ll
[root@rac1 ~]# cd rlwrap-0.42
[root@rac1 rlwrap-0.42]# ./configure
[root@rac1 rlwrap-0.42]# make
[root@rac1 rlwrap-0.42]# make install
注:rlwrap软件安装后,就可以在sqlplus或者rman中使用上下箭头翻页查找执行过的语句
会在oracle用户下的.bash_profile后面加alias sqlplus=’rlwrap sqlplus’、alias rman=’rlwrap rman’等等
4、安装oracle软件需要的RPM包【RAC1&RAC2】
rpm -q binutils compat-db compat-libstdc++-33 compat-libstdc++-296 compat-gcc-34-c++ compat-gcc-34 control-center elfutils-libelf elfutils-libelf-devel elfutils-libelf-devel-static gcc gcc-c++ glibc glibc-common glibc-devel glibc-headers gnome-screensaver kernel-headers ksh libaio libaio-devel libgcc libgomp libstdc++ libstdc++-devel libXp make numactl-devel openmotif openmotif22 pdksh rsh setarch sysstat unixODBC unixODBC-devel
执行上面命令查看这些RPM包是否都已安装
package compat-db is not installed
package libaio-devel is not installed
package libXp is not installed
package numactl-devel is not installed
package openmotif is not installed
package openmotif22 is not installed
package pdksh is not installed
package sysstat is not installed
package unixODBC is not installed
package unixODBC-devel is not installed
配置官方YUM源,连接外网,安装缺少的RPM包
查看版本:
[root@node1 ~]# cd /etc/yum.repos.d/
[root@node1 yum.repos.d]# lsb_release -a
下载yum源配置文件:
[root@node1 yum.repos.d]# wget http://public-yum.oracle.com/public-yum-el5.repo
[root@node1 yum.repos.d]# ls
public-yum-el5.repo
[root@node1 yum.repos.d]# vi public-yum-el5.repo
注:将oracleasm的RPM包也一起安装【yum install oracleasm 运行三次】
5、设置内核参数和其它参数【RAC1&RAC2】
vi /etc/sysctl.conf
kernel.core_uses_pid = 1
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 101365
net.ipv4.ip_local_port_range = 1024 65000
net.core.rmem_default = 1048576
net.core.rmem_max = 1048576
net.core.wmem_default = 262144
net.core.wmem_max = 262144
sysctl –p 执行该命令使内核参数立即生效
vi /etc/security/limits.conf
oracle soft nproc 2047
oracle hard nproc 16384
oracle soft nofile 1024
oracle hard nofile 65536
vi /etc/pam.d/login
session required /lib64/security/pam_limits.so
session required pam_limits.so
注意:因为是64位的系统,所以一定要写/lib64/security/pam_limits.so
如果写成/lib/security/pam_limits.so(这是32位系统的设置)
Vi /etc/profile 添加oracle环境变量
if [ $USER = "oracle" ]; then
if [ $SHELL = "/bin/ksh" ]; then
ulimit -p 16384
ulimit -n 65536
else
ulimit -u 16384 -n 65536
fi
fi
执行source /etc/profile命令使配置生效
设置hangcheck内核模块参数
[root@rac1 ~]# vi /etc/modprobe.conf
options hangcheck-timer hangcheck_tick=30 hangcheck_margin=180
执行‘[root@rac1 ~]# modprobe -v hangcheck-timer’使得上面的更改生效
查看tmfs大小
Vi /etc/fstab
配置NTP服务,实现网络时间同步
配置windows server 2008为NTP server
默认情况下,独立服务器WINDOWS SERVER 2008是作为NTP客户端工作的 ,所以必须通过修改注册表,以使系统作为NTP服务器运行。工作之前请先备份注册表文件。
1.修改以下选项的键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer内的[Enabled]设定为1。
打开NTP服务器功能(默认是不开启NTP Server服务,除非电脑升级成为域控制站)。
2.修改以下键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\AnnounceFlags设定为5.
该设定强制主机将它自身宣布为可靠的时间源,从而使用内置的互补金属氧化物半导体 (CMOS) 时钟。如果要采用外面的时间服务器就用默认的a值即可.
3.修改以下键值HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Parameters\Type内的[Type]设定为NTP。
4.重启Win32Time服务:先关闭 windows time 服务,再开启该服务。可以在“管理工具”的“服务”界面下完成,也可以以 DOS 方式输入“net stop w32time”、“net start w32time”。
至此,已完成服务器端设定.
配置节点
[root@rac1 ~]# service ntpd status
ntpd is stopped
[root@rac1 ~]# ntpdate 192.168.75.1
30 Aug 19:40:31 ntpdate[12102]: step time server 192.168.75.1 offset -28799.377040 sec
[root@rac1 ~]# crontab –e
* * * * * ntpdate 192.168.75.1
这个脚本表示每分钟同步一次,crontab脚本间隔最短时间只能设置为1分钟
[root@rac1 ~]# crontab -l
* * * * * ntpdate 192.168.75.1
[root@rac1 ~]# service crond restart
Stopping crond: [ OK ]
Starting crond: [ OK ]
查看crontab的运行日志
[root@rac1 ~]# tail -10f /var/log/cron
确认物理内存和交换内存信息
[root@rac1 yum.repos.d]# grep MemTotal /proc/meminfo
MemTotal: 4043808 kB
[root@rac1 yum.repos.d]# grep SwapTotal /proc/meminfo
SwapTotal: 8385920 kB
设置Hosts的IP地址,最好用三段式
Vi /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain localhost6
192.168.75.11 rac1.localdomain rac1
192.168.75.12 rac2.localdomain rac2
192.168.80.11 rac1-priv.localdomain rac1-priv
192.168.80.12 rac2-priv.localdomain rac2-priv
192.168.75.21 rac1-vip.localdomain rac1-vip
192.168.75.22 rac2-vip.localdomain rac2-vip
Vip和public的IP在同一个网段,私有IP是另一个网段
测试一下
Ping rac1.localdomain
Ping rac2.localdomain
Ping rac1-priv.localmain
Ping rac2-priv.localdomain
创建oracle用户组和用户
[root@rac1 yum.repos.d]# groupadd dba
[root@rac1 yum.repos.d]# groupadd oinstall
[root@rac1 yum.repos.d]# useradd -c oracle -g oinstall -G dba oracle
[root@rac2 yum.repos.d]# passwd oracle
[root@rac1 yum.repos.d]# mkdir -p /u01/oracle
[root@rac1 yum.repos.d]# chown -R oracle:oinstall /u01
6、配置共享存储【RAC1&RAC2】
[root@rac1 yum.repos.d]# cd /etc/iscsi
[root@rac1 iscsi]# ll
total 24
-rw-r--r-- 1 root root 49 Aug 30 21:56 initiatorname.iscsi
-rw------- 1 root root 10694 Feb 24 2012 iscsid.conf
[root@rac1 iscsi]# cd /etc/init.d/
[root@rac1 init.d]# ./iscsi start
iscsid (pid 1672) is running...
Setting up iSCSI targets: iscsiadm: No records found
[ OK ]
[root@rac1 init.d]# iscsiadm --mode discovery --type sendtargets --portal 192.168.75.75
192.168.75.75:3260,1 iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target
[root@rac1 init.d]# iscsiadm --mode node
192.168.75.75:3260,1 iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target
[root@rac1 init.d]# iscsiadm --mode node --targetname iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target --portal 192.168.75.75:3260 --login
Logging in to [iface: default, target: iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target, portal: 192.168.75.75,3260] (multiple)
Login to [iface: default, target: iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target, portal: 192.168.75.75,3260] successful.
[root@rac1 init.d]# vi /etc/iscsi/iscsid.conf 在第一行添加
iscsiadm --mode node --targetname iqn.1991-05.com.microsoft:win-3ee80mhproo-rac-target --portal 192.168.75.75:3260 --login
[root@rac1 init.d]# chkconfig iscsid on
[root@rac1 init.d]# chkconfig --list iscsid
iscsid 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@rac1 init.d]# fdisk -l
重启一下,测试共享硬盘的挂载,在RAC2执行以上操作
将所有磁盘进行分区fdisk /dev/sdg
查看主机名及更正
[root@rac2 ~]# vi /etc/sysconfig/network
[root@rac2 ~]# hostname
7、配置ASM磁盘和裸设备【RAC1&RAC2】
上面命令在节点2也要执行一下
以上两部分节点2不用执行
节点2同样执行一下,查看是否正常
注意:asm磁盘如果使用了asmlib就不能再设置成裸设备,否则在创建asm磁盘组的时候rac2的实例挂载磁盘会失败,要么用裸设备,不用asmlib
其它2块OCR磁盘和3块表决磁盘配置成裸设备
Vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/sde1
/dev/raw/raw2 /dev/sdf1
/dev/raw/raw3 /dev/sdg1
/dev/raw/raw4 /dev/sdh1
/dev/raw/raw5 /dev/sdi1
配置裸设备开机权限
vi /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sde1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdf1", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", KERNEL=="sdg1", RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add", KERNEL=="sdh1", RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add", KERNEL=="sdi1", RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add", KERNEL=="raw[1-2]", OWNER="root", GROUP="oinstall", MODE="660"
ACTION=="add", KERNEL=="raw[3-5]", OWNER="oracle", GROUP="oinstall", MODE="660"
重启一下服务 [root@rac1 ~]# service rawdevices restart
查看裸设备状态
8、配置oracle用户环境变量【RAC1&RAC2】
su - oracle
vi .bash_profile
export TMP=/tmp
export TMPDIR=$TMP
export ORACLE_BASE=/u01
export ORACLE_SID=racdb1 ####节点2 ORACLE_SID=racdb2
export ORACLE_HOME=/u01/oracle/db_1
export ORA_CRS_HOME=/u01/oracle/crs_1
export ORACLE_TERM=xterm
export PATH=$PATH:$ORACLE_HOME/bin:$ORA_CRS_HOME/bin:$HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORA_CRS_HOME/lib:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib
export DISPLAY=192.168.75.1:0.0
stty erase ^h
参数立即生效[oracle@rac1 ~]$ . .bash_profile
查看环境变量已经生效
9、两个节点建立信任关系
【RAC1】
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ pwd
[oracle@rac1 ~]$ mkdir .ssh
[oracle@rac1 ~]$ chmod 700 .ssh
[oracle@rac1 ~]$ ssh-keygen -t rsa
[oracle@rac1 ~]$ ssh-keygen -t dsa
【RAC2】
[root@rac1 ~]# su - oracle
[oracle@rac1 ~]$ pwd
[oracle@rac1 ~]$ mkdir .ssh
[oracle@rac1 ~]$ chmod 700 .ssh
[oracle@rac1 ~]$ ssh-keygen -t rsa
[oracle@rac1 ~]$ ssh-keygen -t dsa
【RAC1】注意是在rac1执行
[oracle@rac1 ~]$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys
[oracle@rac1 ~]$ cat .ssh/id_dsa.pub >> .ssh/authorized_keys
[oracle@rac1 ~]$ ssh rac2 cat .ssh/id_rsa.pub >> .ssh/authorized_keys
[oracle@rac1 ~]$ ssh rac2 cat .ssh/id_dsa.pub >> .ssh/authorized_keys
[oracle@rac1 ~]$ scp .ssh/authorized_keys rac2:/home/oracle/.ssh/authorized_keys
验证
以上八条命令在节点2也要执行一下
10、拷贝软件,设置权限【RAC1】
11、安装clusterware软件
解压clusterware软件
[oracle@rac1 u01]# zcat 10201_clusterware_linux_x86_64.cpio.gz | cpio –idmv
安装前,检查安装环境
[oracle@rac1 u01]# /u01/clusterware/cluvfy/runcluvfy.sh stage -pre crsinst -n rac1,rac2 -verbose
以上错误是正常的,因为还没配置VIP
用root用户更改Linux的版本号,用oracle用户安装
改成版本4,不然runInstaller运行不了
开始安装clusterware
RAC1另起一个会话
RAC2另起一个会话
接着,第二个脚本执行前,先用root用户修改一下参数(两个节点都要修改)
root@rac1 ~]# vi /u01/oracle/crs_1/bin/vipca
[root@rac1 ~]# vi /u01/oracle/crs_1/bin/srvctl
RAC2也同样用root执行
RAC1先执行:[root@rac1 ~]# /u01/oracle/crs_1/root.sh
RAC2执行[root@rac2 ~]# /u01/oracle/crs_1/root.sh
接下来,查看两个节点的ocr是否一致
在RAC2上执行
[root@rac2 ~]# /u01/oracle/crs_1/bin/oifcfg getif
[root@rac2 ~]# /u01/oracle/crs_1/bin/oifcfg iflist
eth0 192.168.75.0
eth1 192.168.80.0
[root@rac2 ~]# /u01/oracle/crs_1/bin/oifcfg setif -global eth0/192.168.75.0:public
[root@rac2 ~]# /u01/oracle/crs_1/bin/oifcfg setif -global eth1/192.168.80.0:cluster_interconnect
[root@rac2 ~]# /u01/oracle/crs_1/bin/oifcfg getif
eth0 192.168.75.0 global public
eth1 192.168.80.0 global cluster_interconnect
[root@rac2 ~]# export DISPLAY=192.168.75.1:0.0
[root@rac2 ~]# /u01/oracle/crs_1/bin/vipca
检查一下ocr的一致性状态
终于可以点击OK了
CRS安装完毕
检查CRS版本
检查CRS状态
12、安装数据库软件
解压database软件包
[oracle@rac1 u01]$ zcat 10201_database_linux_x86_64.cpio.gz | cpio –idmv
在rac1和rac2分别使用root用户执行
返回去点击OK
再次检查OCR是否一致
12、升级clusterware软件
解压升级包
[oracle@rac1 u01]$ unzip p8202632_10205_Linux-x86-64.zip
开始安装升级包
以上错误,修改参数vi /etc/sysctl.conf,两节点均需要更改,执行sysctl –p,使更改立即生效
重新检查OK
根据提示进行操作,先检查OCR是否一致
【RAC1】
查看rac1的OCR是否一致
Rac1升级完,服务都正常
【RAC2】
检查两节点的OCR信息以及crs_stat状态
查看一下clusterware的版本
点击exit退出
至此,clusterware软件升级完毕
13、升级数据库软件
再次运行[oracle@rac1 Disk1]$ ./runInstaller
在两个节点依次执行
【RAC1】
【RAC2】
返回点击OK,退出即可
数据库至此升级完毕
14、安装ASM实例
检查一下crs服务状态
检查两个节点的ASM磁盘
在RAC1执行,安装ASM实例
点击YES,让其自动配置监听
注意:最好不要自己用netca配置rac的监听,搞不好会导致ASM磁盘组创建失败
此时,检查一下crs,直到全部online
再查看rac2的+ASM的服务名是否动态注册到了listener,用oracle用户检查
然后再创建ASM磁盘组,不然可能会导致rac2的磁盘组mount不了,那就只能删除listener和ASM重装了
因为是学习测试,故选择External模式
点击NO,结束配置,等会要建数据库
检查两个节点的OCR信息是否一致
注意:两个节点的ASM实例都要全部mounted才正确,如果不是,就要删除重装ASM磁盘组
ASM磁盘组创建完,开始创建数据库
在RAC1执行
在刚刚建好的ASM磁盘组上安装数据库
racdb数据库创建完毕
在两个节点oracle用户都添加rlwrap的环境变量
Vi .bash_profile
alias sqlplus='rlwrap sqlplus'
alias rman='rlwrap rman'
alias lsnrctl='rlwrap lsnrctl'
. .bash_profile
最后,为了NAME列能显示完整,需要在root用户下创建一个文件
[root@rac1 ~]# vi /usr/bin/crs_stat
export ORACLE_BASE=/u01
export ORACLE_CRS_HOME=$ORACLE_BASE/oracle/crs_1
export ORACLE_HOME=$ORACLE_BASE/oracle/db_1
RSC_KEY=$1
QSTAT=-u
AWK=/bin/awk # if not available use /usr/bin/awk
# Table header:echo ""
$AWK \
'BEGIN {printf "%-45s %-10s %-18s\n", "HA Resource", "Target", "State";
printf "%-45s\n","--------------------------------------------------------------------------";}'
# Table body:
$ORA_CRS_HOME/bin/crs_stat $QSTAT | $AWK \
'BEGIN { FS="="; state = 0; }
$1~/NAME/ && $2~/'$RSC_KEY'/ {appname = $2; state=1};
state == 0 {next;}
$1~/TARGET/ && state == 1 {apptarget = $2; state=2;}
$1~/STATE/ && state == 2 {appstate = $2; state=3;}
state == 3 {printf "%-45s %-10s %-18s\n", appname, apptarget, appstate; state=0;}'
[root@rac1 ~]# chmod 775 /usr/bin/crs_stat
至此,RAC环境搭建完成!!!
相关推荐
- Spring Boot 分布式事务实现简单得超乎想象
-
环境:SpringBoot2.7.18+Atomikos4.x+MySQL5.71.简介关于什么是分布式事务,本文不做介绍。有需要了解的自行查找相关的资料。本篇文章将基于SpringBoot...
- Qt编写可视化大屏电子看板系统15-曲线面积图
-
##一、前言曲线面积图其实就是在曲线图上增加了颜色填充,单纯的曲线可能就只有线条以及数据点,面积图则需要从坐标轴的左下角和右下角联合曲线形成完整的封闭区域路径,然后对这个路径进行颜色填充,为了更美观...
- Doris大数据AI可视化管理工具SelectDB Studio重磅发布!
-
一、初识SelectDBStudioSelectDBStudio是专为ApacheDoris湖仓一体典型场景实战及其兼容数据库量身打造的GUI工具,简化数据开发与管理。二、Select...
- RAD Studio 、Delphi或C++Builder设计代码编译上线缩短开发时间
-
#春日生活打卡季#本月,Embarcadero宣布RADStudio12.3Athens以及Delphi12.3和C++Builder12.3,提供下载。RADStudio12.3A...
- Mybatis Plus框架学习指南-第三节内容
-
自动填充字段基本概念MyBatis-Plus提供了一个便捷的自动填充功能,用于在插入或更新数据时自动填充某些字段,如创建时间、更新时间等。原理自动填充功能通过实现com.baomidou.myba...
- 「数据库」Sysbench 数据库压力测试工具
-
sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以...
- 如何选择适合公司的ERP(选erp系统的经验之谈)
-
很多中小公司想搞ERP,但不得要领。上ERP的目的都是歪的,如提高效率,减少人员,堵住财务漏洞等等。真正用ERP的目的是借机提升企业管理能力,找出管理上的问题并解决,使企业管理更规范以及标准化。上ER...
- Manus放开注册,但Flowith才是Agent领域真正的yyds
-
大家好,我是运营黑客。前天,AIAgent领域的当红炸子鸡—Manus宣布全面放开注册,终于,不需要邀请码就能体验了。于是,赶紧找了个小号去确认一下。然后,额……就被墙在了外面。官方解释:中文版...
- 歌浓酒庄总酿酒师:我们有最好的葡萄园和最棒的酿酒师
-
中新网1月23日电1月18日,张裕董事长周洪江及总经理孙健一行在澳大利亚阿德莱德,完成了歌浓酒庄股权交割签约仪式,这也意味着张裕全球布局基本成型。歌浓:澳大利亚年度最佳酒庄据悉,此次张裕收购的...
- 软件测试进阶之自动化测试——python+appium实例
-
扼要:1、了解python+appium进行APP的自动化测试实例;2、能根据实例进行实训操作;本课程主要讲述用python+appium对APP进行UI自动化测试的例子。appium支持Androi...
- 为什么说Python是最伟大的语言?看图就知道了
-
来源:麦叔编程作者:麦叔测试一下你的分析能力,直接上图,自己判断一下为什么Python是最好的语言?1.有图有真相Java之父-JamesGoshlingC++之父-BjarneStrou...
- 如何在Eclipse中配置Python开发环境?
-
Eclipse是著名的跨平台集成开发环境(IDE),最初主要用来Java语言开发。但是我们通过安装不同的插件Eclipse可以支持不同的计算机语言。比如说,我们可以通过安装PyDev插件,使Eclip...
- 联合国岗位上新啦(联合国的岗位)
-
联合国人权事务高级专员办事处PostingTitleIntern-HumanRightsDutyStationBANGKOKDeadlineOct7,2025CategoryandL...
- 一周安全漫谈丨工信部:拟定超1亿条一般数据泄露属后果严重情节
-
工信部:拟定超1亿条一般数据泄露属后果严重情节11月23日,工信部官网公布《工业和信息化领域数据安全行政处罚裁量指引(试行)(征求意见稿)》。《裁量指引》征求意见稿明确了行政处罚由违法行为发生地管辖、...
- oracle列转行以及C#执行语句时报错问题
-
oracle列转行的关键字:UNPIVOT,经常查到的怎么样转一列,多列怎么转呢,直接上代码(sshwomeyourcode):SELECTsee_no,diag_no,diag_code,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (74)
- oracle批量插入数据 (65)
- oracle事务隔离级别 (59)
- oracle 空为0 (51)
- oracle主从同步 (56)
- oracle 乐观锁 (53)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)