如何部署Redis ?

如何部署Redis ?

一:定义

​ Redis(remote dictionary server,远程字典服务)是一个开源的使用ANSI C语言编写、遵守BSD协议,支持网络,可基于内存可持久化的日志型、key-Value的数据库,并提供多种语言的API。它通常被称为结构服务器,因为值(value)可以是字符串(string),哈希(hash),列表(list),集合(sets)和有序集合(sorted sets)等类型。Redis是完全开源免费的,是一个高性能的key-value数据库。

​ Redis 是一个高性能的key-value数据库。,redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用 。Redis支持主从同步,数据可以从主服务器向任意数量的从服务器上同步,从服务器可以是关联其他从服务器的主服务器。

​ Redis 作为基于内存运行的数据库, 缓存是其最常应用的场景之一, 除此之外, Redis
常见应用场景还包括: 获取最新 N 个数据的操作、 排行榜类应用、 计数器应用、 存储关系、
实时分析系统、 日志记录。

二:redis的特点

  • 速度快,因为数据存在内存中。Redis读的数度是110000次/s,写的数度是81000次/s

  • 可用于缓存消息,按key设置过期时间,过期后将会自动删除

  • 丰富的数据类型,redis支持二进制案例的strings,lists,hashes,sets以及ordered sets数据类型操作

  • 持久化数据,可存储对象

  • 支持数据备份、队列、分布式

  • 原子性

  • 缺点: 数据容量收到物理内存的限制,不能用于海量数据的高性能读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上

三:Redis部署

1、实验环境

  • VMware软件,一台centos7虚拟机(192.168.48.128)

  • 官方下载redis软件包,地址:https://redis.io/

2、实验步骤

(1)安装编译工具
[root@localhost ~]# yum install gcc gcc-c++ make -y
(2)挂载redis软件包并解压
[root@localhost ~]# mkdir /abc
[root@localhost ~]# mount.cifs //192.168.0.107/share /abc
[root@localhost ~]# cd /abc
[root@localhost abc]# tar zvxf redis-5.0.7.tar.gz -C /opt
(3)直接进行make,且指定目录并安装

( 因为解压的软件中的配置脚本已经被封装化了,所以直接make )

[root@localhost abc]# cd /opt/redis-5.0.7/
[root@localhost redis-5.0.7]# make
[root@localhost redis-5.0.7]# make PREFIX=/usr/local/redis/ install
[root@redis redis-5.0.7]# cd /usr/local/redis/
[root@redis redis]# ls
bin
[root@redis redis]# cd bin/
[root@redis bin]# ls
redis-benchmark  redis-check-aof  redis-check-rdb  redis-cli  redis-sentinel  redis-server
(4)执行配置文件脚本,并设置
[root@redis bin]# cd /opt/redis-5.0.7/utils/
[root@localhost utils]# ./install_server.sh 

如何部署Redis ?_第1张图片

(5)优化配置,创建软链接便于系统识别
[root@localhost utils]# cd /etc/redis
[root@localhost redis]# ls
6379.conf
[root@localhost redis]# ln -s /usr/local/redis/bin/* /usr/local/bin
[root@localhost redis]# netstat -ntap | grep 6379
tcp        0      0 127.0.0.1:6379          0.0.0.0:*               LISTEN      8761/redis-server 1 
(6)进入redis数据库,设置监听端口,启动服务,redis部署成功
[root@localhost redis]# vim /etc/redis/6379.conf
bind 127.0.0.1 192.168.48.128         ‘70行,添加本地地址’

[root@localhost redis]# /etc/init.d/redis_6379 restart       ‘启动服务’
Stopping ...
Waiting for Redis to shutdown ...
Redis stopped
Starting Redis server...

[root@localhost redis]# redis-cli -h 192.168.48.128 -p 6379      ‘成功登录’
192.168.48.128:6379>exit               ‘退出’
(7)redis压测
[root@localhost redis]# redis-benchmark -h 192.168.48.128 -p 6379 -c 100 -n 100000

如何部署Redis ?_第2张图片

四:Redis基础操作命令

[root@redis utils]# redis-cli -h 192.168.48.128 -p 6379
192.168.48.128:6379> help set	   '查看set命令帮助'

  SET key value [expiration EX seconds|PX milliseconds] [NX|XX]  	'set命令的格式'
  summary: Set the string value of a key
  since: 1.0.0
  group: string
