Redis

Redis学习

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

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

  • 修改网络连接模式

img

  • 修改配置文件

配置文件目录

img

修改后的配置文件:vim ifcfg-ens33

img

(IPADDR 必须是和主机同一网段)

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

img

  1. 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

img

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

img

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

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

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

  1. Redis的常用命令和基础操作

  2. redis简介

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

  1. String 字符串
  2. 哈希
  3. 链表
  4. 集合
  5. zset 有序集合

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

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

优点:

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

缺点

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

常用命令参考:http://doc.redisfans.com/index.html

  1. Redis主从复制

Master 主服务器 slave 从服务器

1.主从复制

  • Master可以拥有多个slave
  • 多个slave可以连接同一个master外,还可以连接到其他的slave
  • 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
  • 提供系统的伸缩性

2.主从复制过程

  • slave与master建立连接,发送sync同步命令
  • master会开启一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
  • 后台完成保存后,就将文件发送给slave
  • slave将此文件保存到硬盘上

3.主从复制配置

  • clone服务器之后修改slave的ip地址
  • 修改配置文件:/usr/local/redis/redis.conf
    • slaveof
    • masterauth

img

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

img

  1. Redis哨兵

有了主从复制的实现以后,我们如果想对主从服务器进行监控,那么在redis2,6以后提供了一个 哨兵 的机制,在2.6版本中的哨兵为1.0版,

并不稳定。2.8版本以后才开始稳定起来。它的作用主要有两点:

  • 监控主数据和从数据库是否正常运行
  • 主数据库出现故障时,可以自动将从数据库转换为主数据库,实现自动切换

实现步骤:

  • 其中一台从服务器配置sentinel.conf
  • copy文件sentinel.conf到/usr/local/redis/中
  • 修改sentinel.conf文件
    • 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
  • 启动sentinel哨兵
    • /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
  • 关闭主服务器查看集群信息
    • /usr/local/redis/bin/redis-cli -h 192.168.31.101 -p 6379 shutdown
  1. Redis事务

使用multid打开事务,然后进行设置,这时设置的数据都会放入到队列保存,最后使用exec执行,对操作依次执行,使用discard方法取消事务

img

redis事务不具备事务回滚机制(当前redis版本4.0.12),只能对操作进行顺序执行。

  1. Redis持久化机制

  2. snapshotting(快照,默认方式)。

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

修改就自动做快照

img

  1. append-only file(aof)的方式。

由于快照方式是在一定时间间隔做一次,所以可能发生redis意外down的情况,就会丢失最后一次快照后的所有修改的数据。使用aof时,redis会将每一个收到的

命令都通过write函数追加到命令中,当redis重新启动时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容,这个文件在bin目录下:appendonly.aof

img

aof不是立即写到硬盘上,可以通过配置文件修改强制写到硬盘中

aof配置:

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

    1. appendfsync always //收到写命令就立即写入到磁盘,效率最慢,但是可以保证完全的持久化(实际中多使用这个)
    2. appendfsync everysec //每秒钟写入磁盘一次,
    3. appendfsync no //完全依赖os 性能最好,但是不能保证完整性
  2. appendfilename “appendonly.aof” //aof文件名称

  3. Redis的发布与订阅

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

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

img

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

img

发布之后监听结果

img

  1. Redis 集群搭建

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

    1. mkdir -p /usr/local/redis/redis-cluster
    2. cd /usr/local/redis/redis-cluster (跳转目录)
    3. mkdir 8001 mkdir 8002 mkdir 8003 mkdir 8004 mkdir 8005 mkdir 8006
  3. 复制修改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 //集群超时时间
  1. 由于Redis集群需要使用ruby命令,所以我们需要安装ruby

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

img

  • 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 //查看版本
  1. 分别启动6个Redis实例,然后检查是否成功

  • /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/800?/redis.conf (依次启动)
  • ps -ef | grep redis (启动完成,查看状态)

img

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

  • ./redis-trib.rb create --replicas 1 192.168.31.101:8001 192.168.31.101:8002 192.168.31.101:8003 192.168.31.101:8004 192.168.31.101:8005 192.168.31.101:8006

img

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

img

  • 连接集群客户端方式
    • ./redis-cli -c -h 192.168.31.101 -p 8001 // -c 表示连接集群
  • 查看集群信息

img

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

img

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值