Redis 的基础命令集合(2)

zscan

Redis Zscan 命令用于迭代有序集合中的元素(包括元素成员和元素分值)

zscan history:A1300 0  match '*:*:*:*:*:**M' count 10000 

zrange(key,0,-1)


127.0.0.1:19000> zrange LINE_URL:/INDEX/201912/23/C2590INRP02.TXT 0 -1
1) "1577032690000 20191223003801 \\C1695A1CPK1\\C19CL\\C19CL01A\\C19CL01ACJ\\FORMAT\\C2590C19CL01ACJ.TXT#003810 1"
2) "1577033573000 20191223005243 \\C1695A1CPK1\\C19CJ\\C19CJ00A\\C19CJ00AAX\\FORMAT\\C2590C19CJ00AAX.TXT#005253 2"
3) "1577033621000 20191223005332 \\C1695A1CPK1\\C19CF\\C19CF04N\\C19CF04NAJ\\FORMAT\\C2590C19CF04NAJ.TXT#005342 3"
4) "1577033697000 20191223005452 \\C1695A1CPK1\\C19CK\\C19CK02M\\C19CK02MBP\\FORMAT\\C2590C19CK02MBP.TXT#005457 5"
5) "1577049900000 20191223052333 \\C1695A1CPK1\\C19CK\\C19CK03Q\\C19CK03QAQ\\FORMAT\\C2590C19CK03QAQ-1.TXT#052500 24"
6) "1577049981000 20191223052612 \\C1695A1CPK1\\C19BE\\C19BE061\\C19BE061BA\\FORMAT\\C2590C19BE061BA.TXT#052621 30"
7) "1577051094000 20191223054446 \\C1695A1CPK1\\C19CL\\C19CL01A\\C19CL01ACJ\\FORMAT\\C2590C19CL01ACJ-1.TXT#054454 104"
8) "1577051568000 20191223055239 \\C1695A1CPK1\\C19CK\\C19CK00N\\C19CK00NBL\\FORMAT\\C2590C19CK00NBL-1.TXT#055248 126"
9) "1577051639000 20191223055350 \\C1695A1CPK1\\C19CK\\C19CK02M\\C19CK02MBP\\FORMAT\\C2590C19CK02MBP-1.TXT#055359 128"
10) "1577051811000 20191223055642 \\C1695A1CPK1\\C19CG\\C19CG018\\C19CG018AP\\FORMAT\\C2590C19CG018AP-1.TXT#055651 132"
11) "1577051933000 20191223055844 \\C1695A1CPK1\\C19CF\\C19CF04N\\C19CF04NAJ\\FORMAT\\C2590C19CF04NAJ-1.TXT#055853 134"

zrangebyscore()

zrangebyscore(key, min, max):返回名称为key的zset中score >= min且score <= max的所有元素

Key:result:glass_id
Value:actualEqptId,actualSubEqptId,defectCnt,glassId,ifPreProcess,OOC,OOS,panelCnt,preOpeId,processEndTime,ruleSeqId
Score:rule_id
查询命令:zrangebyscore result:A19C905MAL 269733 269733

Key:history:站点
Value:主机台:子机台:recipe:prod:lot:glass:当前时间:F
Score:该片glass的ProcEndTime时间
查询命令:zrangebyscore history:A2353 1576544400 1576548000

显示整个有序集ZRANGEBYSCORE history:ope -inf +inf[root@P1QMSPL2RTM01 log]# redis-cli -p 6379 zrangebyscore history:C7777 -inf +inf 1) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B031N00:C188900TBA:M" 2) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B031N00:C188W02NBD:M" 3) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C188S01TBT:M" 4) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C188U021BV:M" 5) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C1891023BH:M" 6) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C189200SBN:M" 7) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C189200SBS:M" 8) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C1893008BN:M" 9) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B055N00:C189300HAQ:M"10) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B05PN00:C188W02SBT:M" 显示整个有序集及成员的 score 值 -inf 负无穷+inf  正无穷 ZRANGEBYSCORE history:ope -inf +inf WITHSCORES    [root@P1QMSPL2RTM01 log]# redis-cli -p 6379 zrangebyscore history:C7777 -inf +inf withscores 1) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B031N00:C188900TBA:M" 2) "1536626081" 3) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B031N00:C188W02NBD:M" 4) "1536626081" 5) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C188S01TBT:M" 6) "1536633079" 7) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C188U021BV:M" 8) "1536633079" 9) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C1891023BH:M"10) "1536633079"11) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C189200SBN:M"12) "1536633079"13) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C189200SBS:M"14) "1536633079"15) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B03XN00:C1893008BN:M"16) "1536633079"17) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B055N00:C189300HAQ:M"18) "1536644040"19) "CHAN0300:CHAN0300:null:C1495A1ANK1:C189B05PN00:C188W02SBT:M"20) "1536648516"

