同福

Redis安装笔记【20201001】

介绍

介绍

今天给童鞋们介绍的是Redis数据库,和之前介绍的MySQL不同,Redis是KV型数据库,而MySQL关系型数据库,区别在于Redis是不支持SQL语句操作的,而MySQL是支持SQL语句的。

KV型数据库就是一个Key(键)对应一个Value(值),数据库里存储这成千上万组Key-Value数据,它们之间是独立存在的,没有任何关系。

关系型数据库会有一个一个的Database(数据库),每个Database里会有多张Table(数据表),这些数据表在设计阶段会存在一定的关联,例如:user表和topic表之间就存在这一对多的关系,一个user(用户)可以发布多个topic(主题),通过user的关联键可以在topic表里找出所有这个user发表的topic。这种就称之为关系型数据库,关系型数据库是可以通过复杂的SQL语句进行关联查询的。

基本信息

安装环境

CentOS:CentOS Linux release 7.6.1810 (Core)
Linux:Linux version 3.10.0-1062.el7.x86_64
GCC:gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)

软件版本

redis-4.0.10.tar.gz

准备工作

本地化

如果是新环境,我们需要设置时区以保证时间显示正确

timedatectl set-timezone Asia/Shanghai

安装wget

如果环境里没有wget,通过yum安装一下

yum -y install wget

安装gcc

如果环境里没有编译工具,通过yum安装一下

yum -y install gcc gcc-c++ make

建立环境根目录

mkdir -p /tongfu.net/env/

建立安装包目录并进入

mkdir /packages
cd /packages

安装Redis 4

准备

redis-4.0.10.tar.gz

下载安装包

wget http://download.redis.io/releases/redis-4.0.10.tar.gz

安装redis

tar -xzvf redis-4.0.10.tar.gz
cd redis-4.0.10
make
cd src
make install
mkdir -p /tongfu.net/env/redis-4.0.10/
mkdir -p /tongfu.net/env/redis-4.0.10/bin/
mkdir -p /tongfu.net/env/redis-4.0.10/conf/
cp redis-server /tongfu.net/env/redis-4.0.10/bin/
cp redis-cli /tongfu.net/env/redis-4.0.10/bin/
cd ..
cp redis.conf /tongfu.net/env/redis-4.0.10/conf/
cd ..

建立目录

mkdir /tongfu.net/env/redis-4.0.10/data/
mkdir /tongfu.net/env/redis-4.0.10/logs/

配置文件

修改配置文件为 daemon启动方式

允许通过本地所有IP访问

设置初始密码为 tongfu.net

设置 pidfile 和 logfile

设置数据库目录和文件名称

[root@tfdev packages]# vi /tongfu.net/env/redis-4.0.10/conf/redis.conf

daemonize yes

bind 0.0.0.0

requirepass tongfu.net

pidfile /tongfu.net/env/redis-4.0.10/data/redis.pid

logfile /tongfu.net/env/redis-4.0.10/logs/redis.log

dbfilename dump.rdb

dir /tongfu.net/env/redis-4.0.10/data/

启动脚本

编写启动脚本

[root@tfdev packages]# cat > /tongfu.net/env/redis-4.0.10/bin/redis-start <<EOF
#!/bin/sh

# env
export PATH

# argv
redisroot=/tongfu.net/env/redis-4.0.10

# start
\$redisroot/bin/redis-server \$redisroot/conf/redis.conf
EOF

停止脚本

编写停止脚本

[root@tfdev packages]# cat > /tongfu.net/env/redis-4.0.10/bin/redis-quit <<EOF
#!/bin/sh

# env
export PATH

# argv
redisroot=/tongfu.net/env/redis-4.0.10
pidfile=\$redisroot/data/redis.pid

# quit
pid="\`cat \${pidfile}\`"
if [ "" = "\`ps -ax|awk '{print \$1}'|grep -e "^\${pid}\$"\`" ] ; then
    /bin/rm -f \${pidfile}
else
    /bin/kill \$pid
fi
EOF

授权脚本

chmod 0755 /tongfu.net/env/redis-4.0.10/bin/redis-start
chmod 0755 /tongfu.net/env/redis-4.0.10/bin/redis-quit

自动启动

添加自动启动脚本

[root@tfdev packages]# cat > /lib/systemd/system/redis.service <<EOF
[Unit]
Description=redis
After=network.target

[Service]
Type=forking
PIDFile=/tongfu.net/env/redis-4.0.10/data/redis.pid
ExecStart=/tongfu.net/env/redis-4.0.10/bin/redis-start
ExecStop=/tongfu.net/env/redis-4.0.10/bin/redis-quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
EOF

使用 systemctl 管理 redis 服务

systemctl enable redis # 设置自动启动

systemctl start redis # 启动服务

systemctl stop redis # 停止服务

systemctl restart redis # 重启服务

服务命令添加到系统目录

ln -s /tongfu.net/env/redis-4.0.10/bin/redis-cli /usr/bin/

使用

连接数据库服务器

使用redis-cli连接数据库服务器

[root@tfdev ~]# redis-cli 
127.0.0.1:6379>

验证数据库服务器密码

使用auth命令验证数据库服务器密码

127.0.0.1:6379> auth tongfu.net
OK

普通键

创建键

使用set命令创建一个普通键

127.0.0.1:6379> set tongfunet fuge
OK

查看键

使用get命令查看键的值

127.0.0.1:6379> get tongfunet
"fuge"

删除键

使用del命令删除一个键,下面的(integer)1表示有一个键被删除了,如果没有删除成功就是(integer)0

127.0.0.1:6379> del tongfunet
(integer) 1

有效期

创建带有效期的普通键

使用set命令创建一个普通键,通过expire给它设置一个有效期,在有效期之内键可以访问,过期后键就会被自动删除了

127.0.0.1:6379> set tongfunet fuge
OK
127.0.0.1:6379> expire tongfunet 6
(integer) 1
127.0.0.1:6379> get tongfunet
"fuge"
127.0.0.1:6379> get tongfunet
(nil)
127.0.0.1:6379>

总结

Redis数据库是一种基于纯内存为存储介质的数据库,因此Redis的存取效率的极高的,针对那些访问量巨大的情况,Redis是非常好的解决方案。但是作为NoSQL数据库,它无法应对那些众多模块之间的复杂关系,这个方面MySQL是强项。因此,使用MySQL作为主要数据库引擎,使用Redis作为辅助数据库引擎,这样的搭配成为了一种主流。

当然,如果我们的日访问量在10000以内的话,不使用Redis也是完全可以应付的了了。