Redis:05---键的基本命令(下) 生存周期

一、设置键生存/过期时间

  • 生存时间(Time To Live,TTL):在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键

  • 过期时间(expire time):是一个UNIX时间戳,当键的过期时间来临时,服务器就会自动从数据库中删除这个键

设置生存时间

  • EXPIRE <key> <ttl>:用于将键key的生存时间设置为ttl秒

  • PEXPIRE <key> <ttl>:用于将键key的生存时间设置为ttl毫秒

设置过期时间

  • EXPIREAT <key> <timestamp>:用于将键key的过期时间设置为timestamp所指定的秒数时间戳

  • PEXPIREAT <key> <timestamp>:用于将键key的过期时间设置为timestamp所指定的毫秒数时间戳

  • EXPIRE、PEXPIRE、EXPIREAT这几个命令的内部最终使用的都是PEXPIREAT

注意事项

  • ①如果expire的键不存在,则命令返回0。例如:

  • ②如果将过期时间设置为负值,那么该键会被立即删除。例如:

  • ③Redis不支持二级数据结构(例如哈希、列表)内部元素的过期功能,例如可以对列表的key做过期时间,但不能对列表类型的一个元素(value)设置过期时间。例如,下面有一个my_list列表,其含有元素“hello、world、redis”

字符串类型键的注意事项

  • 对于字符串类型键的注意事项,执行SET命令会去掉过期时间

  • 在Redis源码中,SET命令的函数setKey()最后执行了removeExpire(db, key)函数去掉了过期时间。

  • 演示案例:

二、查询键的剩余生存时间

  • TTL命令以秒为单位返回键的剩余生存时间

  • PTTL命令则以毫秒为单位返回键的剩余生存时间

  • 命令返回值:

    • 键未过期:ttl返回键的剩余秒数,pttl返回键的剩余毫秒数

    • 键没有设置过期时间:返回-1

    • 键不存在:返回-2

演示案例

三、移除过期时间

  • PERSIST命令可以移除一个键的过期时间

演示案例

四、附加SETEX命令

  • SETEX命令可以在设置一个字符串键的同时为键设置过期时间,其实set+expire的组合,是一个原子操作,并且减少了一次网络通讯的时间

  • 格式如下:

SETEX key seconds value

演示案例

  • 下面设置一个键名为hello,其过期时间为50秒,键值为world

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/444505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数论基础代码合集

欧几里德 #include<iostream> using namespace std; int hcf(int a,int b) {int r0;while(b!0){ra%b;ab;br;}return(a); } lcd(int u,int v,int h) //ua&#xff0c;vb&#xff0c;h为最小公约数hcf(a,b); {return(u*v/h); } int main() {int a,b,x,y;cin>>…

C++:03---引用类型

一、概念 C++中的一种新的变量类型,作用是为变量取别名二、引用规则 引用被创建时必须被初始化(即必须指向一个对象,因此引用一旦被初始化,就不能再指向其他对象)int a = 10; int &p = a; //正确 int &p2; //错误,引用必须初始化引用的数据类型必须与被引用的…

三个博弈基础

&#xff08;一&#xff09;巴什博奕&#xff08;Bash Game&#xff09;&#xff1a;只有一堆n个物品&#xff0c;两个人轮流从这堆物品中取物&#xff0c;规定每次至少取一个&#xff0c;最多取m个。最后取光者得胜。 显然&#xff0c;如果nm1&#xff0c;那么由于一次最…

(十五)nodejs循序渐进-高性能游戏服务器框架pomelo之Protobuf模块

消息压缩 在实际编程中&#xff0c;为了减少数据传输带宽的消耗&#xff0c;提高传输效率&#xff0c;pomelo提供了对消息的压缩&#xff0c;包括基于字典的对route的压缩和基于protobuf的对具体传输数据的压缩。 route压缩 在实际编程中&#xff0c;网络带宽的有效数据负载…

C++:13---多态和虚函数表

多态的意思为“以一个public基类的指针/引用,寻址一个派生类对象”。 “多态”的关键在于通过基类指针或引用调用一个虚函数时,编译时不确定到底调用的是基类还是派生类的函数,运行时才确定。这是如何实现的呢?请看下面的程序,该程序演示了多态类对象存储空间的大小。 #in…

leetcode96. 不同的二叉搜索树 动归vs数学?

给定一个整数 n&#xff0c;求以 1 ... n 为节点组成的二叉搜索树有多少种&#xff1f; 示例: 输入: 3 输出: 5 解释: 给定 n 3, 一共有 5 种不同结构的二叉搜索树: 1 3 3 2 1 \ / / / \ \ 3 2 1 1 3 …

Redis:06---数据库管理

一、服务器中的数据库Redis服务器将所有数据库都保存在服务器状态redis.h/redisServer结构的db数组中&#xff0c;db数组的每个项都是一个redis.h/redisDb结构&#xff0c;每个redisDb结构代表一个数据库&#xff1a;struct redisServer {// ...redisDb *db; // 一个数组&#…

