Redis的Expire与Setex区别说明_Redis

来源:脚本之家  责任编辑:小易  

hexists只用来判断2113是否存在参数所指定的5261hash字段,只可以带一个参数,返回值只有1(存在4102)和0(不存在)两种1653情况。redis> HSET myhash field1 "foo"(integer) 1redis> HEXISTS myhash field1(integer) 1redis> HEXISTS myhash field2(integer) 0redis> exists用来判断key是否存在,只有1组参数时用法和hexists一样,时间复杂度也一样,所以效率没区别。Redis3.0.3之后支持多组参数,返回存在的key的数量。redis> SET key1 "Hello"OKredis> EXISTS key1(integer) 1redis> EXISTS nosuchkey(integer) 0redis> SET key2 "World"OKredis> EXISTS key1 key2 nosuchkey(integer) 2redis>本回答被提问者采纳,1.命令参数:2113hsetkeyfieldvaluehsetnxkeyfieldvalue2.作用区别:hset将哈希表 key 中的域5261 field 的值设为 value 。如果 key 不存在,一个新4102的哈希表被创建并进行1653 hset 操作。如果域 field 已经存在于哈希表中,旧值将被覆盖。hsetnx将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。如果 key 不存在,一个新哈希表被创建并执行 hsetnx 命令。3.返回值区别:hset:如果 field 是哈希表中的一个新建域,并且值设置成功,返回 1 。如果哈希表中域 field 已经存在且旧值已被新值覆盖,返回 0 。hsetnx:设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 www.zgxue.com防采集请勿采集本网。

Expire

想要不过期直接用set就好了 $redis->set("key","value");

为key设置过期时间

set下面有Hashset和TreeSet Hashset顾名思义里面是哈希表结构 TreeSet就是树结构 1、TreeSet 是二差树实现的,Treeset中的数据是自动排好序的,不允许放入null值

Setex

expire只对顶级key有效,你可以这样用redis.setex("website_google",300,"");redis.setex("website_sina",300,"");

为key设置value值,并且,设置过期时间

通过expire 命令或者pexpire 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间( time to live , ttl) ,在经过指定的秒数或者毫秒数之后,服务器

区别

Setex是一个原子操作

memcached 和 redis 的set命令都有expire参数,可以设置key的过期时间。但是redis是一个可以对数据持久化的key-value database,它的key过期策略还是和

设置值,设置过期时间两个动作,会在同一时间完成

在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区别说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持真格学网。 您可能感兴趣的文章:redis批量删除key的步骤查看Redis内存信息的命令redis分布式锁及会出现的问题解决详解Redis的慢查询日志如何高效使用Redis作为LRU缓存

可以简单理解为,SETEX包含SET,SETEX是SET和EXPIRE的组合,设置value和生存时间内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 详解利用redis + lua解决抢红包高并发的问题
  • redis操作学习记录
  • redis 数据删除策略和逐出算法的问题小结
  • redis中使用redis-dump导出、导入、还原数据实例
  • redis中的事务操作案例分析
  • redis 用scan指令 代替keys指令(详解)
  • redis适合场景八点总结
  • redis中统计各种数据大小的方法
  • linux下安装redis并设置相关服务
  • win10配置redis服务实现过程详解
  • redis中SETEX和SET有什么区别
  • redis的hset和set的区别
  • redis set和put的区别
  • redis expire 命令有什么好处
  • php redis,$redis->setex(‘str’, 10, ‘bar’); 把中...
  • redis中set和hashset的区别
  • 如何设置redis中hash的field的expire
  • redis需要设置过期时间吗
  • redis expire 更新 会变吗
  • java redis setnxex 如果键存在还会存储吗
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页redis批量删除key的步骤查看redis内存信息的命令redis分布式锁及会出现的问题解决详解redis的慢查询日志如何高效使用redis作为lru缓存详解利用redis + lua解决抢红包高并发的问题redis操作学习记录redis 数据删除策略和逐出算法的问题小结redis中使用redis-dump导出、导入、还原数据实例redis中的事务操作案例分析redis 用scan指令 代替keys指令(详解)redis适合场景八点总结redis中统计各种数据大小的方法linux下安装redis并设置相关服务win10配置redis服务实现过程详解超强、超详细redis数据库入门教程redis常用命令、常见错误、配置技redis操作命令总结redis中5种数据结构的使用场景介64位windows下安装redis教程redis中使用redis-dump导出、导入redis中统计各种数据大小的方法redis常用命令小结让redis在你的系统中发挥更大作用centos 6.6下redis安装配置记录redis 实现登陆次数限制的思路详解redis持久化的介绍使用 redis 流实现消息队列的代码redis字符串原理的深入理解redis中如何使用lua脚本让你的灵活性提高redisdesktopmanager无法远程连接redis的redis发布和订阅_动力节点java学院整理redis锁机制介绍与实例redis 命令整理并说明如何使用redis协议具体用法详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved