redis

分布式缓存数据库

单节点安装

  • tar -zxvf redis-3.2.9.tar.gz

  • cd /opt/sxt/redis-3.2.9

  • yum -y install gcc tcl (依赖安装)

  • make (在/opt/sxt/redis-3.2.9目录下)

  • make install (目录同上)

  • 修改配置文件:vim redis.conf

    daemonize:yes(后台运行)

    bind 127.0.0.1 192.168.163.201 (配置本机ip)

  • 启动并指定配置:redis-server /opt/sxt/redis-3.2.9/redis.conf

  • 本地启动客户端 redis-cli

  • 关闭进程方法

    ps -ef | grep redis 查找redis的进程号

    kill -9 xxx 杀死进程

命令行

库与key操作

String操作

List操作

Set操作

Sorted set操作

hash操作

主从节点操作

用于从节点的临时操作,使用在程序运行期

  • 外部节点临时成为从节点命令:slaveof 192.168.163.201 6379

    连接到主节点后,原有数据清空,再同步主节点数据

  • 从节点临时解除从属命令:slaveof no one (不会清理掉同步到的数据)

持久化

RDB

  • 对内存保存快照到硬盘 dump.rdb(默认存放在配置文件的目录下)

  • 触发:60s内1w条数据;300s内10条数据;900s内1条数据(配置文件中的save属性)

  • 正常关机会触发rdb,开机时再将快照恢复到内存中

  • 关闭rdb

    临时关闭rdb: 命令 config set save ""

    永久关闭edb:配置文件 save "" ,其他save配置注释

  • 单次触发

    命令sava ,手动触发rdb,阻塞执行

    bgsave,手动触发rdb,后台执行,不触发rdb

  • 可能导致数据丢失

AOF

  • 保存操作日志(aof文件 appendonly.aof),默认存放在配置文件的目录下

  • redis优先使用aof恢复数据,也就是重写执行日志文件(rdb优先级在后)

  • 日志重写时,存在数据丢失的风险

  • redis.conf的参数配置

    1. 设置aof启动:appendonly yes

      优先使用aof持久化(rdb优先级在后)

    2. appendfsync 策略

      • always:实时保存,数据不会丢失,效率差(日志持久化后响应数据存储完成)

      • everysec:1s保存一次日志,默认 (不需要等待日志持久化)

      • no: 将日志数据交给操作系统来处理,数据不安全,速度最快

    3. rewrite 机制

      合并日志文件,对日志文件解析压缩(去除无效数据)

      配置参数

      重写时不支持插入数据:no-appendfsync-on-rewrite no

      扩展倍数:auto-aof-rewrite-percentage 默认100(增加一倍)(到达基准存储大小后扩展日志文件的最大空间,避免重复空间扩展)

      日志基准大小:auto-aof-rewrite-min-size 默认64M (日志文件的初始大小上限,日志文件大小达到基准大小,则启动日志重写)

  • 清空数据 flushall 。若需要恢复数据只能修改aof文件后才能实现

主从复制

主节点执行客户端读写操作,再将数据同步到从节点。从节点一般只执行读操作。

主从复制实现读写分离。

数据后台同步:非阻塞异步复制,1s执行一次 (同步时故障,少量写入的数据丢失)

集群:从节点也能创建其自身的从节点

配置主从节点

  • 复制项目与命令目录

    cd /opt/sxt
    scp -r redis-3.2.9 node2:`pwd`
    scp -r redis-3.2.9 node3:`pwd`
    cd /usr/local/bin
    scp * node2:`pwd`
    scp * node3:`pwd`
  • 修改配置文件

    • 配置本地ip

      bind 127.0.0.1 192.168.163.202

    • 从节点中配置主节点ip和端口(默认端口是6379)

      slaveof 192.168.163.201 6379

  • redis账号密码

    • 主节点配置 requirepass <password>

    • 从节点配置 masterauth <password>

  • 主节点生效条件,满足条件主节点才执行写操作

    最少从节点数 min-slaves-to-write <number of slaves>

    最大延迟 min-slaves-max-lag <number of seconds>

  • 启动主从节点(3节点同时执行)

    redis-server redis.conf

    redis-cli

哨兵sentinel

实时监控主从节点,故障提示,自动故障迁移。

哨兵自动故障迁移时切换的主从关系是永久性的,修改了各节点的配置文件中的主从配置信息

原主机掉线后,重新上线哨兵会修改这个节点的从属配置,其成为一个从节点

哨兵是一个集群,通过投票判断节点离线。