leetcode95. 不同的二叉搜索树 II

给定一个整数 n&#xff0c;生成所有由 1 ... n 为节点所组成的二叉搜索树。 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1,null,null,2], [2,1,3], [1,null,2,null,3] ] 解释: 以上的输出对应以下 5 种不同结构的二叉搜索树&#xff1a; 1 3 …

在同一局域网下连接共享文件夹失败,提示:你不能访问共享文件夹,因为你组织的安全策略阻止未经身份验证的来宾访问

1.尝试打开guest访问。 &#xff08;1&#xff09;使用键盘 win R 键&#xff0c;打开运行窗口&#xff0c;并输入 gpedit.msc 打开本地组策略编辑器窗口 &#xff08;2&#xff09;选择计算机配置------->管理模板-------->网络-------->Lanman工作站。 &#…

(十五)深入浅出TCPIP之Hello CDN

什么是CDNCDN 其实是 Content Delivery Network 的缩写&#xff0c;即“内容分发网络”。CDN是将媒体资源&#xff0c;动静态图片(Flash) &#xff0c;HTML, CSS, JS等等内容缓存到距离你更近的互联网数据中心&#xff0c;从而让用户进行共享资源&#xff0c;实现缩减站点间的响…

Redis:07---Redis数据结构

一、五大数据结构Redis可以存储键与5种不同数据结构类型之间的映射&#xff0c;这5种数据结构类型分别为&#xff1a;STRING&#xff1a;字符串LIST&#xff1a;列表SET&#xff1a;集合HASH&#xff1a;散列ZSET&#xff1a;有序集合TYPE命令用来获得键的数据类型&#xff0c;…

C++:14---虚继承,虚函数,多态

一、多级混合继承 下面先介绍菱形继承 //菱形继承 class A { public: int data; }; class B:public A { public: int data; }; class C:public A { public: int data; }; class D:public B,public C { public: int data; };int main() { D c; D.data=1; D.B::data=2;//访问B中的…

(十四)nodejs循序渐进-高性能游戏服务器框架pomelo之开发Treasures游戏

#Tutorial 2 -- Treasures ##描述 Treasures 游戏是从 LordOfPomelo 中抽取出来&#xff0c;去掉了大量的游戏逻辑&#xff0c;用以更好的展示 Pomelo 框架的用法以及运作机制。 Treasures 很简单&#xff0c;输入一个用户名后&#xff0c;会随机得到一个游戏角色&#xff0c;…

leetcode243. 最短单词距离(vip题)好像挺简单?

给定一个单词列表和两个单词 word1 和 word2&#xff0c;返回列表中这两个单词之间的最短距离。 示例: 假设 words ["practice", "makes", "perfect", "coding", "makes"] 输入: word1 “coding”, word2 “practice”…

谈谈苹果应用内支付(IAP)的坑

一、请求商品 下面是请求商品的代码: - (void)validateProductIdentifier:(NSArray *)productIdentifier {SKProductsRequest *productRequest = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:productIdentifier]];self.request = productRe…

leetcode204. 计数质数(vip题)

统计所有小于非负整数 n 的质数的数量。 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。 思路&#xff1a;筛法&#xff0c;见代码。 class Solution {public int countPrimes(int n) {// 1. 给数加上标记byte[] nums new byte[n];for (i…

如何使得客户端和服务器端完美配合做IOS应用内付费

配置Developer.apple.com 登录到Developer.apple.com,然后进行以下步骤: 为应用建立建立一个不带通配符的App ID用该App ID生成和安装相应的Provisioning Profile文件。配置iTunes Connect 登录到iTunes Connet,然后进行以下步骤: 用该App ID创建一个新的应用。在该应用中…

IOS内购流程从0-1手把手教会

苹果掌握着可能是全球最重要的APP分发渠道,然而30%的抽成近年来也被人批评,现在苹果似乎也看到反对意见了,从2021年1月1日开始,部分小型企业的分成费用降低到15%。 据报道,苹果将于2021年1月1日启动App Store小企业项目,会降低他们的抽成费用。针对年收入不足100万美元的…

leetcode217. 存在重复元素(vip题)超简单

给定一个整数数组&#xff0c;判断是否存在重复元素。 如果任何值在数组中出现至少两次&#xff0c;函数返回 true。如果数组中每个元素都不相同&#xff0c;则返回 false。 示例 1: 输入: [1,2,3,1] 输出: true 示例 2: 输入: [1,2,3,4] 输出: false 示例 3: 输入: [1,1,…

订单数据持久化和验证相关解决方案

订单数据持久化 有时候苹果支付在支付完成后,从苹果服务器返回收据的过程中可能会掉单(可能是网络问题,可能是苹果BUG,也有一部分是开发者自身埋的坑),因此我们需要一个订单持久化的机制来保障。 首先根据内购商品ID(此商品ID是在苹果后台建好的内购商品)、用户信息(…