介绍
介绍
今天给童鞋们介绍的是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也是完全可以应付的了了。