键值数据库基本原理(键值数据库举例)

互联网- 2023-08-21 11:29:44

Redis键值对数据库相关理论

很多朋友对于键值数据库基本原理和key值不建议用下标不太懂,今天就由小编来为大家分享,希望可以帮助到大家,下面一起来看看吧!

本文目录

  1. 有awk入门教程吗
  2. 循环对象key是什么
  3. 键值数据库基本原理
  4. yml key命名规则

有awk入门教程吗

答:本文邀请kitman来回答,理论结合实际为你献上奉上后台必备技能-awk入门教程~

首先说明,awk的数值只有双精度浮点型。awk是一种非常强大文本处理工具,可以相当于一个数据库来使用。

$digit代表第几个字段,字段之间的间隔默认是空格或者\t,多个连续的间隔算一个间隔,$0代表这一行

awk命令的基本格式

awk'awk程序语句'输入文件1输入文件2…

awk程序语句的基本格式

pattern1{action1}pattern2{action2}…

pattern是筛选的条件,支持||、&&、!这些条件组合

注:pattern可为空,即每一行,pattern还支持正则表达式,/正则内容/{action}

eg:

awk'$6!=0{print$0}'file1

即这一行的第六个字段不等于0,则打印这一行

awk的内置变量

NR记录当前已经读取的行数(不是输出的行数)

FNR作用域是当前文件的NR

NF记录当前行的字段数

trick:当多个输入文件时,NR==FNR即这一行在第一个文件中,NR>FNR即这一行不在第一个文件中。

awk的内置特殊pattern

BEGIN:匹配第一个输入文件第一行之前的位置

END:最后一个输入文件最后一行之后的位置

awk的action

action里面可以定运算,支持+-×/%五种运算。变量直接只用,不需要声明;

action中如果有多条语句,那么可以用;隔开

awk中只有两种类型:数值、字符串。可以变量可以使用字符串的拼接,使用空格隔开。

eg:

test.awk:

1234

23182

ab171

awk'$3>15{count=count+1}END{printcount}'test.awk

2

awk'$3>15{count=count+1;var=count"haha";printvar}'test.awk

1haha

2haha

awk'$3>15{count=count+1;var=count"_haha";printvar}'test.awk

1_haha

2_haha

即计算第三个字段大于15的行数,最后打印出来

awk的数组与控制语句

awk支持数组,和使用一般的变量一样,不需要声明,直接a[下标]=value就可以了。这个下标可以是字符。

awk还支持一般编程语言中常见的控制结构if、while、for,和c中的写法一样。

if(){}else{}

while(){}

for(;;){}

eg:

逆序打印行,这里使用了printf,它的用法和c中的printf差不多,可以用于格式化的输出,默认不输出换行。

awk'{line[NR]=$0}END{i=NR;while(i>0){printfline[i]"\n";i=i-1}}'test.awk

ab171

23182

1234

awk的选项

awk-F指定输入文件字段的分隔符

eg:

test2.awk:

1:234

2:3182

a:b171

awk-F":"'{print$2}'test2.awk

234

3182

b171

把:换成\t之后:

awk-F":"'{print$2}'test2.awk

空行

空行

空行

注:分隔符是空格时,\t也是分隔符;但指定\t是分隔符时,空格不是分隔符

awk的内置函数

split(“被切割的字符串”,数组名,”分隔符”)

toupper()替换成大写

tolower()替换成小写

gsub()全局替换

length()计算字符串的长度

eg:

awk'{printlength($3)}'test.awk

1

2

2

大例子

业务场景

收藏排行榜

从收藏存量记录、和取消收藏存量记录中,提取出收藏排行榜

存量记录中,$1是用户uin,$6是漫画id

思路:

1、把收藏存量记录中的$1_$6作为一个key,放进一个map,值是收藏时间

2、再从取消收藏记录中,取$1_$6,对比时间,然后删除(相当于合并状态),然后输出结果

3、把数据结果用map记录,计数,输出结果

4、把数据结果用sort逆序按数字大小排,然后把次数cut掉

对应的脚本语句:

awk'NR==FNR{a[$1"_"$6]=$7}NR>FNR{key=$1"_"$6;if((keyina)&&(a[key]<$7)){deletea[key]}}END{for(iina){printi}}'allcollect03allcancel03|awk-F"_"'{b[$2]=b[$2]+1;}END{for(iinb){printi"\t"b[i]}}'|sort-r-n-k2|cut-f'1'

循环对象key是什么

1.在键值对的字符串数组中,Key代表的是键;

2.在索引数组中,key代表的是下标位置

键值数据库基本原理

键值数据库数据结构最早借鉴了一维数组的设计方法;键值数据库设计时放宽了对下标和值的限制,所以key具有唯一地址的作用,也用来存在唯一内容,对value值存储内容不限制,可以存储字符串、数字、视频、图片、音频等,但是key--value必须成对出现。且键下的内容必须具有唯一性,目的是为建立索引及数据查找提供方便,但任然起着唯一地址的作用。

只有数据存储结构和数据,数据得不到永久保存不能称为真正的数据库。于是通过各种键值数据库系统的各种存储策略,以一定时间周期把数据复制到本地硬盘、闪存盘,键值数据库就初步成型了。但是在大数据环境下单机的内存要受容量限制,那么引入分布式处理方式便成为键值数据库的必然选择也是其基本特征之一。

yml key命名规则

YMLkey值不能使用"_"下划线的,基本命名方式:名字:(空格)值

文章到此结束,如果本次分享的键值数据库基本原理和key值不建议用下标的问题解决了您的问题,那么我们由衷的感到高兴!

Redis基础篇 01键值数据库基础架构
  • 声明:本文内容来自互联网不代表本站观点,转载请注明出处:bk.66688815.com/12/111156.html
上一篇:销售不好做呀,在考虑要不要辞职,大家觉得呢
下一篇:锤式弯举有没有必要(锤式弯举练哪块肌肉)
相关文章
返回顶部小火箭