配置哨兵

  1. 进入配置文件

    vim /opt/sxt/redis-3.2.9/sentinel.conf

    • 修改:主从集群名;当前主节点ip和端口 ;断线投票数 (可以配置多个小集群)

      sentinel monitor mymaster 192.168.78.101 6379 2

      通过主节点,哨兵获取从节点与其他哨兵

    • 修改掉线判断时间,默认30s哨兵确认掉线

    • sentinel down-after-milliseconds mymaster 30000

    • 故障迁移时间,超时认为迁移失败

      sentinel failover-timeout mymaster 180000

    • 故障迁移时,几个节点多新的主节点进行数据同步

      sentinel parallel-syncs mymaster 1

    • 关闭保护模式

      protected-mode no

    本次使用自己的配置文件,不是用修改的配置文件

    sentinel monitor mymaster 192.168.163.201 6379 2
    sentinel down-after-milliseconds mymaster 30000
    sentinel failover-timeout mymaster 180000
    sentinel parallel-syncs mymaster 1
    protected-mode no
  2. 将配置文件复制到其他节点中

    scp sentinel.conf node2:/opt/sxt/redis-3.2.9

    scp sentinel.conf node3:/opt/sxt/redis-3.2.9

  3. 启动redis与哨兵(redis目录下)

    redis-server redis.conf

    redis-sentinel sentinel.conf

    在哨兵日志中能够看到哨兵节点与redis节点的连接信息

分布式集群

从3版本开始支持。

原理:根据key计算hash,hash值对指定值(16384)类型取余运算,得到16384个哈希槽,数据进入不同的哈希槽。哈希槽分布在分布式集群的各节点上。

哈希槽的数据能够在后台,在节点之间迁移,不会导致节点阻塞。

哈希槽的迁移能够实现控制节点上下线,自动分配数据。

分布式也支持主从节点复制。

数据一致性问题

  • 同步丢失,主从节点进行数据同步,采用非阻塞复制,1s执行一次 (若同步时故障,少量写入的数据丢失)

  • 集群分裂,且一个客户端与至少包括一个主节点在内的少数(minority)实例被孤立。

    重新连接后,分裂出去的节点同步后失去部分数据。

    集群分裂解决方案:自检发现自己为节点少数方,自动下线,减少数据的丢失

搭建分布式

配置6个配置文件,通过配置文件启动6个节点

配置不同的端口使得有个机器上运行若干redis节点

  1. 配置文件 redis.conf

    • 开启的端口:port 7000

    • 集群可用:cluster-enabled yes

    • 集群配置:cluster-config-file nodes.conf

    • 节点超时:cluster-node-timeout 5000

    • aof持久化:appendonly yes

    • 后台进程:daemonize yes

    • 保护模式关闭protected-mode no

    port 7001
    cluster-enabled yes
    cluster-config-file nodes.conf
    cluster-node-timeout 5000
    appendonly yes
    daemonize yes
    protected-mode no
  2. 将不同的配置文件置入不同文件夹中,使得持久化数据进入不同的目录

    例如:在redis目录下建立cluster文件夹,其中创建7000文件夹与7001文件夹

    7000目录放置7000端口的配置文件;7001目录放置7001端口的配置文件

    本次配置中,3台机器,每台机器上各设置7000端口与7001端口两个redis节点

  3. 启动redis各节点

  4. 安装ruby相关依赖(单节点执行)

    yum install ruby

    yum install rubygems

    gem install redis-3.2.1.gem 使用本地安装redis-3.2.1.gem,在这个文件的路径下执行gem命令

  5. 集群构建

    replicas参数:

    表示主节点分配一个从节点,也就是说6个节点中(3主3从)

    表示主节点分配二个从节点,也就是说6个节点中(2主4从)

    最后接上各节点的ip与端口

    cd /opt/sxt/redis-3.2.9/src 
    ./redis-trib.rb create --replicas 1 192.168.163.201:7000 192.168.163.201:7001 192.168.163.202:7000 192.168.163.202:7001 192.168.163.203:7000 192.168.163.203:7001
  6. 连接集群

    redis-cli -p 7000 -c (指定7000端口连接,允许自动节点切换)

    redis-cli -h node1 -p 7000 -c (指定主机+ip,允许自动节点切换)

  7. 关闭集群

    客户端执行命令shutdown

    或者liunx命令执行节点关闭:redis-cli -p 7001 shutdown

redis的API

