时间:2021-05-02
Expire
为key设置过期时间
Setex
为key设置value值,并且,设置过期时间
区别
Setex是一个原子操作
设置值,设置过期时间两个动作,会在同一时间完成
在Redis缓存中,非常实用
补充知识:redis之setnx、setex、setrange、mset
1.setnx
设置 key对应的值为 string类型的 value。 如果key 已经存在,返回 0,nx 是not exist 的意思。
例如我们添加一个name= HongWan_new 的键值对,可以这样做:
redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379> setnx name HongWan_new
(integer) 0
redis 127.0.0.1:6379> get name
"HongWan"
redis 127.0.0.1:6379>
由于原来 name 有一个对应的值,所以本次的修改不生效,且返回码是 0。
2.setex
设置key 对应的值为 string 类型的 value,并指定此键值对应的有效期。
例如我们添加一个haircolor= red 的键值对,并指定它的有效期是10 秒,可以这样做:
redis 127.0.0.1:6379>setex haircolor 10 red
OK
redis 127.0.0.1:6379> get haircolor
"red"
redis 127.0.0.1:6379> get haircolor
(nil)
redis 127.0.0.1:6379>
可见由于最后一次的调用是10 秒以后了,所以取不到 haicolor 这个键对应的值。
3.setrange
设置指定 key 的 value 值的子字符串。
例如我们希望将 HongWan 的 126 邮箱替换为 gmail 邮箱,那么我们可以这样做:
redis 127.0.0.1:6379> get name
"HongWan@126.com"
redis 127.0.0.1:6379> setrange name 8 gmail.com
(integer) 17
redis 127.0.0.1:6379> get name
"HongWan@gmail.com"
redis 127.0.0.1:6379>
其中的 8 是指从下标为 8(包含8)的字符开始替换
4.mset
一次设置多个key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置。
redis 127.0.0.1:6379>mset key1 HongWan1 key2 HongWan2
OK
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379>
5.msetnx
一次设置多个key 的值,成功返回 ok 表示所有的值都设置了,失败返回 0 表示没有任何值被设置, 但是不会覆盖已经存在的 key。
redis 127.0.0.1:6379> get key1
"HongWan1"
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> msetnx key2 HongWan2_newkey3 HongWan3
(integer) 0
redis 127.0.0.1:6379> get key2
"HongWan2"
redis 127.0.0.1:6379> get key3
(nil)
可以看出如果这条命令返回 0,那么里面操作都会回滚,都不会被执行。
以上这篇Redis的Expire与Setex区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/nangeali/article/details/81662306
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
scrollHeight,clientHeight,offsetHeight的区别说明:scrollHeight:DOM元素的实际内容的高度,不包border的
phpsetcookie函数的参数说明用法:setcookie(name,value,expire,path,domain,secure)参数描述name必需。
Thread类包含start()和run()方法,它们的区别是什么?本章将对此作出解答。本章内容包括:start()和run()的区别说明start()和run
原文主题:天猫outlets和旗舰店区别是哪些?三大区别说明现如今提起在天猫上开过店的卖家都知道,outlets和旗舰店之间是有区别的,很多的卖家们都弄不清楚淘
start()和run()的区别说明start():它的作用是启动一个新线程,新线程会执行相应的run()方法。start()不能被重复调用。run():run