概述
目录
部署Redis服务
NoSQL概述
数据库类型
RDBMS
RDBMS软件
NoSQL
NoSQL软件
部署Redis服务
部署Redis服务
Redis介绍
安装软件
初始配置
管理服务
连接服务
常用命令
配置文件解析
配置分类
数据单位
常用配置
内存管理
设置连接
服务管理脚本
测试配置
部署Redis服务
NoSQL概述
数据库类型
RDBMS
-
关系型数据库管理系统
—— Relational Database Management System
—— 按照预先设置的组织结构(建库,建表),将数据存储到物理介质(硬盘)上
—— 数据之间可以做关联操作(外键)
RDBMS软件
-
主流的RDBMS软件
—— MySQL
—— MariaDB
—— Oracle
—— DB2
—— SQL Server
NoSQL
-
NoSQL(NoSQL = Not Only SQL)
—— 意思是“不仅仅是SQL”
—— 泛指非关系型数据库
—— 不需要预先定义数据存储结构(不需预先建表、建库)
—— 每条记录可以有不同的数据类型和字段个数
NoSQL软件
-
主流软件
—— Memcached
—— Redis
—— MongoDB
—— CouchDB
—— Neo4j
—— FlockDB
//Redis 和 Memcached 都是把数据存储在内存中,Redis相比于Memcached优点在于,Redis会把数据先放在内存里,服务在运行过程中定期的将内存数据存储到硬盘中。
部署Redis服务
部署Redis服务
Redis介绍
-
Remote Dictionary Server(远程字典服务器)
—— 是一款高性能的(Key/Values)分布式内存数据库
—— 支持数据持久化(定期把内存里的数据存储到硬盘)
—— 支持多种数据类型string、list、hash ... ...
—— 支持 master-slave 模式数据备份
—— 中文网站 www.redis.cn
安装软件
-
源码编译安装
—— Redis-4.0.11下载地址:http://www.redis.cn/download.html
将下载好的软件包上传到操作系统中:
[root@host50 ~]# ls /root
[root@host50 ~]# rpm -q gcc //源码安装需要使用编译软件gcc
gcc-4.8.5-44.el7.x86_64
[root@host50 ~]# yum -y install gcc //若没有安装gcc,请安装gcc
[root@host50 ~]# tar -zxvf redis-4.0.11.tar.gz
[root@host50 ~]# cd redis-4.0.11
[root@host50 redis-4.0.11]# make
[root@host50 redis-4.0.11]# make install
主机192.168.233.51也需要安装redis服务,操作步骤和上面一样。
初始配置
-
配置服务运行参数
—— ]# ./utils/install_serversh //初始化(使用默认初始化配置)
—— 端口 ---> 6379
—— 主配置文件 /etc/redis/6379.conf
—— 日志文件 /var/log/redis_6379.log
—— 数据库目录 /var/lib/redis/6379
—— 服务启动程序 /usr/local/bin/redis-server
—— 命令行连接命令 /usr/local/bin/redis-cli
[root@host50 redis-4.0.11]# ./utils/install_server.sh //使用默认初始化配置,全部选项都按回车
//如图所示,我们可以看见初始化配置参数。安装完成后Redis服务会自动开启
[root@host50 redis-4.0.11]# netstat -lntup | grep 6379 //查看服务是否运行
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 36969/redis-server
//Redis服务默认使用的地址是127.0.0.1,说明此服务只接收本机的访问。
[root@host50 redis-4.0.11]# ls /etc/redis/6379.conf //查看主配置文件
/etc/redis/6379.conf
[root@host50 redis-4.0.11]# ls /var/lib/redis/6379 //查看数据库目录,没有输出结果,数据库目录为空,因为还没有存储数据
[root@host50 redis-4.0.11]# ls /var/log/redis_6379.log //查看日志文件
/var/log/redis_6379.log
[root@host50 redis-4.0.11]# ls /usr/local/bin/ //查看与redis服务相关的命令
管理服务
-
相关命令
—— ]# /etc/init.d/redis_6379 stop //停止服务
—— ]# /etc/init.d/redis_6379 start //启动服务
—— ]# /etc/init.d/redis_6379 status //查看服务状态
—— ]# ps -C redis-server //查看进程
—— ]# netstat -lntup | grep 6379 //查看端口
[root@host50 ~]# ls /etc/init.d/redis_6379 //调用这个脚本文件来启动或停止服务
/etc/init.d/redis_6379
[root@host50 ~]# /etc/init.d/redis_6379 stop //停止服务
Stopping ...
Redis stopped
[root@host50 ~]# netstat -lntup | grep 6379 //没有监听的端口,说明服务已经停止
[root@host50 ~]# /etc/init.d/redis_6379 start //启动服务
Starting Redis server...
[root@host50 ~]# netstat -lntup | grep 6379
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 37820/redis-server
[root@host50 ~]# /etc/init.d/redis_6379 status //查看服务状态
Redis is running (37820)
连接服务
-
访问redis服务
—— redis-cli 默认连接本机的redis服务
[root@host50 ~]# redis-cli //连接redis服务
127.0.0.1:6379> ping //ping一下redis服务,输出结果显示PONG说明连接正常
PONG
127.0.0.1:6379> set name bob //存数据,目前存储在本机的内存中,会定期存储到硬盘里
OK
127.0.0.1:6379> get name //取数据
"bob"
127.0.0.1:6379> exit //断开连接
[root@host50 ~]# ls /var/lib/redis/6379/ //dump.rdb是硬盘里的数据,用来保存内存里数据的文件
dump.rdb
[root@host50 ~]# redis-cli
127.0.0.1:6379> get age //取数据时,如果输出结果显示(nil),说明服务器上没有这个变量
(nil)
127.0.0.1:6379> get name //如果有这个变量,就会返回这个变量的值
"bob"
127.0.0.1:6379> keys * //查看服务器上所有已存储的变量
1) "name"
常用命令
—— set key名 key值 //存储1个key值
—— mset key名列表 //存储多个key值
—— get key名 //获取key值
—— mget //获取多个key值
—— select 数据库编号0-15 //切换库
—— keys * //显示所有key名
—— keys a? //显示指定key名
—— exists key名 //测试key名是否存在
—— ttl key名 //查看key生存时间
—— type key名 //查看key类型
—— move key名 库编号 //移动key到指定库
—— expire key名 数字 //设置key在内存里有效时间
—— del key名 //删除指定的key
—— flushall //删除内存里所有key
—— flushdb //删除当前所在库的所有key
—— save //保存所有key到硬盘
—— shutdown //停止服务
-
mset key名列表 //存储多个key值
127.0.0.1:6379> mset x 1 y 2 z 3
127.0.0.1:6379> keys *
1) "name"
2) "x"
3) "y"
4) "z"
-
mget //获取多个key值
127.0.0.1:6379> mget x y name z
1) "1"
2) "2"
3) "bob"
4) "3"
-
select 数据库编号0-15 //切换库
—— 默认一共有16个库,当面默认是在0号库中
127.0.0.1:6379> select 16 //数据库编号只有0-15,输入以外的编号会报错,报错意思是索引超出了范围
(error) ERR DB index is out of range
127.0.0.1:6379> select 1 //切换到1号库
OK
127.0.0.1:6379[1]> // 切换到2号库
127.0.0.1:6379[1]> select 2
OK
127.0.0.1:6379[2]>
//如图所示,切换到几号库,前面就会显示库的编号,0号库不显示库的编号
-
keys a? //显示指定key名
—— ?是通配符,表示任意一个字符
127.0.0.1:6379> keys ? //查看1个字符的变量
1) "x"
2) "y"
3) "z"
127.0.0.1:6379> keys ???? //查看4个字符的变量
1) "name"
127.0.0.1:6379> keys n??? //查看一共有4个字符的变量,且变量名要以n开头
1) "name"
-
exists key名 //测试key名是否存在
127.0.0.1:6379> get y //此时变量y已经存在
"2"
127.0.0.1:6379> set y 200 //再次给变量y赋值
OK
127.0.0.1:6379> get y //y会被覆盖赋值,原来的值就不在了,变为新存储的值
"200"
127.0.0.1:6379> exists i //查看变量i是否已存在,输出结果是0表示不存在
(integer) 0
127.0.0.1:6379> exists y //查看变量y是否已存在,输出结果是1表示存在
(integer) 1
-
ttl key名 //查看key生存时间
—— 查看变量还能在内存里存多长时间,默认情况下我们存储变量时不会定义生存时间,即永不过期,只要不手动删除这个变量,这个变量就会一直存储在内存中。
127.0.0.1:6379> ttl y //查看变量y的生存时间,返回值为-1表示变量y永不过期
(integer) -1
-
expire key名 数字 //设置key在内存里有效时间
—— 设置key在内存里有效时间,即可以在内存里存多久,到时后会自动删除key
127.0.0.1:6379> expire y 20 //设置变量y,过期时间单位是秒,即20秒之后过期,过期后会自动把过期的变量删除
(integer) 1 //返回值为1表示设置成功
127.0.0.1:6379> ttl y //查看变量y的生存时间,过期时间还剩7秒
(integer) 7
127.0.0.1:6379> ttl y //查看变量y的生存时间,返回值为-2表示变量y已经过期了
(integer) -2
127.0.0.1:6379> keys * //查看已有所有变量,没有变量y,说明变量y因为过期已被自动删除
1) "name"
2) "x"
3) "z"
-
type key名 //查看key类型
—— 查看变量类型,默认情况下,用 set/mset 命令存储的变量类型都是字符型
127.0.0.1:6379> set f 99 //使用 set 命令存储变量 f
OK
127.0.0.1:6379> type f //查看变量 f 的类型为string,即字符型
string
127.0.0.1:6379> mset age 21 //使用 mset 命令存储变量 age
OK
127.0.0.1:6379> type age //查看变量 age 的类型为string,即字符型,即使赋的值是数字,也是字符型
string
127.0.0.1:6379> lpush xxx a b c //使用 lpush 命令存储变量 xxx
(integer) 3
127.0.0.1:6379> type xxx //查看变量 xxx 的类型为list,即列表型
list
-
del key名 //删除指定的key,一次删一个
127.0.0.1:6379> keys *
1) "age"
2) "name"
3) "f"
4) "xxx"
5) "x"
6) "z"
127.0.0.1:6379> del xxx //删除变量xxx,返回值为1说明删除成功
(integer) 1
127.0.0.1:6379> keys * //查看所有已有变量,没有变量xxx,说明已被删除
1) "age"
2) "name"
3) "f"
4) "x"
5) "z"
-
move key名 库编号 //移动key到指定库
127.0.0.1:6379> keys * //查看当前0号库里所有的变量
1) "age"
2) "name"
3) "f"
4) "x"
5) "z"
127.0.0.1:6379> move x 1 //将变量x从当前库(0号库)移动到1号库中,返回值为1说明移动成功
(integer) 1
127.0.0.1:6379> move z 1 //将变量z从当前库(0号库)移动到1号库中,返回值为1说明移动成功
(integer) 1
127.0.0.1:6379> keys * //查看当前0号库里所有的变量,发现没有变量x和z了
1) "age"
2) "name"
3) "f"
127.0.0.1:6379> select 1 //切换到1号库
OK
127.0.0.1:6379[1]> keys * //查看1号库中的变量,发现有变量x和z
1) "x"
2) "z"
-
flushdb //删除当前所在库的所有key
127.0.0.1:6379[1]> flushdb //删除当前所在库(1号库)的所有变量
OK
127.0.0.1:6379[1]> keys * //1号库中为空,说明1号库里的所有变量已被删除
(empty list or set)
-
flushall //删除内存里所有key,删除所有变量
127.0.0.1:6379[1]> select 0
OK
127.0.0.1:6379> keys * //查看0号库的所有变量
1) "age"
2) "name"
3) "f"
127.0.0.1:6379> flushall //删除内存里所有key,删除所有变量,即删除所有库里的所有变量
OK
127.0.0.1:6379> keys * //查看0号库的发现为空,说明0号库的所有变量已被删除
(empty list or set)
-
save //保存所有key到硬盘
—— 默认情况下,redis服务在运行过程中,定期将内存里的数据存储到硬盘中。管理员可以手动使用save命令,手动将现在的内存数据保存到硬盘里,不等服务按指定时间间隔去存。
-
shutdown //停止服务
—— 效果和使用脚本 /etc/init.d/redis_6379 stop 停止服务一样,都会将数据写入硬盘中。
—— 不管到没到定期存储数据到硬盘的时间,只要停止服务,都会将内存里的数据存储到硬盘。
127.0.0.1:6379> set x 99
OK
127.0.0.1:6379> keys * //此时变量x的数据是存储在内存里面的
1) "x"
127.0.0.1:6379> shutdown //停止服务
not connected> ping //此时服务已停止,还在redis服务的命令行中,连接提示符显示没连接上
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit //退出redis服务命令行
[root@host50 ~]# netstat -lntup | grep 6379 //没有监听接口,说明服务已经停止运行
[root@host50 ~]# /etc/init.d/redis_6379 start //启动服务
Starting Redis server...
[root@host50 ~]# redis-cli
127.0.0.1:6379> keys * //重新启动服务后,依旧可以看见数据,说明变量x的数据已存入硬盘中,且启动服务后,会将硬盘里的数据调到内存中。
1) "x"
配置文件解析
配置分类
-
具体如下
配置项名称 | 说明 |
INCLUDES | 装载配置 |
MODULES | 模块配置 |
NETWORK | 网络配置 |
GENERAL | 常规配置 |
SNAPSHOTTING | 快照配置 |
REPLICATION | 复制配置(主从同步) |
SECURITY | 安全配置 |
CLIENTS | 客户端配置 |
MEMORY MANAGEMENT | 内存管理配置 |
数据单位
-
数据单位
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
#
# units are case insensitive so 1GB 1Gb 1gB are all the same. #意思是数据单位不区分字母大小写
常用配置
—— port 6379 //端口
—— bind 127.0.0.1 //IP地址
—— daemonize yes //守护进程方式运行
—— databases 16 //数据库个数
—— logfile /var/log/redis_6379.log //日志文件
—— maxclients 10000 //并发连接数量
—— dir /var/lib/redis/6379 //数据库目录
注:守护进程方式运行是指服务启动之后,会一直有一个进程在内存里活跃着,等待客户端来连接。
非守护进程方式运行是指服务启动之后,会有一个进程,当长时间没有客户端访问时,进程会进入休眠状态,当有客户端访问时,由另一个服务唤醒处于休眠状态的redis进程,然后再提供服务。
[root@host50 ~]# vim /etc/redis/6379.conf
70 bind 127.0.0.1 //IP地址的配置位于配置文件的第70行
93 port 6379 //端口的配置位于配置文件的第93行
137 daemonize yes //端口的配置位于配置文件的第137行
172 logfile /var/log/redis_6379.log //日志文件的配置位于配置文件的第172行
187 databases 16 //数据库个数的配置位于配置文件的第187行
264 dir /var/lib/redis/6379 //数据库目录的配置位于配置文件的第264行
533 # maxclients 10000 //并发连接数量的配置位于配置文件的第533行
内存管理
-
内存清除策略
—— volatile-lru //最近最少使用(针对设置了TTL的key,即设置了有效期的变量)
—— allkeys-lru //删除最少使用的key(针对所有的key,即所有变量,包括设置与没设置有效期的)
—— allkeys-lfu //从所有key中清除使用频率最少的key
—— volatile-lfu //从所有配置了过期时间的key中清除使用频率最少的key
—— volatile-random //在设置了TTL的key里随机移除
—— allkeys-random //随机移除key,所有的key里进行随机删除
—— volatile-ttl(minor TTL) //移除最近过期的key
—— noeviction //不删除,写满时报错
[root@host50 ~]# vim /etc/redis/6379.conf
//如图所示,配置文件中第565~572是redis服务提供的内存清除策略,在安装软件的过程中,这些内存清除策略的程序也就安装在系统上了,我们只需要修改配置文件调用即可。策略名称 -> 策略解释
-
优化设置
—— maxmemory //最大内存
—— maxmemory-policy //定义使用策略
—— maxmemory-samples //选取key模板的个数(针对 lru 和 ttl 策略)
560 # maxmemory <bytes> //设置redis服务可以使用物理主机多少内存存储数据,必须要带单位。
591 # maxmemory-policy noeviction //在配置文件中第591行,定义了默认使用的策略,默认使用策略是noeviction,即不删除,写满时报错。
602 # maxmemory-samples 5 //删除内存中变量时,参照的标准变量的个数,默认模板个数是5。只对最近最少使用和过期时间这两个策略的变量有效。
设置连接
-
设置密码、ip地址、端口
—— redis服务默认是不需要使用密码登录的
注意:生产环境中redis服务器是内存存储服务器,redis服务器一般不设置连接密码,redis服务的安全应该由linux操作系统来完成,通过系统设置防火墙服务,来允许谁来访问本机的redis服务。
1、设置密码、ip地址、端口
[root@host50 ~]# vim /etc/redis/6379.conf
70 bind 192.168.233.50 //修改配置文件第70行,修改允许连接redis服务的ip地址
93 port 6350 // 修改配置文件第93行,修改redis服务的端口号
501 requirepass 123456 //修改配置文件第501行,去掉注释并设置密码为123456
[root@host50 ~]# /etc/init.d/redis_6379 stop
[root@host50 ~]# /etc/init.d/redis_6379 start //重启服务,使修改的配置生效
[root@host50 ~]# netstat -lntup | grep 6350 //查看监听端口号和允许连接的ip地址
tcp 0 0 192.168.233.50:6350 0.0.0.0:* LISTEN 1046/redis-server 1
2、连接服务
-
-
错误连接方式说明
-
[root@host50 ~]# redis-cli //此命令连接时,默认的连接ip地址是127.0.0.1,默认的端口号是6379,由于修改了连接的ip地址和端口号,所以当不指定这两个参数时,连接请求被拒绝了。
Could not connect to Redis at 127.0.0.1:6379: Connection refused
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@host50 ~]# redis-cli -h 192.168.233.50 -p 6350 //-h指定连接的ip地址,-p指定连接的端口号,设置密码后不使用密码也能登录,但是登陆后不能进行任何操作。
192.168.233.50:6350> keys * //由于没有使用密码登录,所以显示认证错误
(error) NOAUTH Authentication required.
-
-
正确连接方式
-
—— 当修改了redis服务登录的密码、ip地址、端口中的任意一项,之后登录都需要指定修改后的登录的密码、ip地址、端口进行登录。
使用密码登录的方式一:
[root@host50 ~]# redis-cli -h 192.168.233.50 -p 6350 //进入redis服务后,使用密码登录
192.168.233.50:6350> auth 123456 //输入密码
OK
192.168.233.50:6350> exit
使用密码登录的方式二:
[root@host50 ~]# redis-cli -h 192.168.233.50 -p 6350 -a 123456 //使用选项-a指定密码登录,会警告你使用-a选项登录,密码会显示在命令行上不安全,并不是报错。
Warning: Using a password with '-a' option on the command line interface may not be safe.
192.168.233.50:6350>
注:当在配置文件中修改登录密码、ip地址、端口号中的任意一项之后,启动还是可以使用脚本启动服务,但是停止就不能使用脚本停止服务了,即不能使用 /etc/init.d/redis_6379 stop 这种方式停止服务,原因和解决方案如下:
[root@host50 ~]# /etc/init.d/redis_6379 stop
//如图所示,我们停止redis服务的ip地址是127.0.0.1、端口号是6379,由于我们修改了IP地址和端口号,所以使用脚本停止服务会失败。
停止服务的方法一:
192.168.233.50:6350> shutdown //在redis服务的命令行里使用命令 shutdown 停止服务
停止服务的方法二:
[root@host50 ~]# redis-cli -h 192.168.233.50 -p 6350 shutdown //停止服务,在操作系统命令行后面,加shutdown停止服务,注意需要指定修改后的密码、ip地址、端口。
服务管理脚本
-
脚本常见配置(变量)
—— EXEC=/usr/local/bin/redis-server //变量EXEC是启动服务的命令
—— CLIEXEC=/usr/local/bin/redis-cli //变量CLIEXEC是用来连接服务的命令
—— PIDFILE=/var/run/redis_6379.pid //变量PIDFILE是存放redis服务pid号的文件
—— CONF="/etc/redis/6379.conf" //变量CONF是redis服务的主配置文件
—— REDISPORT="6379" //变量REDISPORT是redis服务的默认端口号
[root@host50 ~]# vim /etc/init.d/redis_6379
-
修改redis服务管理脚本
—— ]# vim /etc/init.d/redis_6379
—— 当在配置文件中修改登录密码、ip地址、端口号中的任意一项之后,停止服务就不能使用脚本停止服务了。通过修改脚本,使得修改密码、ip地址、端口后,依旧可以使用脚本停止服务
[root@host50 ~]# vim /etc/init.d/redis_6379
43 $CLIEXEC -h 192.168.233.50 -p 6350 -a 123456 shutdown //将配置文件中的第43行修改成这个样子,需要指定修改后密码、ip地址、端口,该哪一项配置就添加哪一项。
//红圈圈起来的地方是配置文件中需要修改的地方。
[root@host50 ~]# netstat -lntup | grep 6350
tcp 0 0 192.168.233.50:6350 0.0.0.0:* LISTEN 3473/redis-server 1
[root@host50 ~]# /etc/init.d/redis_6379 stop //使用脚本关闭服务,输出结果是警告使用-a选项输入密码不安全,不是报错。
Stopping ...
Warning: Using a password with '-a' option on the command line interface may not be safe.
Waiting for Redis to shutdown ...
Redis stopped
[root@host50 ~]# netstat -lntup | grep 6350 //查看监听端口,没有输出结果说明服务已停止
测试配置
-
测试配置方法
—— 通过主机51连接redis服务器50,并插入数据
—— 查看redis服务器50数据是否插入成功
1、关闭主机50和51的防火墙和SELinux
[root@host50 ~]# systemctl stop firewalld
[root@host50 ~]# setenforce 0
[root@host51 ~]# systemctl stop firewalld
[root@host51 ~]# setenforce 0
2、客户端51连接redis服务器50
主机192.168.233.51:
[root@host51 ~]# redis-cli -h 192.168.233.50 -p 6350 -a 123456
192.168.233.50:6350> keys *
1) "x"
3、客户端51存入数据
主机192.168.233.51:
192.168.233.50:6350> set name bob
OK
192.168.233.50:6350> set age 19
OK
192.168.233.50:6350> set sex boy
OK
192.168.233.50:6350> keys *
1) "x"
2) "name"
3) "sex"
4) "age"
192.168.233.50:6350> exit
4、redis服务器50登录验证客户端51存入的数据
主机192.168.233.50
[root@host50 ~]# redis-cli -h 192.168.233.50 -p 6350 -a 123456
192.168.233.50:6350> keys *
1) "x"
2) "name"
3) "sex"
4) "age"
最后
以上就是故意小懒猪为你收集整理的部署Redis服务部署Redis服务NoSQL概述部署Redis服务的全部内容,希望文章能够帮你解决部署Redis服务部署Redis服务NoSQL概述部署Redis服务所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复