一、Redis内存数据库

一个key-value存储系统,支持存储的value包括string(字符串)、list(链表)、set(集合)、zset(sorted set--有序集合)和hash(哈希类型)。数据存在缓存中。

与MemCached区别:

(*)支持持久化
(*)丰富的数据类型

(*)实现了主从同步

(*)补偿了key/Value存储的不足
3、Redis的特点
(*)基于内存
(*)持久化: RDB、AOF
(*)消息机制:支持String,只支持Topic的消息(广播)
(*)丰富的数据类型
(*)支持简单的事务
(*)支持主从复制
(*)HA(哨兵): 对版本有要求

二、Redis的安装和配置: 需要gcc的编译器
tar -zxvf redis-3.0.5.tar.gz
make
make PREFIX=/root/training/redis install

(*)Redis的相关命令
redis-benchmark 提供的一个压力测试工具,模拟:10万操作
redis-check-aof 检查AOF日志文件
redis-check-dump 检查RDB快照文件
redis-cli 命令行
redis-sentinel 哨兵(Redis的HA) -----> 配置文件:sentinel.conf
redis-server 服务器

(*)核心的配置文件: redis.conf
42 daemonize yes
50 port 6379

(*)启动: bin/redis-server conf/redis.conf

三、Redis的操作:基于key-value形式
1、命令行: bin/redis-cli
2、JAVA API

四、Redis的事务: 不是真正的事务
1、复习:事务(关系型数据库)
Oracle数据库中,事务的本质是什么? -----> 将事务操作(DML)写入日志
举例: insert
insert
update
commit

2、Redis的事务: 不是真正的事务
Redis的事务的本质:将一组操作放入队列中,批量执行

3、对比Oracle和Redis的事务
                    Oracle                    Redis
开启事务: 自动开启                   multi
操作:         DML                         Redis命令
提交:            commit,隐式提交      exec
回滚:         rollback,隐式回滚     discard

4、举例:银行转账
set tom 1000
set mike 1000
multi
decrby tom 100
incrby mike 100
exec

通过Java API 实现:

package demo;import org.junit.Test;
import org.omg.CORBA.TCKind;import redis.clients.jedis.Jedis;
import redis.clients.jedis.Transaction;public class TestRedis {@Testpublic void testTransaction(){//创建一个客户端Jedis jedis = new Jedis("192.168.153.11", 6379);//定义事务Transaction transaction = null;try {//开启事务transaction = jedis.multi();//转账transaction.decrBy("tom", 100);transaction .incrBy("mike", 100);//提交事务
            transaction.exec();} catch (Exception e) {if (transaction != null) {transaction.discard();}}jedis.disconnect();}
}

5、Redis的锁机制 -----> 核心:当事务提交的时候,如果监控的值,发生变化,则提交失败
命令:watch

举例:买票
set ticket 1
set tom 1000

用户一:tom
multi
decr ticket
decrby tom 100
exec -------> 提交的时候,慢了一点

1) (integer) -1 ====> 票数不可能是-1
2) (integer) 900

用户二:在tom提交前,已经把票买走了(重新开一个窗口)
decr ticket

五、Redis的消息机制
1、消息系统类型:同步消息系统: 需要等待对方的回答
异步消息系统: 不需要等待对方的回答

2、消息的类型:

Queue:队列(点对点)
Topic:主题(广播)

Redis和Kafka:只支持Topic
JMS: Java Message Service ----> 都支持:Queue和Topic
推荐:Weblogic

3、Redis的消息相关的命令:
publish: 发布消息 指定频道
subscribe:订阅消息 指定频道
psubscribe:订阅消息 使用通配符指定频道

也可以使用JAVA API的方式

六、Redis的持久化: RDB(默认)、AOF

1.作用:进行恢复

2.RDB:快照的方式。每隔一段时间,把内存中的数据写到rdb文件中

参数:
规则:从下往上
save 900 1 在15分钟内,如果有1个key的value发生了变化,就产生RDB文件
save 300 10 在5分钟内,如果有10个key的value发生了变化,就产生RDB文件
save 60 10000 在60秒内,如果有1w个key的value发生了变化,就产生RDB文件

