Redis 高级特性(1)—— 事务 过期时间 排序
1. Redis 高级特性 —— 事务
事务概念
Redis 中的事务 (transaction)是一组命令的集合。事务同命令一样是 Redis 的最小执行单位,一个事务中的命令要么都执行,要么都不执行。
事务的原理是先将属于一个事务的命令发送给 Redis,然后再让 Redis 依次执行这些命令。
事务命令
命令 | 说明 |
---|---|
watch key[key…] | 锁定key,直到执行了multi/exec命令 |
multi | 标记一个事务块开始 |
exec | 执行所有multi之后发的命令 |
discard | 丢弃所有multi之后发的命令 |
事务使用
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 1
QUEUED
127.0.0.1:6379> set b 2
QUEUED
127.0.0.1:6379> set c 3
QUEUED
127.0.0.1:6379> exec
1) OK
2) OK
3) OK
127.0.0.1:6379>
multi 标记一个事务的开始,表示之后发送的命令都属于同一个事务,而 exec 命令则告诉 Redis 将等待执行的事务队列中的所有命令(即刚才返回 QUEUED 的命令)按照发送顺序依次执行。exec 命令的返回值是事务命令的返回值组成的列表,返回值顺序和命令的顺序相同。
Redis 会保证一个事务中的命令要么都执行,要么都不执行。如果在执行 exec 命令之前客户端断线了那么 Redis 会自动清空事务队列,事务中的所有命令都不会执行;而如果客户端执行了 exec 命令后断线也没有关系,Redis 已经记录了所有要执行的命令。
错误处理
如果 Redis 事务中一个命令发生错误,那么其它的命令还会执行吗?我们主要看两种错误:
语法错误
只要事务中有一个命令的语法发生错误,那么整个事务中的命令都不会执行。
运行错误
运行错误是指在执行命令时出现的错误,这种错误在实际执行之前是无法发现的,当事务中出现这种运行错误时,其它命令仍然会继续执行的。
Redis 事务不支持关系型数据库事务提供的回滚功能。
watch 命令
watch 命令可以监控一个或者多个键,一旦其中有一个键被修改或删除,之后的事务就不会执行。监控一直持续到 exec 命令 (事务中的命令是在 exec 命令之后执行的,所以在 multi 命令之后可以修改 watch 监控的键值)
127.0.0.1:6379> set a 1
OK
127.0.0.1:6379> watch a
OK
127.0.0.1:6379> set a 2
OK
127.0.0.1:6379> multi
OK
127.0.0.1:6379> set a 3
QUEUED
127.0.0.1:6379> exec
(nil)
127.0.0.1:6379> get a
"2"
127.0.0.1:6379>
2. Redis 高级特性 —— 过期时间
Redis 使用 expire 命令设置一个键的过期时间,到时间后 Redis 会自动删除它。expire 命令的使用方法为
expire key seconds
其中 seconds 表示键的过期时间,单位为秒,expire 命令返回 1 表示设置成功,返回 0 表示键不存在或者设置失败。
127.0.0.1:6379> expire b 10
(integer) 1
127.0.0.1:6379> expire z 10
(integer) 0
127.0.0.1:6379>
ttl 命令用于查询一个键还有多久会被删除,返回值是键的剩余时间,单位为秒;
当键不存在时返回 -2 ;当键没有过期时间即永久存在,那么返回值为 -1
127.0.0.1:6379> keys *
1) "num"
2) "set"
3) "student"
4) "a"
5) "d"
6) "list"
7) "c"
8) "set_a"
9) "set_b"
127.0.0.1:6379> expire num 10
(integer) 1
127.0.0.1:6379> ttl num
(integer) 6
127.0.0.1:6379> ttl num
(integer) 4
127.0.0.1:6379> ttl num
(integer) 2
127.0.0.1:6379> ttl num
(integer) -2
127.0.0.1:6379> keys *
1) "set"
2) "student"
3) "a"
4) "d"
5) "list"
6) "c"
7) "set_a"
8) "set_b"
127.0.0.1:6379>
persist 命令用于设置取消键的过期时间,如果过期时间被成功清除则返回 1;否则返回 0
127.0.0.1:6379> expire d 20
(integer) 1
127.0.0.1:6379> ttl d
(integer) 17
127.0.0.1:6379> persist d
(integer) 1
127.0.0.1:6379> ttl d
(integer) -1
127.0.0.1:6379>
除过使用 persist 命令外,使用 set 命令为键赋值也会清除键的过期时间。
3. Redis 高级特性 —— 排序
Redis 高级特性(1)—— 事务 过期时间 排序相关推荐
- RabbitMQ学习笔记:高级特性TTL(过期时间)
TTL,Time To Live的简称,即消息过期时间,可以对消息和队列设置TTL. 目前有两种方式可以设置消息的TTL.第一种是通过队列的属性设置,队列中的所有消息都有相同的过期时间.第二种方法是对 ...
- redis高级特性学习(慢查询、Pipeline、事务、Lua)(上)
Redis高级特性和应用(慢查询.Pipeline.事务.Lua) Redis的慢查询 许多存储系统(例如 MySQL)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作.所谓慢查询日志就是系统在命 ...
- Redis高级特性及应用场景
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...
- redis查看key的过期时间_面试官:你在Redis中设置过带过期时间的Key吗?
点击上方小伟后端笔记关注公众号 每天阅读Java干货文章 熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过 ...
- redis list设置过期时间_面试官:你在Redis中设置过带过期时间的Key吗?
点击上方小伟后端笔记关注公众号 每天阅读Java干货文章 熟悉Redis的同学应该知道,Redis的每个Key都可以设置一个过期时间,当达到过期时间的时候,这个key就会被自动删除. 在为key设置过 ...
- Redis 高级特性(2)—— 发布 订阅模式
Redis 高级特性 -- 发布订阅 1. 发布-订阅介绍 "发布-订阅"模式包含两种角色,分别为发布者和订阅者.订阅者可以订阅一个或者若干个频道(channel),而发布者可以向 ...
- redis 经纬度_【SpringBoot DB 系列】Redis 高级特性之 GEO
[SpringBoot DB 系列]Redis 高级特性之 GEO GEO 用于存储地理信息,最直观的就是我们日常使用的地图 app 中,如果我想查询我所在地的周边餐饮,就可以利用 geo 中的以(x ...
- 5、Redis高级特性(慢查询、Pipeline、事务、Lua)
一.慢查询 慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阀值,就将这条命令的相关信息(例如:发生时间,耗时,命令的详细信息)记录下来,Redis 也提供了类似的功能. Redis ...
- 搞定Redis高级特性与性能调优
阅读文本大概需要15分钟. 本文适合使用 Redis 的普通开发人员,以及对 Redis 进行选型.架构设计和性能调优的架构设计人员: Redis 的数据结构和相关常用命令 数据持久化 内存管理与数据 ...
最新文章
- 用 Python 详解《英雄联盟》游戏取胜的重要因素!
- 机器学习、深度学习、自然语言处理、计算机视觉顶级期刊的论文资料分享(附顶会论文下载链接)...
- Ubuntu 16.04 安装 CUDA、CUDNN 和 GPU 版本的 TensorFlow 一般步骤总结
- 如何高效的通过BP算法来训练CNN
- spring系统学习:20180611: Spring中AOP通知的类型
- 混淆工具Dotfuscator基本使用
- MySQL-安全对调两个表名
- TurboDrive技术
- Linux-mysql备份
- 自学JAVA-2:数据类型与运算符
- R工程化—Rest API 之plumber包
- 捷联惯导系统学习6.13(状态估计的误差分配与可观测度分析 )
- 开源掌机芯片方案对比
- linux 网桥防火墙,linux透明防火墙(网桥形式).doc
- 短视频源码APP开发——短视频的功能
- XenServer部署系列——网络配置
- Google Play开发者账号注册过程中的安全问题
- IE8下实现视频播放
- python 正则提取 中文,汉字
- Django短信和邮箱注册、支付宝沙箱的使用