192.168.48.128:6379> set username ab	  '创建键值对(键名:username,值名:ab)'
OK
192.168.48.128:6379> set name ab	  '创建键值对(键名:name,值名:ab)'
OK
192.168.48.128:6379> KEYS *		  '查看所有键'
1) "username"
2) "name"
192.168.48.128:6379> keys n???	  '查看n开头且占4个字节的key'
1) "name"
192.168.48.128:6379> get name	  '查看name键的值'
"ab"
192.168.48.128:6379> EXISTS name	  '查看name是否存在'
(integer) 1
192.168.48.128:6379> del name	  '删除name键'
(integer) 1
192.168.48.128:6379> keys *
1) "username"	     '删除成功'
192.168.48.128:6379> rename username user	  '将username键重命名为user'
OK
192.168.48.128:6379> keys *
1) "user"	   '重命名成功'
192.168.48.128:6379> exit

五:move 命令:将当前数据库的 key 移动到指定数据库中

返回值:移动成功返回 1 ,失败则返回 0 )

[root@redis utils]# redis-cli -h 192.168.48.128 -p 6379	   '连接数据库'
192.168.48.128:6379> keys *	   '默认进入第一个库0'
1) "mylist"
2) "myset:__rand_int__"
3) "counter:__rand_int__"
4) key:__rand_int__"
5) "user"
192.168.48.128:6379> select 11	    '切换至序号为11的数据库'
OK
192.168.48.128:6379[11]> keys *	     '查看所有键'
(empty list or set)
192.168.48.128:6379[11]> select 0	  '切换至序号为0的数据库'
OK
192.168.48.128:6379> move user 11	  '将user键值对移动到第11个库'
(integer) 1
192.168.48.128:6379> select 11   	'切换至序号为11的数据库'
OK 
192.168.48.128:6379[11]> keys *	    '查看所有键'
1) "user"
192.168.48.128:6379[11]> get user	 '查看键值'
"ab"
192.168.48.128:6379[11]> flushdb	 '清空库'‘(生产环境下一般不建议使用)’
OK
192.168.48.128:6379[11]> keys *
(empty list or set)
192.168.48.128:6379[11]> exit	  '退出'

六:Redis持久化

​ Redis是运行在内存中,内存中的数据断电丢失。为了能后重用Redis数据,或者防止系统故障,我们需要将Redis中的数据写入到磁盘空间中,即持久化。

  • 持久化分类

    RDB方式:创建快照的方式获取某一时刻Redis中所有数据的副本

    AOF方式:将执行的写命令写到文件的末尾,以日志的方式来记录数据的变化

(1)RDB持久化

RDB持久化是redis默认的持久化方式,默认文件名为dump.rdb

  • 优缺点

​ 适合大规模的数据恢复;

​ 如果业务对数据完整性和一致性要求不高,RDB是很好的选择;

​ 备份时占用内存。

  • 通过RDB文件恢复数据

​ 将dump.rdb文件拷贝到redis的安装目录的bin目录下,重启redis服务即可

  • 配置RDB持久化
[root@redis 6379]# vim /etc/redis/6379.conf 	'修改配置文件'

如何部署Redis ?_第3张图片

(2)AOF持久化

​ AOF是一个redo log(重做日志),Redis 默认是不开启AOF的;为了弥补 RDB 的不足(数据的不一致性);采用日志的形式来记录每个写操作,并追加到文件中;Redis 重启会根据日志文件的内容将写指令从前到后执行一次以完成数据的恢复工作。

  • 通过AOF文件恢复数据

​ 将appendonly.aof文件拷贝到redis安装目录的bin目录下,重启redis服务即可

  • AOF的重写机制

​ AOF的工作原理是将写的操作追加到文件中,这会导致文件中的冗余会越来越多;
​ 当AOF文件的大小超过所设定的阈值时,Redis就会对AOF文件的内容压缩。

  • AOF的重写原理

​ Redis 会fork 出一条新进程,读取内存中的数据(并没有读取旧文件),并重写到一个临时文件中,最后替换旧的aof文件。

  • 配置AOF持久化
[root@localhost redis]# vim /etc/redis/6379.conf 

如何部署Redis ?_第4张图片

你可能感兴趣的:(Redis)