今日内容概要

  • redis 的linux安装和配置
  • redis 的api使用
  • 高级用法之慢查询
  • pipline事务

内容详细

1、redis 的linux安装和配置

  1. # redis 版本选择问题
  2. -最新:7.0
  3. -最稳定版本:6.x
  4. -讲课:5.x
  5. -企业里:3.x4.x5.x 6.x(极少数公司在用)
  6. -windows3.x5.x
  7. # 哪些公司在用
  8. -大部分公司-多多少少都会用到 redis
  9. -99%以上公司项目会用关系型数据库(mysql,postgrasql,oracle,国产数据库:达梦)
  10. -80%公司用redis
  11. -去ioe--->ibm(浪潮,联想) ,oracle(达梦..),emc存储
  12. -通用性东西:网络,数据库,redisnginxdocker...
  13. # 特性
  14. 1 速度快:10w ops(每秒10w读写),数据存在内存中,c语言实现
  15. 2 持久化:rdbaof
  16. 3 多种数据结构:
  17. 五大数据结构
  18. BitMaps位图:布隆过滤器 本质是 字符串
  19. HyperLogLog:超小内存唯一值计数,12kb HyperLogLog 本质是 字符串
  20. GEO:地理信息定位 本质是有序集合--》附近5公里的美女
  21. 4 支持多种编程语言:基于tcp通信协议,各大编程语言都支持,客户端
  22. 5 功能丰富:发布订阅(消息) Lua脚本 事务(pipeline),实现分布式锁---(mysql,redis,zookeeper
  23. 6 简单:源代码几万行,不依赖外部库(源码编译安装---》可执行文件执行)
  24. 7 主从复制:主服务器和从服务器,主服务器可以同步到从服务器中
  25. 8 高可用和分布式:
  26. 2.8版本以后使用redis-sentinel支持高可用
  27. 3.0版本以后支持分布式

1.1 下载安装

  1. ### 1 连接Linux服务器端
  2. wget http://download.redis.io/releases/redis-5.0.7.tar.gz
  3. # 2 解压
  4. tar -xzf redis-5.0.7.tar.gz
  5. # 3 建立软连接
  6. ln -s redis-5.0.7 redis
  7. cd redis
  8. # 文件和文件夹
  9. -Makefile # make,make install的安装依赖文件
  10. -src # c的源代码
  11. -redis.conf # redis的配置文件,启动的时候使用
  12. # 4 编译---可执行文件
  13. make
  14. # 5 安装--》根据config配置---》把可执行文件释放到某个路径,在环境变量中
  15. make install
  16. # 在src目录下可以看到
  17. redis-server--->redis服务器
  18. redis-cli---》redis命令行客户端
  19. redis-benchmark---》redis性能测试工具
  20. redis-check-aof--->aof文件修复工具
  21. redis-check-dump---》rdb文件检查工具
  22. redis-sentinel---》sentinel服务器,哨兵
  23. redis作者对windows维护不好,window自己有安装包
  24. # 卸载 ---卸载redis
  25. # 1、查看redis进程;
  26. ps aux|grep redis
  27. # 2、kill掉进程;
  28. kill 进程id
  29. # 3、进入到redis目录
  30. cd /root/s20(安装路径)
  31. # 4、删除redis对应的文件
  32. rm -f /usr/local/redis/bin/redis*
  33. rm -f /usr/local/bin/redis*
  34. # 5、删除对应的文件
  35. rm -rf redis

1.2 三种启动方式

  1. # 只要在环境变量的某个路径下,在任意位置敲,都能找到
  2. 默认的 /usr/bin /usr/local/bin
  3. # 最简启动, cd 来到redis路径下
  4. ./src/redis-server
  5. ps -ef|grep redis # 查看进程
  6. netstat -antpl|grep redis # 查看端口
  7. redis-cli -h ip -p port ping # 命令查看
  8. redis-cli -h 127.0.0.1 -p 6379
  9. # 动态参数启动
  10. redis-serve --port 6380 #启动,监听6380端口
  11. # 常用:配置文件启动---》100来对配置文件
  12. # redis 的目录下
  13. vim redis.conf
  14. daemonize yes
  15. pidfile /var/run/redis.pid
  16. port 6379
  17. dir "/root/s20/redis/data"
  18. logfile 6379.log
  19. # 启动
  20. mkdir data
  21. redis-server ./redis.conf

1.3 客户端连接

  1. # 无密码情况
  2. redis-cli -p 端口 -h 地址
  3. # 有密码情况
  4. redis-cli -h 127.0.0.1 -p 6370 -a 123456
  5. # 查看redis的配置信息
  6. config get port
  7. config get * # 100多对
  8. # 修改配置文件---》有漏洞--》可以利用这个漏洞,提权,以root用户登录到你的redis服务器上
  9. config set maxmemory 128M # 设置最大使用的内存
  10. config set requirepass 123456 # 设置密码,如果没执行下面,在内存中,只要redis服务不重启,就一直生效,但是咱们下写到配置文件中
  11. config REWRITE # 保存到配置文件,重启redis,密码也在
  12. # 进入到链接后,再输密码
  13. redis-cli -p 端口 -h 地址
  14. auth 123456
  15. # 登陆的同时输入密码
  16. redis-cli -h 127.0.0.1 -p 6370 -a 123456

1.4 使用场景

  1. # 缓存系统:使用最广泛的就是缓存--->
  2. 做缓存,接口缓存
  3. # 计数器:
  4. 网站访问量,转发量,评论数(文章转发,商品销量,不会出现并发问题)
  5. # 消息队列:
  6. 发布订阅,阻塞队列实现(简单的分布式,blpop:阻塞队列,生产者消费者)
  7. # 排行榜:
  8. 有序集合(阅读排行,点赞排行,推荐(销量高的,推荐)) 有序集合
  9. # 社交网络:
  10. 很多特效跟社交网络匹配,粉丝数,关注数 集合
  11. # 实时系统:
  12. 垃圾邮件处理系统,布隆过滤器

2、redis 的api使用

2.1 通用命令

  1. # 衡量算法好坏的指标,大 O 表示法
  2. -空间复杂度(占多大内存),时间复杂(耗费多长时间)
  3. -O(1),O(log n),O(n),O(n方)
  4. # 1、keys
  5. 打印出所有key
  6. keys *
  7. 打印出所有以he开头的key
  8. keys he*
  9. 打印出所有以he开头,第三个字母是hl的范围
  10. keys he[h-l]
  11. 三位长度,以he开头,?表示任意一位
  12. keys he
  13. keys命令一般不在生产环境中使用,生产环境key很多,时间复杂度为 o(n),用scan命令
  14. # 2、dbsize 计算key的总数
  15. dbsize # redis内置了计数器,插入删除值该计数器会更改,所以可以在生产环境使用,时间复杂度是o(1)
  16. #3、exists key 时间复杂度o(1)
  17. 设置a
  18. set a b
  19. 查看a是否存在
  20. exists a
  21. (integer) 1
  22. 存在返回1 不存在返回0
  23. # 4、del key 时间复杂度o(1)
  24. 删除成功返回1key不存在返回0
  25. # 5、expire key seconds 时间复杂度o(1)
  26. expire name 3 # 3s 过期
  27. ttl name # 查看name还有多长时间过期
  28. persist name # 去掉name的过期时间
  29. # 6、type key 时间复杂度o(1)
  30. type name # 查看name类型,返回string
  31. # 7、其他-->系统相关
  32. info 命令:内存,cpu,主从相关--->django写一个redis服务监控--》折线图,饼形图
  33. subprocess---》redis-cli -a 123456 info---》字符串---》
  34. client list 正在连接的会话
  35. client kill ip:端口
  36. client kill 127.0.0.1:40704
  37. dbsize # 总共有多少个key
  38. flushall # 清空所有
  39. flushdb # 只清空当前库 16 个库
  40. select 数字 # 选择某个库 总共16个库 默认在第0个
  41. monitor # 记录操作日志,夯住

注意:

  1. # 一个次只会执行一条命令
  2. # 为什么这么快?
  3. 1 纯内存
  4. 2 非阻塞IO epoll),自身实现了事件处理,不在网络io上浪费过多时间
  5. # 注意:
  6. 1 一次只运行一条命令
  7. 2 拒绝长慢命令
  8. -keysflushall,flushdb,慢的lua脚本,mutil/execoperatebig value
  9. 3 其实不是单线程(在做持久化是另外的线程)

