Redis
Zookeeper
一共两部分
Redis:
内存数据库
Oracle,mysql都是关系型数据库
Grep pattern filename
Awk
Hadoop:化整为零
DB:网上数据库————>关系型数据库(db2,oracle,mysql))
结构化查询语言:sql
一个datapage默认4k,存储表的信息,分成若干个表来存储。
化整为零。
硬盘内是扇区,一个硬盘最小的存储单位是一个扇区,一个扇区的大小是512byte
扇区,磁盘需要一个东西来维护,这个东西就是filesystem。
磁盘迷人的存储量大小是4K
Datapage的存储大小只能是4K,太大浪费,太小会增加频繁的io量。
Table的表结构:
Create table name(
名字 类型
)
最关键的是数据类型,表字段的个数
这叫行式存储,hbase是列式存储。
声明类型,在内存中分配空间。
按块来分配,缩小查找范围,
一个索引大小也是4k
Create index
有一个datapage就会有一个索引。
对于每一个datapage就会有一个id,
想查找sxt,先找到索引index,根据index去找datapage,
就像java中的二分法查找,首先需要排列。
Crud
Update
Delete
Insert
Select
面试题:
Dml和dql的区别
Primarykey
Unique
建索引
经常查询的建立索引
造成io效率底下,最根本的是存储在磁盘上,维护在内存上。
都放在内存上就叫内存数据库。
内存数据库,设置过期时间。
Memcached:
Java是8中数据类型
Json只有一种数据类型:var
Redis:支持很多种数据类型。
内存持久化:断电保存
Key:string
Value:各种数据类型
Redis2.8:单机操作
Redis:3.0以上,集群操作
需要具备两个环境:gcc,tcl
上传,解压,安装
放到/opt/sxt的目录下
make && make PREFIX=/opt/sxt/redis install
Makefile:编译,安装
Make
Bin:可执行目录
内存数据库:客户端、数据库
Vi + /etc/profile
. /etc/profile
安装服务器
执行当前目录:
cd redis-2.8.18^C
./install_server.sh
Redis的操作语句:
客户端、服务器
链接服务器:redis-cli
都是键值的形式
String支持的数据类型:
Set,get,
Help:查询帮助
Table:帮助把命令补全
Quit:退出
Group:
组与组之间是不通用的。
Help RPOP:列出当前目录
Help append:list位于哪一个组
Help set:string类型
设置:set k1 a
获取:Get k1
Mset k2 b k3 c
Get k2
Get k3
Key *
Setnx k2 abc
Get k2
Setnx k4 abc
Get k4
Nx not exists,实现的是创建功能
Get k4
Set k5 esw xx
Get k5
Set k2 esw xx
Get k2
Help set
Flushall:清空,表示所有的数据都不要了,
Set k1 abc 5
Set k1 abc ex 5
值,存在的时间
-1:表示不过期
Time:存活时间
Keys *:所有
Keys ?:没有
Keys ??:代表两个
Set key value
Keys k[k]3
Type k1
Set k4 5
OBJECT encoding k1:原始存储的类型
Strlin k1
Exist k4
1,0
Getset k4
Get k4
Getset:替换原来的
Set k1 中
Strline k1
3
Get k1
\xe4\xb8\xad
Redis --raw
Utf_8是三个字节
Gbk:是两个字节
Read_cli
Append:追加
Getrange k4 3 5
从索引为3的开始
Getrange
Set k1 100
Increase k1:增加步进
Decreasr k1:减少步进
Incr k1
Decr k1
Incrby k1 2
Incrbyfloat k1 2.5
多个数据向一个方向移动:要考虑线程安全。
Redis操作:允许使用bitmap(字节数组)
Create index
Create
Flushall
Setbit k1 1 1
Get k1
Setbit k1 7 1
Get k1
A
Help setbit
@ 64
7是2的6次方
Offset:偏移
跨字节进行比特位的设置
Getbit k1 1
Bitpos:bitposition
Help bitpos
Bitpos k1 1
Setbit k1 1 0
Bitpos k1 1
值的偏移量,位置
Operand:运算数
Operator;运算符
Operation:运算
| & 异或 非
Setbit k1 1 1
Setbit k2 7 1
Bitop and k3 k1 k2
Get k3
Help bittcount
Redis -cli -help
Redis -cli:默认为0号数据库
Flushdb:清空当前所属的数据库
Collect:无序不唯一
Set:无序唯一
List:有序不唯一
Linkedlist:增删快,底层是链表,两个节点之间的指向发生变化就行
Arraylist:查询慢,查询快,删减的话,后边的所有数据都需要变动,底层是数组
List:列表的索引
单项链表,双向链表
丛左至右,丛0开始
从右至左,从-1开始
操作list的方向:有左,也有右
List也有阻塞
Lpush:l:左侧,从左侧推送值
Lrange l1 0 -1
栈的特点,先进后出
Lpop l1f 从左边取
Rpop l1:从右边取
Lrange l1 3 3:取的范围,从start-end
Rpoprpush:RPOPLPUSH l1 l2
Remove the last element in a list, append it to another list and return it
Lindex l1 2:获取指定位置上的元素值
RPUSH listkey c abc c ab 123 ab b bj ab redis list
LRANGE listkey 0 -1:展示所有
LREM listkey -2 ab:删除重复,删除的是最后边的两位。
LTRIM listkey 0 -1:去除空格字段
LPUSH list2 a b d:复制
LINSERT list2 before d c:插入值
Push:加入
Pop:弹出
llenL:长度
Lrem listkey -2 ab
Lrem listkey
Ltrim:去除无用的
阻塞队列:
Blpop:没有该值阻塞住
Lpush list 0:接触阻塞
Blpop list 0:0代表一直阻塞,除非解除阻塞
Blpop list 5:阻塞5秒
Hash散列
Hset key field value
Hset mike name mickael
Hmset mike age 30 gender m cell 1391111
Hmget mike
Hmget mike name age 30
Hvals mike:获取所有值
HMGET mike name:获取某一属性值
Hkeys mike:获取所有的属性元素
HMGET mike name age cell:获取属性对应的值
Set pablo:name jiao
Set pablo:gender f:更新属性所对应的值
Set pablo:age 30
Get pablo:
get pablo:gender:获取该属性所对应的值
返回字段值:Hget key field
HINCRBY mike age 5:增加年龄
返回多个字段值:
Hmget key field [field...]
集合:set
Set无序的,去重的
元素是字符串类型
sadd friendsnew "peter" "jack" "tom" "john" "may" "ben"
SMEMBERS friendsnew:获取成员的属性
SRANDMEMBER friendsnew 3:随机弹出
SRANDMEMBER friendsnew -100:弹出绝对值
差集:different
交集:sinter
并集:sunion
Srandmember friendnew 0
Srandmember friendnew 4
Srandmember friendnew 100
Srandmember friendnew -100
Spop friendsnew
scard friendsnew
Setadd g a b c d ...
Srandmember g 100
Srandmember g1 -20
Intersection:交集
Sinter:并集
Sunion:差集
Sdifferent:是看谁放在前边,就保留谁
Sunion:并集
Sinter:交集
sadd num1 123 456 789
sadd num2 123 456 999
sdiff num1 num2:789
sdiff num2 num1:999
sunion num1 num2:并集
SINTER num1 num2:交集
Sortedset有序集合
redis-cli --raw:显示汉子的值
ZRANGE fruits 0 -1 withscores:显示属性的值和分值
ZREVRANGE fruits -3 -1 withscores:倒序打印出来
按照中文输出
Redis-cli --raw
输出所有
Zrange fruits 0 -1
Zrange fruits 0 -1 withscores
Zrange fruits -3 -1 withscores
最后一个为-1
Zrevrange fruits 0 -1 withscores
Reverse:反转,倒序
有序集合,会按照分值去排序
Zrevrank fruits 0 -1
Zrangebyscore fruits 3.2 4 withscores
Zrangebyscore fruits (3.2 4 withscores
Zrangebyscore fruits (3.2 (4 withscores
Infinity:正的无穷大
Zremrangebyrank key min max
Zremrangebyscore fruits 6 7
Zcare fruits
Zcount key min max
并集:
提升空间的复杂度,来换取时间的复杂度。
不进行磁盘一些:fsimage,adislog
Namenode
Hadcache
Redis:内存会丢失,
Redis持久化:
Rdb hdfs:fsimage
Aof hdfs:edit logs
Redis:持久化--RDB
Redis所做的rdb就是时点快照
阻塞方式:
银行晚上停止服务
费阻塞方式:
阻塞的同时执行访问工作
Export:父sehll和子shell
父shell改变不会影响子shell的变化。
持久化操作
Cow:copy on write
Redis持久化-RDB
优点:
完全备份,不同时间的数据集备份可以做到多版本恢复
紧凑的单一文件,方便网络传输,适合灾难恢复
恢复大数据集速度较小的AOF快。
缺点:
不是时时存储,会丢失最近写入的,修改的而未能持久化的数据
生产环境:
定时任务删除过期的备份。
架构模型:主从架构
Hdfs为主从架构模型: