首页 > 数据库 >redis 如果修改key之后, 其有效时间会变吗

redis 如果修改key之后, 其有效时间会变吗

时间:2024-05-13 15:30:48浏览次数:14  
标签:set redis value 会变 key test 超时

在开发中遇到一个问题,使用redis中的set更新一个含有有效时间的key时,会使这个key的有效时间变成永久有效:

127.0.0.1:6379> set test test
OK
127.0.0.1:6379> expire test 1000
(integer) 1
127.0.0.1:6379> set test test
OK
127.0.0.1:6379> ttl test
(integer) -1

查阅redis官方文档是这样介绍的:

The timeout will only be cleared by commands that delete or overwrite the contents of the key, including DEL, SET, GETSET and all the *STORE commands. This means that all the operations that conceptually alter the value stored at the key without replacing it with a new one will leave the timeout untouched. For instance, incrementing the value of a key with INCR, pushing a new value into a list with LPUSH, or altering the field value of a hash with HSET are all operations that will leave the timeout untouched.

翻译过来:

  只有删除或覆盖键内容的命令才会清除超时,包括 DEL、SET、GETSET 和所有 *STORE 命令。 这意味着从概念上改变键中存储的值而不用新值替换它的所有操作都将保持超时不变。 例如,使用 INCR 增加键的值、使用 LPUSH 将新值推送到列表中或使用 HSET 更改哈希的字段值都是不会影响超时的操作。

  也就是说:如果用DEL, SET, GETSET会将key对应存储的值替换成新的,命令也会清除掉超时时间;如果list结构中添加一个数据或者改变hset数据的一个字段是不会清除超时时间的;如果想要通过set去覆盖值那就必须重新设置expire。

标签:set,redis,value,会变,key,test,超时
From: https://www.cnblogs.com/beatle-go/p/18189335

相关文章

  • redis 部署
    redisdocker环境部署1.方式一,dockerrundockerrun--rm-p6379:6379-v/home/qtimes/workspace/docker_space/redis_space/data/redis/redis.conf:/etc/redis/redis.conf-v/home/qtimes/workspace/docker_space/redis_space/data/redis/data:/dataredis:latestr......
  • dbeaver连接mysql报错Public Key Retrieval is not allowed
    这个错误通常发生在尝试通过JDBC连接MySQL数据库时,并且是由于MySQL的配置不允许公钥检索导致的。从MySQL5.0开始,连接时默认需要使用密钥进行密码加密传输。如果JDBC驱动程序尝试通过不允许公钥检索的方式进行连接,就会抛出这个错误。解决方法:更新JDBC连接字符串,添加允许公钥检......
  • 基于Java的redis客户端的基本使用
    1.简介Java中redis客户端有jedis、lettuce、Redission等2.jedis的基本使用引入依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.2.3</version></dependency>从jedis连接池获取je......
  • Redis配置登录密码并使用认证密码登录
    Redis配置登录密码并使用认证密码登录1.修改配置文件Redis的配置文件redis.conf,找到如下行:#requirepassfoobared去掉注释,并修改为所需要的密码:requirepass123456(其中123456就是要设置的密码)2.重启Redis如果Redis已经配置为service服务,可以通过以下方式重启:serviceredis......
  • CentOS7部署Redis(离线单机)
    一、检查是否安装##检查是否安装了Redis[root@localhost/]#ps-ef|grepredis##存在就删除[root@localhost/]#sudoyumremoveredis##检查是否安装了gcc[root@localhost/]#gcc--version安装gcc1、手动离线安装下载gcc安装包,下载地址:http://mirrors.ali......
  • redis之主从复制
     1.基本环境(1) Lunixcentos7(2) redis版本:redis7.0.0(3) gcc已经配置成功,并且默认redis7.0.0环境已经在linux中做好了2.架构说明(1) 一个master两salve (方便期间配置好一个后,其他两个配置文件修改即可)① Master:10.0.0.18 6379......
  • 小小redis持久化,拿捏
    前言我们先来说说什么是持久化持久化顾名思义就是数据长久保存,Redis为什么需要持久化呢,好呆的问题,Redis数据是存储在内存中的,内存数据的特点就是一旦重启就什么都没了我们将文件由内存中保存到硬盘中的这个过程,我们叫做数据保存,也就叫做持久化。但是把它保存下来不是你的目......
  • Docker 部署Redis
    1、创建Redis目录mkdirRedis目录2、创建配置文件redis.confvimRedis目录/redis.conf#当配置中需要配置内存大小时,可以使用1k,5GB,4M等类似的格式,其转换方式如下(不区分大小写)#1k=>1000bytes#1kb=>1024bytes#1m=>1000000bytes#1mb=>1024*1024byt......
  • 详解Redis持久化(持久化高危漏洞利用与多种对抗方案、RDB、AOF、同步手动持久化、异步
    谨防持久化+未授权访问漏洞入侵服务器CVE编号找不到,CNVD有一个:CNVD-2015-07557(国家信息安全漏洞共享平台漏洞编号)。这是我之前写过的文章,漏洞成因、影响范围、POC与对抗方案有详解:谨防利用Redis未授权访问漏洞入侵服务器RDB(RedisDatabase、全量保存,默认方式)极简概括:通过符......
  • 小小Redis数据类型,拿捏
    面试遇到过的Redis问题Redis的数据类型怎么利用Redis解决超卖问题1.什么是RedisRedis就是一个非关系型数据库(NoSQL),我们知道关系型数据库MySQL,在MySQL里我们对于数据的增删改查需要SQL语句(select*from...),麻不麻烦——麻烦,慢不慢——当然是慢的,因为数据是存在硬盘上的,......