2.2 字符串操作

  1. ### 1---基本使用get,set,del
  2. get name # 时间复杂度 o(1)
  3. set name lqz # 时间复杂度 o(1)
  4. del name # 时间复杂度 o(1)
  5. ### 2---其他使用incr,decr,incrby,decrby
  6. incr age # 对age这个key的value值自增1
  7. decr age # 对age这个key的value值自减1
  8. incrby age 10 # 对age这个key的value值增加10
  9. decrby age 10 # 对age这个key的value值减10
  10. 统计网站访问量(单线程无竞争,天然适合做计数器)
  11. 缓存mysql的信息(json格式)
  12. ### 3---set,setnx,setxx
  13. set name lqz # 不管key是否存在,都设置
  14. setnx name lqz # key不存在时才设置(新增操作)
  15. set name lqz nx # 同上
  16. set name lqz xx # key存在,才设置(更新操作)
  17. ### 4---mget mset
  18. mget key1 key2 key3 # 批量获取key1,key2.。。时间复杂度o(n)
  19. mset key1 value1 key2 value2 key3 value3 # 批量设置时间复杂度o(n)
  20. ngetmget的区别:
  21. nget时间=n次命令时间+n次网络时间
  22. mget时间=1次网络时间+n次命令时间
  23. ### 5---其他:getset,append,strlen
  24. getset name lqznb # 设置新值并返回旧值 时间复杂度o(1)
  25. append name 666 # 将value追加到旧的value 时间复杂度o(1)
  26. strlen name # 计算字符串长度,字节(注意中文,3个字节) 时间复杂度o(1)
  27. ### 6---其他:incrybyfloat,getrange,setrange
  28. increbyfloat age 3.5 # 为age自增3.5,传负值表示自减 时间复杂度o(1)
  29. getrange key start end # 获取字符串制定下标所有的值 时间复杂度o(1)
  30. setrange key index value # 从指定index开始设置value值 时间复杂度o(1)

2.3 哈希hash 类型

  1. # 只支持一层
  2. info {name:lqz,age:19,hobby:字符串}
  3. ### 1---hget,hset,hdel
  4. hget key field # 获取hash key对应的field的value 时间复杂度为 o(1)
  5. hset key field value # 设置hash key对应的field的value值 时间复杂度为 o(1)
  6. hdel key field # 删除hash key对应的field的值 时间复杂度为 o(1)
  7. # 测试
  8. hset user:1:info age 23
  9. hget user:1:info ag
  10. hset user:1:info name lqz
  11. hgetall user:1:info
  12. hdel user:1:info age
  13. ### 2---hexists,hlen
  14. hexists key field # 判断hash key 是否存在field 时间复杂度为 o(1)
  15. hlen key # 获取hash key field的数量 时间复杂度为 o(1)
  16. hexists user:1:info name
  17. hlen user:1:info # 返回数量
  18. ### 3---hmget,hmset
  19. hmget key field1 field2 ...fieldN # 批量获取hash key 的一批field对应的值 时间复杂度是o(n)
  20. hmset key field1 value1 field2 value2 # 批量设置hash key的一批field value 时间复杂度是o(n)
  21. ### 4--hgetall,hvals,hkeys
  22. hgetall key # 返回hash key 对应的所有field和value 时间复杂度是o(n)
  23. hvals key # 返回hash key 对应的所有field的value 时间复杂度是o(n)
  24. hkeys key # 返回hash key对应的所有field 时间复杂度是o(n)
  25. ### 小心使用 hgetall
  26. ## 1 计算网站每个用户主页的访问量
  27. hincrby user:1:info pageview count
  28. ## 2 缓存mysql的信息,直接设置hash格式-->
  29. 建议用字符串,json形式存
  30. ## 其他操作 hsetnx,hincrby,hincrbyfloat
  31. hsetnx key field value # 设置hash key对应field的value(如果field已存在,则失败),时间复杂度o(1)
  32. hincrby key field intCounter # hash key 对英的field的value自增intCounter 时间复杂度o(1)
  33. hincrbyfloat key field floatCounter # hincrby 浮点数 时间复杂度o(1)

