文章目录
- 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,即存在强烈的数据关系),是对不同于传统的关系型数据库的数据库管理系统的统称。
几种企业中常用的缓存数据库对比测试:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
测试结果:
- 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
张三