Redis学习

本文深入探讨了Redis,一种内存数据库,与Oracle、MySQL等关系型数据库对比,并介绍了其特性,如数据类型、内存持久化、集群操作。通过实例展示了Redis的操作,包括String、List、Set和Sorted Set等数据结构的使用,以及持久化和主从架构在生产环境的应用。
摘要由CSDN通过智能技术生成

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为主从架构模型:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值