2.4 列表

  1. # 有序队列,可以从左侧添加,右侧添加,可以重复,可以从左右两边弹出
  2. # 插入操作
  3. rpush 从右侧插入
  4. rpush key value1 value2 ...valueN # 时间复杂度为o(1~n)
  5. lpush 从左侧插入
  6. # linsert
  7. linsert key before|after value newValue # 从元素value的前或后插入newValue 时间复杂度o(n) ,需要遍历列表
  8. linsert listkey before b java
  9. linsert listkey after b php
  10. # 删除操作
  11. lpop key # 从列表左侧弹出一个item 时间复杂度o(1)
  12. rpop key # 从列表右侧弹出一个item 时间复杂度o(1)
  13. lrem key count value
  14. # 根据count值,从列表中删除所有value相同的项 时间复杂度o(n)
  15. 1 count>0 从左到右,删除最多countvalue相等的项
  16. 2 count<0 从右向左,删除最多 Math.abs(count)个value相等的项
  17. 3 count=0 删除所有value相等的项
  18. lrem listkey 0 a # 删除列表中所有值a
  19. lrem listkey -1 c # 从右侧删除1个c
  20. ltrim key start end # 按照索引范围修剪列表 o(n)
  21. ltrim listkey 1 4 # 只保留下表1--4的元素
  22. # 查询
  23. lrange key start end # 包含end获取列表指定索引范围所有item o(n)
  24. lrange listkey 0 2
  25. lrange listkey 1 -1 # 获取第一个位置到倒数第一个位置的元素
  26. lindex key index # 获取列表指定索引的item o(n)
  27. lindex listkey 0
  28. lindex listkey -1
  29. llen key #获取列表长度
  30. # 修改
  31. lset key index newValue # 设置列表指定索引值为newValue o(n)
  32. lset listkey 2 ppp # 把第二个位置设为ppp
  33. # 其它
  34. blpop key timeout # lpop的阻塞版,timeout是阻塞超时时间,timeout=0为拥有不阻塞 o(1)
  35. brpop key timeout # rpop的阻塞版,timeout是阻塞超时时间,timeout=0为拥有不阻塞 o(1)
  36. # 要实现栈的功能:先进后出,后进先出---》吃了吐
  37. lpush+lpop
  38. #实现队列功能:先进先出---》吃了拉--》直梯
  39. lpush+rpop
  40. #固定大小的列表
  41. lpush+ltrim
  42. #消息队列
  43. lpush+brpop

2.5 集合

  1. sadd key element # 向集合key添加element(如果element存在,添加失败) o(1)
  2. srem key element # 从集合中的element移除掉 o(1)
  3. scard key # 计算集合大小
  4. sismember key element # 判断element是否在集合中
  5. srandmember key count # 从集合中随机取出count个元素,不会破坏集合中的元素 (抽奖)
  6. spop key # 从集合中随机弹出一个元素
  7. smembers key # 获取集合中所有元素 ,无序,小心使用,会阻塞住
  8. sdiff user:1:follow user:2:follow # 计算user:1:follow和user:2:follow的差集
  9. sinter user:1:follow user:2:follow # 计算user:1:follow和user:2:follow的交集
  10. sunion user:1:follow user:2:follow # 计算user:1:follow和user:2:follow的并集
  11. sdiff|sinter|suion + store destkey... # 将差集,交集,并集结果保存在destkey集合中

2.6 有序集合

  1. zadd key score element # score可以重复,可以多个同时添加,element不能重复 o(logN)
  2. zadd class lyf 100
  3. ...
  4. zrem key element # 删除元素,可以多个同时删除 o(1)
  5. zscore key element # 获取元素的分数 o(1)
  6. zincrby key increScore element # 增加或减少元素的分数 o(1)
  7. zcard key # 返回元素总个数 o(1)
  8. zrank key element # 返回element元素的排名(从小到大排,从0开始)
  9. zrange key 0 -1 #返回排名,不带分数 o(log(n)+m) n是元素个数,m是要获取的值
  10. zrange player:rank 0 -1 withscores # 返回排名,带分数
  11. zrangebyscore key minScore maxScore # 返回指定分数范围内的升序元素 o(log(n)+m) n是元素个数,m是要获取的值
  12. zrangebyscore user:1:ranking 90 210 withscores # 获取90分到210分的元素
  13. zcount key minScore maxScore # 返回有序集合内在指定分数范围内的个数 o(log(n)+m)
  14. zremrangebyrank key start end # 删除指定排名内的升序元素 o(log(n)+m)
  15. zremrangebyrank user:1:rangking 1 2 # 删除升序排名中1到2的元素
  16. zremrangebyscore key minScore maxScore # 删除指定分数内的升序元素 o(log(n)+m)
  17. zremrangebyscore user:1:ranking 90 210 # 删除分数90到210之间的元素
  18. zrevrank # 从高到低排序
  19. zrevrange # 从高到低排序取一定范围
  20. zrevrangebyscore # 返回指定分数范围内的降序元素
  21. zinterstore # 对两个有序集合交集
  22. zunionstore # 对两个有序集合求并集
  23. # 可以写 排行榜---》金币排行,阅读排序,销量排行

