首页 > 数据库 >03-redis事务,锁和服务器管理命令

03-redis事务,锁和服务器管理命令

时间:2023-12-26 19:55:56浏览次数:39  
标签:03 事务 redis multi 命令 key 服务器 ticket

一、redis中的事务

redis中的事务跟关系型数据库中的事务是一个相似的概念,但是有不同之处。关系型数据库事务执行失败后面的sql语句不在执行,而redis中的一条命令执行失败,其余的命令照常执行。
redis中开启一个事务是使用multi,相当于begin\start transaction,exec提交事务,discard取消队列命令(非回滚操作)。

image

1.1 事务的命令

  • DISCARD
    • 取消事务,放弃执行事务块内的所有命令。
  • EXEC
    • 执行所有事务块内的命令。
  • MULTI
    • 标记一个事务块的开始。
  • UNWATCH
    • 取消 WATCH 命令对所有 key 的监视。
  • WATCH key [key ...]
    • 监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断。

例子

开启事务功能时(multi)
multi 
command1      
command2
command3
command4

4条语句作为一个组,并没有真正执行,而是被放入同一队列中。
如果,这是执行discard,会直接丢弃队列中所有的命令,而不是做回滚。

exec
当执行exec时,对列中所有操作,要么全成功要么全失败

二、redis 中的锁

  • 悲观锁
  • 乐观锁

举例:我正在买票
Ticket -1 , money -100
而票只有1张, 如果在我multi之后,和exec之前, 票被别人买了,即ticket变成0了.
我该如何观察这种情景,并不再提交
悲观的想法:
世界充满危险,肯定有人和我抢, 给ticket上锁, 只有我能操作. [悲观锁]
乐观的想法:
没有那么人和我抢,因此,我只需要注意,有没有人更改ticket的值就可以了 [乐观锁]

redis乐观锁实现(模拟买票)
发布一张票
set ticket 1

窗口1:
watch ticket
multi
set ticket 0       1---->0

窗口2:
multi 
set ticket 0 
exec 

窗口1:
exec

三、服务器管理命令

对服务器的操作

命令 功能
info 查看配置信息
Clinet list 列出连接的客户端信息
Client kill ip:port 强制关闭掉某个客户端连接
config get * 获取服务器配置信息
CONFIG SET 动态修改配置信息
Dbsize 获取当前库的总个数
FLUSHALL 清空所有数据
select 1 切换数据库 ,一共0--15个库,默认在0号库
FLUSHDB 清空当前库
MONITOR 监控实时指令,可用于做审计日志
save 将当前数据保存,持久化到磁盘
SHUTDOWN 关闭服务器

对key的操作

命令 功能
keys * 查看KEY支持通配符
DEL 删除给定的一个或多个key
EXISTS 检查key是否存在
TYPE 返回键所存储值的类型
EXPIRE\ PEXPIRE 以秒\毫秒设定生存时间
TTL\ PTTL 以秒\毫秒为单位返回生存时间
PERSIST 取消生存实现设置

标签:03,事务,redis,multi,命令,key,服务器,ticket
From: https://www.cnblogs.com/ejjw/p/17929203.html

相关文章

  • 01-redis的安装和基本配置
    一、redis简介1、Redis是一款开源的,ANSIC语言编写的,高级键值(key-value)缓存和支持永久存储NoSQL数据库产品。2、Redis采用内存(In-Memory)数据集(DataSet)。3、支持多种数据类型。4、运行于大多数POSIX系统,如Linux、*BSD、OSX等。redis软件获取和帮助Redis.ioDownload......
  • 02-redis的持久化和数据类型
    一、redis持久化1.1持久化类型|持久化类型|介绍|优点|缺点|-------------|-----------------|-----------------|-------------|--|RDB持久化|可以在指定的时间间隔内生成数据集的时间点快照(point-in-timesnapshot)。|速度快,适合于用做备份,主从复制也是基于RDB持久化功能......
  • redis安装
    #!/bin/bash###############################################################FileName:install_redis.sh#Version:V1.0#Author:junwang#Organization:#CreatedTime:2021-04-1417:12:54#Description:###############################################......
  • 【五期李伟平】CCF-A(S&P'20)The Value of Collaboration in Convex Machine Learning w
    NanW.,etal.“TheValueofCollaborationinConvexMachineLearningwithDifferentialPrivacy.”2020IEEESymposiumonSecurityandPrivacy.304-317.  联邦学习场景中,在适应度函数平滑、强凸、利普斯特连续的条件下,估算各客户端使用不同隐私预算时最终全局模......
  • 浪潮服务器CPU触发自动节流
    什么是CPU自动节流?服务器在运行过程中,随着CPU使用率变高,会耗费更多的电,产生更多的热量导致温度升高。当达到一定程度的时候,会触发自动节流,相当于设备的自我保护,服务器性能会降低。 服务器会亮告警灯,就算是自动节流解除,告警仍在,需要手动清楚日志,然后重启BMC。BMC菜单下,找到"......
  • 一个云服务器可以建多少个网站呢?
    一个云服务器可以建多少个网站呢?建多少网站主要是有两个因素影响:1.云服务器配置大多数云服务器都分3个型号配置,入门型云服务器、企业型云服务器、专业增强型云服务器。不同类型的云服务器,配置大小都不一样,需要选用自己合适的云服务器,当然了,云服务器配置越大,可以建的网站就越多......
  • Redis设计与实现-15.复制
    redis可以通过SLAVEOF命令去复制(同步)另一台服务器,例如:当前有两台redis服务器其信息为:hostnameipportredis_1127.0.0.16379redis_2127.0.0.112345如果redis_2想要同步redis_1的内容,可以在redis_2上执行SLAVEOF127.0.0.16379,进而达到这个效果。RedisSLA......
  • 【已解决】WordPress安装插件提示:需要访问您网页服务器的权限
    前一段时间把workpress做了迁移后,发现安装插件的时候会给出如下提示: 经过百度查询找到解决方法,修改 /var/www/html/wp-config.php文件,增加字段:define('FS_METHOD','direct');如下图 之后重启服务:systemctlrestarthttpd,即可正常安装插件了,如下 ......
  • 这儿有一个基于redis生成订单流水号的工具,拿走不谢!
     1importcn.hutool.core.util.RandomUtil;2importcn.hutool.core.util.StrUtil;3importlombok.extern.slf4j.Slf4j;4importorg.springframework.beans.factory.annotation.Autowired;5importorg.springframework.data.redis.core.RedisTemplate;6import......
  • ORA-01113: file 69 needs media recovery ORA-01110: data file 69: 'E:\FWPTDB\D
    继续上一篇写1、当解决了ORA-01033:ORACLEinitializationorshutdowninprogress 这个问题后重新连接此数据库的时候又出现以下问题ORA-01113:file69needsmediarecovery ORA-01110:datafile69:'E:\FWPTDB\DBFFILES\HNRZ\HNRZFW.DBF2、解决方案  ......