stop-writes-on-bgsave-error yes 如果在写RDB文件的时候产生了错误,停止新的数据写入
rdbcompression yes 是否压缩(优点:节约了空间 缺点:恢复的效率低),可以设置为:no
rdbchecksum yes 校验和来检查RDB文件是否是好的
dbfilename dump.rdb 如果在集群下,一台主机上运行多个Redis的实例,建议区别rdb文件
dir ./ 保存的目录

RDB的优缺点?
(*)优点:恢复的速度快
补充:Oracle数据库中的备份:备份集
镜像拷贝(image copy):相当于RDB
(*)缺点:如果在两次RDB之间发生了掉电,数据肯定丢失

3.AOF:通过日志的方式

(*)重做日志,达到恢复的目的
(*)默认:禁用
(*)参数:
appendonly no ===> yes 开启AOF
appendfilename "appendonly.aof" 如果在集群下,一台主机上运行多个Redis的实例,建议区别aof文件

什么时候记录日志???
538 # appendfsync always 每个操作都记录日志。最安全,性能最差
539 appendfsync everysec 默认:每秒
540 # appendfsync no 由操作系统决定

no-appendfsync-on-rewrite no 重写发生的时候,是否写入aof的新日志

什么时候执行AOF重写?
580 auto-aof-rewrite-percentage 100
581 auto-aof-rewrite-min-size 64mb

(*)什么是AOF的重写:rewrite
set i 0
incr i
incr i
======> 问题: AOF文件太大了
100次
****
incr i

最终:i = 100

(*)演示:AOF的重写:合并小日志,生成大的日志
模拟:10万个操作
bin/redis-benchmark -n 100000

七、Redis的集群:主从复制

1、Redis的集群:
(*)主从备份(复制):从主节点上写入数据,从从节点(s)上读取数据。对主节点做一个备份。
(*)读写分离:一般来说,都是读的压力大。分担master的压力。
(*)任务分离

2、两种架构:星型、线型

3、搭建:星型
主节点:关闭RDB和AOF
从节点:开启RDB和AOF
slaveof 主节点地址

三台Redis:端口 6379 6380 6381
主 从1 从2

redis6379.conf
147 #save 900 1
148 #save 300 10
149 #save 60 10000

509 appendonly no

redis6380.conf
50 port 6380
182 dbfilename dump6380.rdb
513 appendfilename "appendonly6380.aof"
211 slaveof 192.168.157.11 6379

redis6381.conf
50 port 6381
182 dbfilename dump6381.rdb
513 appendfilename "appendonly6381.aof"
211 slaveof 192.168.157.11 6379

注意:默认:从节点只读
(error) READONLY You can't write against a read only slave.
修改参数:
slave-read-only yes

# masterauth <master-password> 主从节点密码

4、主从节点通信的过程
主节点 从节点
<------------ 发出同步请求
将RDB同步 ----------->
将AOF同步 -----------> 重做日志

一定注意:每次启动的时候,从节点的个数不能太多

八、Redis的HA:哨兵机制

九、Redis的分片

1、回顾:集群有两大功能
(1)Fail Over 失败迁移:HA -----> Redis 哨兵
(2)Load Balance 负载均衡 ------> Redis 分片
来自多个程序的访问,按照路由规则,转发给后台的各个Redis服务,再原路返回。Redis的分片,解决了单个Redis实例承载能力的问题。
2、nutcracker-0.3.0.tar.gz
./configure --prefix=/root/training/proxy
make
make install

配置文件中,注意空格
alpha:
listen: 127.0.0.1:22121
hash: fnv1a_64
distribution: ketama
auto_eject_hosts: true
redis: true
server_retry_timeout: 2000
server_failure_limit: 1
servers:
- 192.168.157.11:6380:1
- 192.168.157.11:6381:1

3、检查配置文件是否正确
sbin/nutcracker -t conf/nutcracker.yml

 4、启动代理服务器
sbin/nutcracker -d -c conf/nutcracker.yml

转载于:https://www.cnblogs.com/lingluo2017/p/8658745.html

