Redis 介绍

          Redis 最常用的功能是作为缓存数据库,保存的数据都存放在内存中,这样读写的速度极快,也分担了主数据库的部分压力。Redis 也可以将保存在内存的数据持久化到硬盘中,这样重启Redis 时,Redis的key:value 数据不会丢失。今天这篇文件只是简单介绍Redis 单节点模式步骤。

Redis 单节点部署

        Redis 下载连接:https://download.redis.io/releases/

        安装redis 依赖包

yum -y install gcc gcc- c++ make openssl-devel
yum -y install centos-release-scl 
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils 

        Redis 从版本6.2.0开始支持TLS,所以这里我用的是版本6.2.0来部署redis

        使用wget 下载并上传到/data/app/pats_opts 并编译安装

cd /data/app/pats_opts
wget https://download.redis.io/releases/redis-6.2.0.tar.gz
tar -zxvf redis-6.2.0.tar.gz 
cd redis-6.2.0
make MALLOC=libc BUILD_TLS=yes  #此处开启tls ,不开启的话就不支持tls功能

        编辑 redis.conf 配置文件

#vim redis.conf
    
    bind 0.0.0.0    
    protected-mode no
    daemonize yes
    pidfile /data/app/pats_opts/redis-6.2.0/pid/redis.pid
    logfile "/data/app/pats_opts/redis-6.2.0/log/redis.log"
    requirepass 123456
    appendonly yes
    appendfilename "appendonly.aof"

#配置结束后报错退出,然后启动redis 服务
#启动redis 命令:
    cd /data/app/pats_opts/redis-6.2.0
    ./src/redis-server redis.conf
    

            到这里redis 单节点模式就配置好了。

Redis TLS 配置及客户端配置案例

        从Redis 6.2.0版本就开始支持TLS,所以在下载的redis 源码包中有生产TLS证书的文件,直接使用即可

cd /data/app/pats_opts/redis-6.2.0/utils/
./gen-test-certs.sh 

#直接这样执行即可生成TLS证书,证书默认有效期是1年,在开发测试环境中如果嫌时间段,可以在gen-test-certs.sh 中手动修改证书有效期时间

 

        证书路径/data/app/pats_opts/redis-6.2.0/utils/tests/tls

        

        证书配置

#将证书从默认路径中复制到指定的tls文件夹下面
    cd /data/app/pats_opts/redis-6.2.0
    mkdir certs  
    cp utils/tests/tls/*  certs/

#redis.conf 增加tls配置
    port 0
    tls-port 6379
    tls-cert-file /data/app/pats_opts/redis-6.2.0/certs/redis.crt 
    tls-key-file  /data/app/pats_opts/redis-6.2.0/certs/redis.key
    tls-dh-params-file /data/app/pats_opts/redis-6.2.0/certs/redis.dh
    tls-ca-cert-file /data/app/pats_opts/redis-6.2.0/certs/ca.crt
    masterauth "123456"

        证书配置后 重启redis 即可

        客户端证书格式转换:redis客户端和java 程序 

#生成redis 客户端使用的证书格式
cd /data/app/pats_opts/redis-6.2.0/certs
openssl x509 -in ca.crt -out ca.pem -outform PE
openssl x509 -in redis.crt -out redis.pem -outform PE
openssl rsa -in ca.key -out ca_key.pem
openssl rsa -in redis.key -out redis_key.pem

#生成java程序使用的证书格式

openssl pkcs12 -export -in redis.crt -inkey redis.key -out redis_key_store.p12 -passout pass:123456
keytool -import -file ca.crt -alias redis-ca -keystore truststore.jks -storepass 123456

#密码-storepass 自行定义

客户端配置案例

        java程序配置案例:

spring.redis.keyStoreFile=/data/app/ssl/redis_key_store.p12
spring.redis.keyStorePassword=123456
spring.redis.trustStoreFile=/data/app/ssl/truststore.jks
spring.redis.trustStorePassword=123456

 Redis ACL 配置

        大家在用redis时不知道有没有发现,在连接时只需要输入密码即可,不需要输入用户名。在生产安全扫描时,这种情况是不符合的。

        Redis 默认user是default,在不填写时,默认就是default,所以只需要输入密码即可。

        下面的操作是需要禁用default,手动新增登录信息:user and password

#编辑redis.conf,在配置文件最后面加上如下代码

user default off   #禁用默认用户                 
user redisuser on >123456 ~* +@all     #新增用户名:redisuser 密码:123456

#下面还有一种配置方式,不推荐,有点混乱。如下所示

requirepass    oldpass
user default    on >newpass ~* +@all
user redisuser   on >app_pass ~* +@all

#上面配置的有三个认证方式都能登录成功。
#auth oldpass    是默认的认证方式,针对的是默认的default
#auth newpass    是acl新定义的方式
#auth app_pass   是自定义的用户和密码

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