Redis的Expire与Setex区别说明
Expire
为key设置过期时间
Setex
为key设置value值,并且,设置过期时间
区别
Setex是一个原子操作
设置值,设置过期时间两个动作,会在同一时间完成
在Redis缓存中,非常实用
补充知识:redis之setnx、setex、setrange、mset
1.setnx
设置key对应的值为string类型的value。如果key已经存在,返回0,nx是notexist的意思。
例如我们添加一个name=HongWan_new的键值对,可以这样做:
redis127.0.0.1:6379>getname
"HongWan"
redis127.0.0.1:6379>setnxnameHongWan_new
(integer)0
redis127.0.0.1:6379>getname
"HongWan"
redis127.0.0.1:6379>
由于原来name有一个对应的值,所以本次的修改不生效,且返回码是0。
2.setex
设置key对应的值为string类型的value,并指定此键值对应的有效期。
例如我们添加一个haircolor=red的键值对,并指定它的有效期是10秒,可以这样做:
redis127.0.0.1:6379>setexhaircolor10red
OK
redis127.0.0.1:6379>gethaircolor
"red"
redis127.0.0.1:6379>gethaircolor
(nil)
redis127.0.0.1:6379>
可见由于最后一次的调用是10秒以后了,所以取不到haicolor这个键对应的值。
3.setrange
设置指定key的value值的子字符串。
例如我们希望将HongWan的126邮箱替换为gmail邮箱,那么我们可以这样做:
redis127.0.0.1:6379>getname
"HongWan@126.com"
redis127.0.0.1:6379>setrangename8gmail.com
(integer)17
redis127.0.0.1:6379>getname
"HongWan@gmail.com"
redis127.0.0.1:6379>
其中的8是指从下标为8(包含8)的字符开始替换
4.mset
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置。
redis127.0.0.1:6379>msetkey1HongWan1key2HongWan2
OK
redis127.0.0.1:6379>getkey1
"HongWan1"
redis127.0.0.1:6379>getkey2
"HongWan2"
redis127.0.0.1:6379>
5.msetnx
一次设置多个key的值,成功返回ok表示所有的值都设置了,失败返回0表示没有任何值被设置,但是不会覆盖已经存在的key。
redis127.0.0.1:6379>getkey1
"HongWan1"
redis127.0.0.1:6379>getkey2
"HongWan2"
redis127.0.0.1:6379>msetnxkey2HongWan2_newkey3HongWan3
(integer)0
redis127.0.0.1:6379>getkey2
"HongWan2"
redis127.0.0.1:6379>getkey3
(nil)
可以看出如果这条命令返回0,那么里面操作都会回滚,都不会被执行。
以上这篇Redis的Expire与Setex区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。