大数据笔记(二十一)——NoSQL数据库之Redis相关推荐

  1. 大数据开发学习:NoSQL数据库入门

    大数据处理,涉及到从数据获取到数据存储.数据计算的诸多环节,各个环节需要解决的问题不同,相关岗位要求的技能也不同.在数据存储阶段,对数据库选型是非常重要的一项工作.今天的大数据开发学习分享,我们就来聊 ...

  2. Linux实战教学笔记45:NoSQL数据库之redis持久化存储(一)

    第1章 redis存储系统 1.1 redis概述 REmote DIctionary Server(Redis)是一个基于key-value键值对的持久化数据库存储系统.redis和大名鼎鼎的Mem ...

  3. 进入hbase shell速度很慢_HBase——大数据平台之分布式NoSQL数据库教程

    1.1 HBase下载:CDH(网站不显示,可以直接下载) http://archive.cloudera.com/cdh5/cdh/5/hbase-1.2.0-cdh5.9.0.tar.gz 1.2 ...

  4. 2021年大数据Hive(十一):Hive调优

    全网最详细的大数据Hive文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Hive调优 一.本地模式 1.空key处理 二.SQL ...

  5. 大数据量高并发的数据库优化(转载)

    对其进行处理是一项艰巨而复杂的任务.原因有以下几个方面: 一.数据量过大,数据中什么情况都可能存在.如果说有10条数据,那么大不了每条去逐一检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千 ...

  6. swiper 滚回第一个数据_大数据是个技术,数据库才是它最好的产品形态

    星环科技(以下简称:星环)的定位是大数据基础软件公司,而非数据库公司,却在数据库方面,做的比很多数据库公司更好更猛?这是为何? "我们认为,大数据是个技术,数据库才是它最好的产品形态&quo ...

  7. 大数据(二)大数据相关的技术

    大数据(二)大数据相关的技术 1. 云技术 大数据常和云计算联系到一起,因为实时的大型数据集分析需要分布式处理框架来向数十.数百或甚至数万的电脑分配工作.可以说,云计算充当了工业革命时期的发动机的角色 ...

  8. 2021年大数据Kafka(十一):❤️Kafka的消费者负载均衡机制和数据积压问题❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的消费者负载均衡机制和数据积压问题 一.kafka ...

  9. 2021年大数据HBase(十一):Apache Phoenix的视图操作

    全网最详细的大数据HBase文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 前言 Apache Phoenix的视图操作 一.应用场景 ...

  10. 好程序员大数据笔记之:Hadoop集群搭建

    好程序员大数据笔记之:Hadoop集群搭建在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天 ...

最新文章

  1. Android Java使用JavaMail API发送和接收邮件的代码示例
  2. “那个工作 10 年没跳槽的人,混不下去了”
  3. [国嵌攻略][139][输入子系统原理分析]
  4. linux kernel的spin_lock的详细介绍(以arm64为例)
  5. js 获取中文的拼音
  6. 三、Appium-python-UI自动化之元素定位uiautomatorviewer
  7. python split()方法_秘籍:10个Python字符串处理技巧(附代码)
  8. JDBC及DBUtils
  9. MariaDB数据库日志
  10. [蓝桥杯][算法提高VIP]数的划分-dp
  11. 《Head First设计模式》读书笔记_第一章
  12. 计算机基础.doc,大学生计算机基础.doc
  13. 李彦宏说互联网思维已过时,AI可以根本上变革交通、城市、农业和医疗
  14. python自学记录 pydev安装
  15. 19.mysql 字符集和校对规则
  16. 实时环境映射贴图技术(Real-time Evironmnet Mapping)
  17. 伺服电机基本概念解析:伺服系统组成及其控制原理
  18. misc 小小小试牛刀
  19. 华硕笔记本安装Ubuntu20.04
  20. Python爬虫 selenium自动化 利用搜狗搜索爬取微信公众号文章信息

热门文章

  1. python各个关键词的意思_想学好Python,你必须了解Python中的35个关键词
  2. Linux启动nacos成功日志_nacos初体验踩坑与填坑篇
  3. 安卓中为什么onkeydown没有相应_为什么今年在园区注册个人独资企业能将企业总税率降低至3%?...
  4. android wifi智能车,STM32智能WiFi视频小车全套资料(带安卓app与stm32源码等)
  5. 后端传输流跨域_Java开发中解决Js的跨域问题过程解析
  6. 2017计算机绘图试题及答案,2017年度__电大(精编新版)计算机绘图期末复习试题及答案参考小抄.doc...
  7. java从hbase增量导出到,Hbase实用技巧:全量+增量数据的迁移方法
  8. java递归删除文件夹_如何使用递归删除Java中的目录/文件夹
  9. 使用Kotlin的Android Toast
  10. Akka查询设备组《fourteen》译