客户端

  1. # python --->redis模块
  2. # go---》
  3. https://www.cnblogs.com/liuqingzheng/p/16024070.html

3、高级用法之慢查询

  1. # 通过配置,对慢查询命令的保存,通过命令,取出保存的慢查询命令---》分析
  2. # 两个配置
  3. 慢查询是一个先进先出的队列
  4. 固定长度
  5. 保存在内存中
  6. slowlog-max-len=128
  7. slowly-log-slower-than=10000 # 毫秒,超过这个毫秒的,就会被记录在队列中
  8. # 配置
  9. config set slowlog-log-slower-than 0
  10. config set slowlog-max-len 100
  11. config rewrite
  12. # 命令
  13. slowlog get [n] # 查到哪个用户执行的那个命令
  14. slowlog len # 获取慢查询队列长度
  15. slowlog reset # 清空慢查询队列

4、pipline事务

  1. # Redis的 pipeline(管道)功能 在命令行中没有,但 redis是支持 pipeline的,而且在各个语言版的 client中都有相应的实现(客户端又,py-redis,go-redis)
  2. # 将一批命令,批量打包,在redis服务端批量计算(执行),然后把结果批量返回
  3. # 1次pipeline(n条命令) = 1次网络时间 + n次命令时间
  4. # pipeline 期间将 “独占” 链接,此期间将不能进行 非“管道” 类型的其他操作,直到pipeline关闭
  5. 如果你的pipeline的指令集很庞大,为了不干扰链接中的其他操作,你可以为 pipeline操作新建 Client链接,让 pipeline和其他正常操作分离在2client中。
  6. 不过pipeline 事实上所能容忍的操作个数,和s ocket-output缓冲区大小/返回结果的数据尺寸都有很大的关系
  7. 同时也意味着每个 redis-server同时所能支撑的 pipeline链接的个数,也是有限的,这将受限于server的物理内存或网络接口的缓冲能力
  8. import redis
  9. pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
  10. r = redis.Redis(connection_pool=pool)
  11. # pipe = r.pipeline(transaction=False)
  12. # 创建pipeline
  13. pipe = r.pipeline(transaction=True)
  14. # 开启事务
  15. pipe.multi()
  16. pipe.set('name', 'lqz')
  17. # 其他代码,可能出异常
  18. pipe.set('role', 'nb')
  19. pipe.execute()
  20. ##### 注意:
  21. pipeline每次只能作用在一个Redis的节点上 集群环境中,用不了pipline
  22. ## redis支持事务操作
  23. # 1 mutil 开启事务,放到管道中一次性执行--->管道的使用
  24. multi # 开启事务
  25. set name lqz
  26. set age 18
  27. exec
  28. # 2 模拟事务
  29. # 在开启事务之前,先watch,监控age,如果被别人改了,它就改不成功了--》乐观锁
  30. wathc age
  31. multi
  32. decr age
  33. exec
  34. # 另一台机器
  35. multi
  36. decr age
  37. exec # 先执行,上面的执行就会失败(乐观锁,被wathc的事务不会执行成功)
  38. # 集成到项目中---demo
  39. https://www.cnblogs.com/liuqingzheng/p/9997092.html

