首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >Redis事务管理

Redis事务管理

原创
作者头像
DB之路
修改2021-03-08 14:23:01
修改2021-03-08 14:23:01
7810
举报
文章被收录于专栏:数据库PG数据库PG

redis中的事务跟关系型数据库中的事务是一个相似的概念,但是有不同之处。

关系型数据库事务执行失败后面的sql语句不在执行,而redis中的一条命令执行失败,其余的命令照常执行。

redis中开启一个事务是使用multi,相当于begin\start transaction,exec提交事务,discard取消队列命令(非回滚操作)。

redis于mysql对比

MySQL

Redis

开启

start transaction/begin

multi

语句

普通SQL

普通命令

失败

rollback 回滚

discard 取消(不叫回滚,是队列里面的命令不执行,队列里面的任务根本就没有执行。而不是执行了也可以撤回来)

成功

commit

exec

Redis 事务命令

命令

描述

DISCARD

取消事务,放弃执行事务块内的所有命令。

EXEC

执行所有事务块内的命令。

MULTI

标记一个事务块的开始。

UNWATCH

取消 WATCH 命令对所有 key 的监视。

WATCH key [key ...]

监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

事务执行举例

ZADD salary 2000 user1

ZADD salary 3000 user2

ZRANGE salary 0 -1 WITHSCORES

MULTI

ZINCRBY salary 1000 user1

ZINCRBY salary -1000 user2

EXEC

Redis中事务中的锁机制

举例:我正在买票 Ticket -1 , money -100

而票只有1张, 如果在我multi之后,和exec之前, 票被别人买了,即ticket变成0了。

我该如何观察这种情景,并不再提交:

悲观的想法:

世界充满危险,肯定有人和我抢, 给 ticket上锁, 只有我能操作. [悲观锁]

乐观的想法:

没有那么人和我抢,因此,我只需要注意,有没有人更改ticket的值就可以了 [乐观锁]

Redis的事务中,启用的是乐观锁,只负责监测key没有被改动.

Redis服务管理命令

命令

描述

BGREWRITEAOF

异步执行一个 AOF(AppendOnly File) 文件重写操作

BGSAVE

在后台异步保存当前数据库的数据到磁盘

CLIENT KILL [ip:port] [ID client-id]

关闭客户端连接

CLIENT LIST

获取连接到服务器的客户端连接列表

CLIENT GETNAME

获取连接的名称

CLIENT PAUSE timeout

在指定时间内终止运行来自客户端的命令

CLIENT SETNAME connection-name

设置当前连接的名称

CLUSTER SLOTS

获取集群节点的映射数组

COMMAND

获取 Redis 命令详情数组

COMMAND COUNT

获取 Redis 命令总数

COMMAND GETKEYS

获取给定命令的所有键

TIME

返回当前服务器时间

COMMAND INFO command-name [command-name ...]

获取指定 Redis 命令描述的数组

CONFIG GET parameter

获取指定配置参数的值

CONFIG REWRITE

对启动 Redis 服务器时所指定的 redis.conf 配置文件进行改写

CONFIG SET parameter value

修改 redis 配置参数,无需重启

CONFIG RESETSTAT

重置 INFO 命令中的某些统计数据

DBSIZE

返回当前数据库的 key 的数量

DEBUG OBJECT key

获取 key 的调试信息

DEBUG SEGFAULT

让 Redis 服务崩溃

FLUSHALL

删除所有数据库的所有key

FLUSHDB

删除当前数据库的所有key

INFO [section]

获取 Redis 服务器的各种信息和统计数值

LASTSAVE

返回最近一次 Redis 成功将数据保存到磁盘上的时间,以 UNIX 时间戳格式表示

MONITOR

实时打印出 Redis 服务器接收到的命令,调试用

ROLE

返回主从实例所属的角色

SAVE

异步保存数据到硬盘

SHUTDOWN [NOSAVE] [SAVE]

异步保存数据到硬盘,并关闭服务器

SLAVEOF host port

将当前服务器转变为指定服务器的从属服务器(slave server)

SLOWLOG subcommand [argument]

管理 redis 的慢日志

SYNC

用于复制功能(replication)的内部命令

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档