Redis学习:Redis从安装到卸载

    技术2022-07-10  150

    欢迎大家关注

    程序猿,学习,一直在路上

    1 搭建Linux虚拟机环境(VMware+CentOs7)

    注意事项:配置可访问网络步骤:

    修改配置文件:配置文件目录

    修改后的配置文件:vim ifcfg-ens33(IPADDR 必须是和主机同一网段)

    接下来,我们ping一下百度,试试效果。

    2 Redis的安装

    redis安装包下载

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

    百度网页下载地址:http://download.redis.io/releases/

    安装命令:安装gcc  redis是c语言编写的  yum install gcc-c++

    解压文件:tar -xzvf redis-4.0.12.tar.gz

    如果看着目录名称不顺眼,修改目录名称:mv redis-4.0.12 redis

    编译redis 命令

    1.(跳转目录)cd redis 2.make 3.致命错误:jemalloc/jemalloc.h:没有那个文件或目录 解决方法:make MALLOC=libc 4.其他位置创建存储redis文件目录:mkdir /usr/local/redis 5.安装:make PREFIX=/usr/local/redis/ install 6.移动redis配置文件:cp redis.conf /usr/local/redis/bin 7.编辑redis.config文件:vim /usr/local/redis/redis.config 8.绑定ip:bind 127.0.0.1(如果支持远程访问,需要将此处改为虚拟机ip) 9.开启远程访问:将第70行的bind注释,第90行将protected-mode改为no 10.端口(默认6379):port 6379 11.开启守护线程(后台启动):daemonize yes 指定持久化方式:appendonly no (是否开启AOF) 12.修改redis密码(502行):requirepass redis123 13.指定rdb文件存储路径:dir /usr/local/redis/log 14.启动redis:先跳转到bin目录:cd /usr/local/redis/bin 然后启动:./redis-server redis.conf

    查看是否启动成功:ps -f |grep redis

    若已经调整了绑定ip,cli链接需要调整ip地址

    `$ redis-cli -h host -p port -a password

    -h 服务器地址 -p 端口号 -a 密码`

    3 Redis的常用命令和基础操作

    3.1 redis简介

    Redis是以key-value store存储,data structure service数据结构服务器 。键可以包含:

    String 字符串

    哈希

    链表

    集合

    zset 有序集合

    这些数据都支持push/pop、add/remove及取交集和并集,以及更丰富的操作。redis支持各种不同的方式排序,为了保证效率,数据都缓存在内存中,

    它也可以周期性的把更新的数据写入磁盘或者把修改操作写入追加到文件中。

    优点:对数据高并发读写 对海量数据的高效率存储和访问对数据的可扩展性和高可用性

    ” ★

    缺点:ACID处理非常简单 无法做到太复杂的关系数据库模型

    常用命令参考

    3.2 Redis主从复制

    Master 主服务器  slave 从服务器

    主从复制

    Master 主服务器  slave 从服务器

    多个slave可以连接同一个master外,还可以连接到其他的slave

    主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

    提供系统的伸缩性

    主从复制过程

    slave与master建立连接,发送sync同步命令

    master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存

    后台完成保存后,就将文件发送给slave

    slave将此文件保存到硬盘上

    主从复制配置

    clone服务器之后修改slave的ip地址

    修改配置文件:/usr/local/redis/redis.conf

    使用info查看role角色即可知道主服务或从服务

    3.3 Redis哨兵

    有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2,6以后提供了一个 哨兵 的机制,在2.6版本中的哨兵为1.0版,并不稳定。2.8版本以后才开始稳定起来。它的作用主要有两点:

    监控主数据和从数据库是否正常运行

    主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换

    1.其中一台从服务器配置sentinel.conf 2.copy文件sentinel.conf到/usr/local/redis/中 3.修改sentinel.conf文件

    sentinel.conf文件修改

    1.sentinel|monitor mymaster 192.168.31.102 6379 1 //名称 ip 端口 选举次数 sentinel|down-after-milliseconds mymaster 5000 //默认1s检测一次,这里配置超时5000ms为宕机 sentinel|failover-timeout mymaster 9000000 sentinel|can-failover mymaster yes sentinel|parallel-syncs mymaster 2

    查看哨兵相关信息命令

    /usr/local/redis/bin/redis-server /user/local/redis/sentinel.conf --sentinel &

    关闭主服务器查看集群信息

    /usr/local/redis/bin/redis-cli -h 192.168.31.102 -p 6379 info Sentinel

    3.4.Redis事务

    使用multid打开事务,然后进行设置,这时设置的数据都会放入到队列保存,最后使用exec执行,对操作依次执行,使用discard方法取消事务redis事务不具备事务回滚机制(当前redis版本4.0.12),只能对操作进行顺序执行。

    4.Redis持久化机制

    snapshotting(快照,默认方式)。

    将内存中以快照的方式写入到二进制文件中,默认为dump.rdb,可以通过配置设置自动做快照持久化的方式。我们可以配置redis在n秒内如果超过m个key修改就自动做快照

    append-only file(aof)的方式。

    由于快照方式是在一定时间间隔做一次,所以可能发生redis意外down的情况,就会丢失最后一次快照后的所有修改的数据。使用aof时,redis会将每一个收到的命令都通过write函数追加到命令中,当redis重新启动时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容,这个文件在bin目录下:appendonly.aofaof不是立即写到硬盘上,可以通过配置文件修改强制写到硬盘中。aof配置:

    appendonly yes   //启动aof持久化方式  no为关闭。

    appendfsync always //收到写命令就立即写入到磁盘,效率最慢,但是可以保证完全的持久化(实际中多使用这个)

    appendfsync everysec //每秒钟写入磁盘一次

    appendfsync no //完全依赖os 性能最好,但是不能保证完整性

    appendfilename "appendonly.aof"   //aof文件名称

    5 Redis的发布与订阅

    redis提供了简单的发布订阅功能

    使用subscribe【频道】进行订阅监听

    使用publish【频道】【发布内容】进行发布消息广播

    发布之后监听结果

    6.Redis 集群搭建

    6.1创建文件夹(一台服务器模拟集群环境)

    mkdir -p /usr/local/redis/redis-cluster

    cd /usr/local/redis/redis-cluster (跳转目录)

    mkdir 8001 mkdir 8002 mkdir 8003 mkdir 8004 mkdir 8005 mkdir 8006

    6.2 复制修改redis.confg文件

    复制上面配置好的redis.confg文件到创建的 /usr/local/redis/redis-cluster下的 800?的目录里,一个里面一个,然后进行修改port 800?   //调整每个文件对应的端口号

    bind 192.168.31.101   //尽量改成这个,否则就等着卸载放弃吧

    dir /usr/local/redis/redis-cluster/800?   //指定数据文件存储位置,必须指定不同的位置

    cluster-enabled yes   //开启集群模式

    cluster-config-file nodes800?.conf      这里的800?要和端口号对应

    cluster-node-timeout 15000  //集群超时时间

    6.3 由于Redis集群需要使用ruby命令,所以我们需要安装ruby

    yum install ruby

    yum install rubygems

    gem install redis(安装redis和ruby的接口)如果(gem install redis)没有任何反应或者失败(如下错误:CentOS7 yum库中ruby的版本支持到 2.0.0,但是gem安装redis需要最低是2.3.0,采用rvm来更新ruby),则需要安装rvm命令

    以下为安装rvm 命令

    curl -L get.rvm.io | bash -s stable (安装命令)

    source /etc/profile.d/rvm.sh (加载rvm环境)

    rvm -v (查看rvm版本)

    rvm install 2.3.3 (安装一个redis版本)

    rvm use 2.3.3 --default //设置默认版本

    rvm remove 2.0.0 //移除已知版本

    ruby --version //查看版本

    6.4 分别启动6个Redis实例,然后检查是否成功

    /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/800?/redis.conf (依次启动)

    ps -ef | grep redis (启动完成,查看状态)

    6.5首先到redis3.0的安装目录下,然后执行redis-tri.rb命令(配置文件不要设置密码)

    首先到redis3.0的安装目录下,然后执行redis-tri.rb命令(配置文件不要设置密码)

    这里是查看生成的是否是你需要的,如果是,输入yes,然后出现下面的结果

    连接集群客户端方式

    ./redis-cli -c -h 192.168.31.101 -p 8001 // -c 表示连接集群

    查看集群信息

    集群信息解析

    192.168.31.101:800?集群ip端口信息master slave myself 主机,从服务器,自己数字的概念,我们可以想象为一个池子,每一个值得写入都会有一个值按照范围分配到一定的服务器上,而不是一定分配在操作的服务器上

    创作不易,给个关注吧???

    Processed: 0.008, SQL: 9