redis的Linux系统安装与配置、redis的api使用、高级用法之慢查询、pipline事物的更多相关文章

  1. Redis 01: 非关系型数据库 + 配置Redis

    数据库应用的发展历程 单机数据库时代:一个应用,一个数据库实例 缓存时代:对某些表中的数据访问频繁,则对这些数据设置缓存(此时数据库中总的数据量不是很大) 水平切分时代:将数据库中的表存放到不同数据库 ...

  2. Linux下安装配置Redis

    一 下载并安装 (1)下载: [root@localhost src]# wget http://download.redis.io/releases/redis-3.2.5.tar.gz (2)安装 ...

  3. Redis在linux上的配置

    一.安装gcc  1.Redis在linux上的安装首先必须先安装gcc,这个是用来编译redis的源文件的.首先需要先切换的到root用户 2.然后开始安装gcc: yum install gcc- ...

  4. Linux 下载安装配置Redis完整步骤

    安装: 1.获取redis资源 wget http://download.redis.io/releases/redis-4.0.8.tar.gz 2.解压 tar xzvf redis-4.0.8. ...

  5. 关于Redis在Linux手动安装配置

    安装: 1.获取redis资源 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2.解压 tar xzvf redis-5.0.0. ...

  6. Linux(CentOS6.8)配置Redis

    1.Redis简介 Redis:REmote DIctionary Server(远程字典服务器). Redis是完全开源免费的,用C语言编写的,遵守BSD协议,是一个高性能的(key/value)分 ...

  7. Redis学习笔记之一 : 配置redis

    Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久 ...

  8. 高级运维(六):源码安装Redis缓存服务、常用Redis数据库操作指令、配置Redis主从服务器

    一.源码安装Redis缓存服务 目标: 本案例要求先快速搭建好一台Redis服务器,并测试该缓存服务器: 1> 设置变量test,值为123 2> 查看变量test的值 3> 设置计 ...

  9. redis下载安装及php配置redis

    下载及安装redis 1.首先去github网站上下载https://github.com/dmajkic/redis/downloads: 2.根据实际情况,将64bit的内容cp到自定义盘符目录, ...

随机推荐

  1. Go 里面的 ^ 和 &^

    这几天在研究 Go 的源码,突然发现了一个之前没有见过的位运算,见这里 new &^= mutexWoken & 和 ^,分别表示 AND 和 XOR,这个不用多说. 值得一提的是 ^ ...

  2. Python中使用模块和库编程

    """ python中使用模块和库编程 导入模块 import modulename [as alias] from modulename import fun1,fun ...

  3. CentOS7.x 离线安装和开机启动 supervisor 4.2.4

    CentOS7.x 服务器 离线安装 开机启动 supervisor 4.2.4

  4. linux修改静态ip

    1.修改配置文件 vi /etc/sysconfig/network-scripts/ifcfg-ens32 bootproto:设置为静态 onboot:开机自启 ipaddr:ip地址 netma ...

  5. netty系列之:java中的base64编码器

    简介 什么是Base64编码呢?在回答这个问题之前,我们需要了解一下计算机中文件的分类,对于计算机来说文件可以分为两类,一类是文本文件,一类是二进制文件. 对于二进制文件来说,其内容是用二进制来表示的 ...

  6. Vue基础二之全局API、实例属性和全局配置,以及组件进阶(mixins)的详细教程(案列实现,详细图解,附源码)

    本篇文章主要是写Vue.directive().Vue.use()等常用全局API的使用,vm.$props.vm.$options.vm.$slots等实例属性的使用,以及Vue全局配置.组件的mi ...

  7. 【Azure API 管理】解决API Management添加AAD Group时遇见的 Failed to query Azure Active Directory graph due to error 错误

    问题描述 为APIM添加AAD Group时候,等待很长很长的时间,结果添加失败.错误消息为: Write Groups ValidationError :Failed to query Azure ...

  8. 记一次docker安装成功,启动失败的原因

    问题 按照错误提示,先查看docker的状态: systemctl status docker 可以看到,非常明显的一行大红字:Failed to start Docker Application C ...

  9. Angular中directive——scope选项与绑定策略,这个也经常迷惑的。

    开门见山地说,scope:{}使指令与外界隔离开来,使其模板(template)处于non-inheriting(无继承)的状态,当然除非你在其中使用了transclude嵌入,这点之后的笔记会再详细 ...

  10. 【Hadoop】HBase组件配置

    目录 HBase实验步骤: 1.配置时间同步(所有节点) 2.部署HBase(master节点) 3.配置HBase(master节点) 4.拷贝文件到slave节点 5.修改权限,切换用户(所有节点 ...