zrem

zrem(key, member) :删除名称为key的zset中的元素member

zremrangebyscore(key,score1,score2)

例如删除history:ope 17S - 18E的所有数据

zremrangebyscore history:A2355 1483200000 1546271999


zcard

zcard(key):返回名称为key的zset该key的value数量

127.0.0.1:6380> zcard testKey(integer) 4

pipeLine

https://blog.csdn.net/xfg0218/article/details/75353875

https://www.cnblogs.com/duanjt/p/10245620.html

pipeline 的默认的同步的个数为53个,也就是说arges中累加到53条数据时会把数据提交

-----------------------------------------------update 2019年8月10日10:30:18-----------------------------------

对List操作的命令

类似于key 从链表的两端取出数据。

lrange

lrange(key, start, end):返回名称为key的list中start至end之间的元素(下标从0开始)

lrange key 0 -1 表示返回的该key的所有数据,0代表起始 ,-1代表最后元素。(正负双向索引

Key:opehis:glassId
Value:站点:主机台:子机台:prod:ProcEndTime:当前时间:F
查询命令:lrange opehis:A19C905MAL 0 -1

rpush

rpush(key, value):在名称为key的list尾添加一个值为value的元素( r 代表右)

String opeValue = String.format("%s:%s:%s:%s:%s:%s:%s",opeId, eqptId, eqptId,prodId, epochSecond, evtTime, "F");

String opeKey = String.format("opehis:%s", glassId);

jedis.rpush(opeKey,opeValue);

rpop

rpop(key):返回并删除名称为key的list中的尾元素

lpush

lpush(key, value):在名称为key的list头添加一个值为value的 元素( l 代表左)

Note: 允许重复元素,例如opehis:glass 此key

lpop

lpop(key):返回并删除名称为key的list中的首元素

ltrim

应用: "查看全文 "时候只show 一部分数据,当点击查看全文的时候再去DB获取。(这种设计非常合理,因为用户愿意点击查看全文就意味着用户愿意花费时间去等待获取需要的内容)

使用场景

1.String类型的应用场景

String是最常用的一种数据类型,普通的key/value存储.

2.list类型的应用场景

比较适用于列表式存储且顺序相对比较固定,例如:

省份、城市列表

品牌、厂商、车系、车型等列表

拆车坊专题列表...

3.set类型的应用场景

Set对外提供的功能与list类似,当需要存储一个列表数据,又不希望出现重复数据时,可选用set

4.zset(sorted set)类型的应用场景

zset的使用场景与set类似,区别是set不是自动有序的,而zset可以通过用户额外提供一个优先级(score)的参数来为成员排序,并且是插入有序的,即自动排序.当你需要一个有序的并且不重复的集合列表,那么可以选择zset数据结构。例如:

根据PV排序的热门车系车型列表

根据时间排序的新闻列表

https://blog.csdn.net/zhu_xun/article/details/16806285


什么是二进制安全的?

C语言中的字符串是根据特殊字符“\0”来判断该字符串是否结束,对于字符串str="0123456789\0123456789”来说,在C语言里面str的长度就是10(strlen(str)=10),所以strlen()函数不是二进制安全的。而在Redis中,strlen str的结果是21,是二进制安全的(Redis底层所使用的字符串表示是Sds),它只关心二进制化的字符串,不关心字符串的具体格式,里面有啥字符,只会严格的按照二进制的数据存取,不会以某种特殊格式解析字符串。

举报
评论 0