文章目录

  • Redis介绍与安装
  • 一、简介
  • 二、安装
  • 1.编译安装
  • 2.容器安装
  • 1)创建部署清单
  • 2)创建Service
  • 3.使用systemctl管理redis
  • 1)编写System管理文件
  • 2)启动
  • 3)添加到环境变量
  • 4.设置redis密码
  • 5.测试登录
  • 6.解决中文乱码的问题

Redis介绍与安装

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

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

redis是关系型数据库吗 redis是数据库还是中间件_服务器

redis是关系型数据库吗 redis是数据库还是中间件_Redis_02

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gCY69Ify-1620183268872)(C:%5CUsers%5C%E7%A7%8B%E9%A3%8E%E3%80%81%E4%BA%A6%E5%86%B7%5CAppData%5CRoaming%5CTypora%5Ctypora-user-images%5Cimage-20210429154137944.png)]

redis是关系型数据库吗 redis是数据库还是中间件_redis_03

测试结果:

  • Memcached:多核的缓存服务,更加适合于多用户并发访问次数(访问次数较少的应用场景)
  • 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
张三