Redis-day1-介绍与部署+非交互式批量执行命令

8 篇文章 1 订阅

Redis介绍与安装

  • RedisRedis为缓存数据库(中间件),即泛指非关系型数据库 NoSQL(NoSQL = Not Only SQL),NoSQL用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据)。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。

  • 关系型数据库(RMDB)mysql,sqlite,oracle,即存在强烈的数据关系),是对不同于传统的关系型数据库的数据库管理系统的统称。

几种企业中常用的缓存数据库对比测试:

image-20210429154035269

image-20210429154110565
image-20210429154156244

测试结果:

  • Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)
  • Redis:单核缓存服务,在单节点情况下,更加适合少量用户,多次访问的应用场景

Redis介绍

Redis:

全称:Remote Dictionary Server

Redis是一个开源的数据结构服务器

支持网络、可持久化日志型数据库

支持多数据类型:字符串、列表、集合、有序集合等

优缺点:

优点:

​ 高性能读写、多数据类型支持、数据持久化、高可用架构、自定义虚拟内存、分布式分片集群、单线程读写性能极高

缺点:

​ 不支持多线程读写,相比Memcached会慢

特性:

透明性:

​ 分布式系统对用户是透明的,让用户无需了解就能使用

扩展性:

​ 这也是分布式系统最大的特点,它能根据需求的增加而扩展

横向扩展:使集群整体性能得到线性提升

纵向扩展:扩展单台服务器的性能使集群性能得到提升

可靠性:

​ 分布式系统不允许单点失效的问题存在,若一台服务器挂了,其他服务器可接替工作,具有持续服务的特性

高性能:

​ 分布式设计分布式系统的一个初衷,透明、灵活、且可靠

部署

二进制部署

1.编译安装
# 下载Redis安装包并解压
[root@k8s-master1 ~]# wget https://download.redis.io/releases/redis-6.0.9.tar.gz
[root@k8s-master1 ~]# tar -xf redis-6.0.9.tar.gz 
[root@k8s-master1 ~]# cd redis-6.0.9

# 安装编译工具依赖包,两个yum不要合在一起安装,会报错
[root@k8s-master1 redis]# yum -y install centos-release-scl 
[root@k8s-master1 redis]# yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils

# 编译安装
[root@k8s-master1 redis]# scl enable devtoolset-9 bash
[root@k8s-master1 redis]# make -j
[root@k8s-master1 redis]# make PREFIX=/usr/local/redis install

# 启动Redis
[root@k8s-master1 redis]# /usr/local/redis/bin/redis-server
2.容器安装
1)创建部署清单
kind: Deployment
apiVersion: apps/v1
metadata:
  name: redis-deployment
spec:
  selector:
    matchLabels:
      app: redis
      deploy: redis
  template:
    metadata:
      labels:
        app: redis
        deploy: redis
    spec:
      containers:
        - name: redis
          image: redis:6.0.9
2)创建Service
kind: Service
apiVersion: v1
metadata:
  name: redis-deployment-svc
spec:
  ports:
    - port: 6379
      targetPort: 6379
      name: redis
      protocol: TCP
  selector:
    app: redis
    deploy: redis
  type: NodePort
3.使用systemctl管理redis
1)编写System管理文件
cat > /usr/lib/systemd/system/redis.service << EOF
[Unit]
Description=Redis
After=network.target
 
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
    ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
EOF
2)启动
# 重载配置
[root@k8s-master1 ~]# systemctl daemon-reload

# 先手动启动一下,再用systemctl启动,否则直接用systemctl会卡主
[root@k8s-master1 ~]# /usr/local/redis/bin/redis-server /usr/local/redis/bin/redis.conf
[root@k8s-master1 ~]# pkill -9 redis

# systemctl启动redis
[root@k8s-master1 ~]# systemctl start redis
3)添加到环境变量
方式一:推荐
# Redis
export PATH=$PATH:/usr/local/redis/bin

方式二:
# Redis
export REDIS_HOME=/usr/local/redis
PATH=$PATH:$REDIS_HOME/bin
4.设置redis密码
# 修改配置文件
[root@k8s-master1 ~]# vim /usr/local/redis/bin/redis.conf
requirepass 123

# 重启redis
[root@k8s-master1 ~]# systemctl restart redis
5.测试登录
# 此时定义值是失败的,需要验证密码才可以
[root@k8s-master1 ~]# redis-cli 
127.0.0.1:6379> set a b
(error) NOAUTH Authentication required.

登录后定义值即可成功
# 登录方式1:简单,但密码会暴露在终端
[root@k8s-master1 ~]# redis-cli -a 123
127.0.0.1:6379> set a b
OK

# 登录方式2:
[root@k8s-master1 ~]# redis-cli 
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> set a b
OK
6.解决中文乱码的问题
# 定义一个中文值,获取时会乱码(英文无碍)
127.0.0.1:6379> set name 张三
OK
127.0.0.1:6379> get name
"\xe5\xbc\xa0\xe4\xb8\x89"

# 解决乱码,需在登录时就加入 --raw选项
[root@k8s-master1 ~]# redis-cli --raw
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> get name
张三

Docker方式部署

配置文件
mkdir -p /data/docker-server/redis/{data,conf}
redis.conf

直接copy即可,登录方式:redis-cli -a 123

[root@Centos8 ferry]# cat /data/docker-server/redis/conf/redis.conf
requirepass 123
bind 0.0.0.0
protected-mode no
port 6379
tcp-backlog 511
timeout 0
tcp-keepalive 300
daemonize no
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
logfile "/data/redis.log"
databases 16
always-show-logo yes
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
maxmemory 100mb
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
slave-lazy-flush no
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble no
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events Ex
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
部署
脚本

redis_start.sh

#!/bin/bash
docker run -d \
-p 6379:6379 \
-v /data/docker-server/redis/data:/data \
-v /data/docker-server/redis/conf/users.acl:/usr/local/etc/redis/users.acl \
-v /data/docker-server/redis/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--name redis \
redis:latest redis-server /usr/local/etc/redis/redis.conf
部署
sh redis_start.sh

非交互式执行命令

在命令行直接执行多条命令:将命令写入文件,通过脚本调取执行
需求:
a为业务场景验证码的变量名,会不定期变动,需要每分钟重置为123

/root/scripts/redis_reset_test_user_pwd.txt

创建命令文本

# 选择数据库 db1
SELECT 1
# 设定值
SET a '123'

/root/scripts/redis_reset_test_user_pwd.sh

编写执行脚本

#!/bin/bash
cat /root/scripts/redis_reset_test_user_pwd.txt | redis-cli -h xxx.redis.com -p 6379 -a username:password

加入定时任务

* * * * * /usr/bin/sh /root/scripts/redis_reset_test_user_pwd.sh &>/dev/null

手动查看值

等待1分钟后查看

[root@h156 ~]# redis-cli -h xxx.redis.com -p 6379 -a username:password GET a
"123"
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风お亦冷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值