大数据-redis的更多相关文章

  1. 入门大数据---Redis集群分布式学习

    Redis是什么? 官方介绍: Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库.缓存和消息中间件. 它支持多种类型的数据结构,如 字符串(strings), 散列( ...

  2. 大数据高性能数据库Redis在Windows上的使用教程

    Redis学习笔记----Redis在windows上的安装配置和使用 Redis简介 redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括s ...

  3. Flume+Kafka+Storm+Redis 大数据在线实时分析

    1.实时处理框架 即从上面的架构中我们可以看出,其由下面的几部分构成: Flume集群 Kafka集群 Storm集群 从构建实时处理系统的角度出发,我们需要做的是,如何让数据在各个不同的集群系统之间 ...

  4. 双汇大数据方案选型:从棘手的InfluxDB+Redis到毫秒级查询的TDengine

    双汇发展多个分厂的能源管控大数据系统主要采用两种技术栈:InfluxDB/Redis和Kafka/Redis/HBase/Flink,对于中小型研发团队来讲,无论是系统搭建,还是实施运维都非常棘手.经 ...

  5. Redis集合解决大数据筛选

    Redis集合:集合是什么,就是一堆确定的数据放在一起,数学上集合有交集.并集的概念,这个就可以用来做大数据的筛选功能. 以商品为例,假如商品有颜色和分类.价格区间等属性. 给所有统一颜色的商品放一个 ...

  6. 大数据学习day31------spark11-------1. Redis的安装和启动,2 redis客户端 3.Redis的数据类型 4. kafka(安装和常用命令)5.kafka java客户端

    1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list ...

  7. [转载]Java程序员使用的20几个大数据工具

    最近我问了很多Java开发人员关于最近12个月内他们使用的是什么大数据工具. 这是一个系列,主题为: 语言web框架应用服务器SQL数据访问工具SQL数据库大数据构建工具云提供商今天我们就要说说大数据 ...

  8. 大数据架构师NoSQL建模技术

    从数据建模的角度对NoSQL家族系统做了比较简单的比较,并简要介绍几种常见建模技术. 1.前言 为了适应大数据应用场景的要求,Hadoop以及NoSQL等与传统企业平台完全不同的新兴架构迅速地崛起.而 ...

  9. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

随机推荐

  1. Python数值运算

    算术运算 a=10 b=2 + 加-两个对象相加 a+b输出结果12 - 减-得到负数或是一个数减去另一个数 a - b输出结果8 * 乘-两个数相乘或是返回一个被重复若干次的字符串 a * b输出结 ...

  2. QFile文件读写

    参考代码 .h文件 #ifndef MYWIDGET_H #define MYWIDGET_H #include <QWidget> #include <QFile> #inc ...

  3. webkit 技术内幕 笔记 三

    浏览器内核及特性 在浏览器中,一个很重要的模块,是将页面转变成可视化的图像结果,这就是浏览器的内核,通常被称作渲染引擎.渲染:就是根据描述或者定义构建数学模型,通过模型生成图像的过程.浏览器的渲染引擎 ...

  4. ubuntu set up 7 - power

    https://askubuntu.com/questions/1078939/ubuntu-18-04-battery-life http://tipsonubuntu.com/2018/11/18 ...

  5. tsocks代理git wget

    使用clash时, 命令行的wget和git操作可能没有被代理 安装tsocks: apt-get install tsocks 修改配置文件: vi /etc/tsocks.conf 找到: ser ...

  6. [CF1303F] Number of Components - 并查集,时间倒流

    有一个 \(n \times m\) 矩阵,初态下全是 \(0\). 如果两个相邻元素(四连通)相等,我们就说它们是连通的,且这种关系可以传递. 有 \(q\) 次操作,每次指定一个位置 \((x_i ...

  7. 深入浅出Mybatis系列一-Mybatis入门

    注:本文转载自南轲梦 注:博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 最近两年 springmvc + mybatis 的在这种搭配还是蛮火的,楼主我呢, ...

  8. 《Python学习手册 第五版》 -第14章 迭代和推导

    承接上一章for循环的讲解,迭代和推导,是对for循环的一种深入的探索和扩展 本章重点内容 1.迭代 1)什么是迭代?都有哪些分类 2)常规的使用方法 3)多遍迭代器VS单遍迭代器 2.列表推导 1) ...

  9. 刷题22. Generate Parentheses

    一.题目说明 这个题目是22. Generate Parentheses,简单来说,输入一个数字n,输出n对匹配的小括号. 简单考虑了一下,n=0,输出"";n=1,输出" ...

  10. kanbanflow的使用

    也许在工作中大家都听说过番茄工作法,就是每次在一个番茄钟25分钟内保持高度专注,并且在时间结束的时候会提醒你,然后稍作休息5分钟:此外,在产品迭代开发过程中常常会接受到不同的task:那么,我们是否可 ...