Redis其它功能

过期

EXPIRE和TTL

EXPIRE可以设定一个key的销毁时间(不需要关心value的类型):

set resource:lock "demo"

expire resource:lock 120 //设置resource:lock这个key在120秒之后被回收

EXPIREAT key unixtimestamp:设置一个key在一个指定的unix时间销毁

PERSIST key:去掉key的过期限制;

TTL可以用来查看一个key还有多少时间回收;

如果TTL返回-2代表一个KEY不存在(已经回收);

如果TTL返回-1代表一个KEY不会过期(直接用set设置的key)

如果使用set重新设置了一个KEY值,那么TTL值也会被重置;

发布和订阅

1,redis提供了一个订阅和发布消息的功能,在这个功能中,redis扮演了一个消息路由服务的功能;

2,redis的发布订阅功能是在各个客户端之间的发布/订阅;

3,常用命令:

1, SUBSCRIBE channel [channel ...] :订阅一个频道;

subscribe warnings errors =>订阅warnings和errors两个频道;

2, PUBLISH channel message :向频道中发布一条消息:

subscribe warnings 'something wrong?';

3, UNSUBSCRIBE [channel [channel ...]] :取消订阅频道,如果直接是UNSUBSCRIBE命令,则取消所有消息订阅;

4,订阅/发布的常见使用场景:

redis的订阅/发布的性能非常高,可以达到15000/秒次;非常适合用于完成实施通讯/高效的消息队列等场景;

排序

redis中提供了sort命令,可以对list,set,sortedset进行复杂的排序功能,排序的结果是一个list;

SORT key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ALPHA] [STORE destination]

几个sort的例子:

rpush nlist 2 1 4 7 2 4 6

1,SORT mylist:对mylist进行排序(从小到大);1 2 2 4 4 6 7

2,SORT mylist DESC:从大到小;7 6 4 4 2 2 1

3,SORT mylist LIMIT 0 3 :从小到大排序并截取0~3位数据;1 2 2

复杂的sort:

lpush area_users 1

set user:name:1 sky

set user:level:1 36

lpush area_users 2

set user:name:2 leo

set user:level:2 40

lpush area_users 3

set user:name:3 loo

set user:level:3 20

sort area_users:按照user的id排序;

sort area_users by user:level:*:按照user:level:id 的值去排序area_users的值;

sort area_users by user:level:* get user:name:* desc:按照user:level:id的值降序排序,并按照排序的内容去得到user:name:*中的值;

lpush wolfcode:shop:bugs 1 2 3

hset bug:1 priority 2

hset bug:1 details "this is first bug! priority is 2."

hset bug:2 priority 3

hset bug:2 details "this is second bug! priority is 3."

hset bug:3 priority 1

hset bug:3 details "this is third bug! priority is 1."

在get中,如果get的key对应的value是一个hashes

可以使用->获取hashes中的特定fields:

sort wolfcode:shop:bugs by bug:->priority get bug:->details:按照bug:中的priority字段排序watch:leto的值,并且按照排序完成的值去bug:中的hashes得到details字段值;

scan

scan 命令用于遍历 key,使用增量的方式,性能较高;

scan 的原理:在扫描之前,设置一个游标值(从0开始),并可以设置筛选 key 的模式和增量的数量(即一次要看多少条数据);遍历的结果返回一个 list ,list 第一个值代表的是下一次要进行迭代的开始的游标值(注意,这个值不是下标,就是一个用来表示内部位置的值),我们就可以使用这个游标值进行下一次增量遍历,第二个值是一个 list,表示这一次遍历得到的 key 值;

scan 0 count 3 =>

  1. "2"

    1. "user:level:2"

    2. "user:name:2"

    3. "user:name:3"

scan 2 count 3 =>

  1. "9"

    1. "server:version"

    2. "user:level:3"

    3. "area_users"

    4. "user:name:1"

注意,如果在遍历的时候,不使用 match,那么count 一般能够控制住返回的数量,如果使用了match,结果数量不定;默认count为10;(可能返回的内容会多于count);

scan 0 match user:level:* count 3

事务

redis可以把一组操作包装在一个事务块中,让这些语句的执行具有原子性;

MULTI:代表一个事务块的开始;

EXEC :执行一个事务块中的语句,并将连接状态恢复到正常;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,902评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,037评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,978评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,867评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,763评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,104评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,565评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,236评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,379评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,313评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,363评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,034评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,637评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,719评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,952评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,371评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,948评论 2 341

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,716评论 0 33
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 深入浅出Redis1.Redis的发展史Redis[Remote Directory Server]:远程服务器字...
    ArleyDu阅读 550评论 0 0
  • 雪碧&可乐:谁还不会摆个pos啊。
    慢生活工坊阅读 137评论 0 0
  • 你可能永远不会看着这样的我,这样的话,因为你我之间的无缘无故,使得形同陌路。我一直不了解自己对你的感觉,只是觉得是...
    一筒阅读 226评论 0 0