Redis附加功能之Redis事务】的更多相关文章

一.事务 Redis 的事务功能允许用户将多个命令包裹起来,然后一次性地.按顺序地执行被包裹的所有命令.在事务执行的过程中,服务器不会中断事务而改去执行其他命令请求,只有在事务包裹的所有命令都被执行完毕之后,服务器才会去处理其他命令请求. 事务示例: 现在, 让我们假设 SETEX 命令并不存在于 Redis , 并且 SET 命令也不支持 EX seconds 参数, 如果我们要自己来实现一个 SETEX 命令的话, 那么我们可能会使用以下代码: def SETEX(key, seconds,…
流水线功能的目的:通过减少客户端与服务器之间的通信次数来提高程序的执行效率. 一.通信 在一般情况下, 用户每执行一个 Redis 命令,客户端与服务器都需要进行一次通信:客户端会将命令请求发送给服务器,而服务器则会将执行命令所得的结果返回给客户端. 当程序执行一些复杂的操作时, 客户端可能需要执行多个命令, 并与服务器进行多次通信. 假设我们正在构建一个为图书打标签(tag)的网站,这个网站上的每本图书都可以被打上任意多个标签.并且为了记录哪些标签的图书是最多人阅览的,我们会为每个标签创建一个…
一.慢查询分析 许多存储系统(例如MySql)提供慢查询日志帮助开发和运维人员定位系统存在的慢操作. 所谓慢查询日志就是系统在命令执行前后计算每条命令的执行时间,当超过预设阈值,就将这条命令的相关信息(例如:发生时间.耗时.命令的详细信息)记录下来,Redis也提供了类似的功能. Redis客户端执行一条命令分为如下4个部分: 慢查询只统计3.执行命令的时间,所以没有慢查询并不代表客户端没有超时问题. 1.慢查询的两个配置参数 对于慢查询需要明确两件事:预设阈值怎么设置?慢查询记录存放在哪里?…
一.键过期功能的相关命令 二.设置生存时间 Redis 提供了两个命令来设置键的生存时间(TTL,time to live),它们分别是: 如果给定的键不存在,那么 EXPIRE 和 PEXPIRE 将返回 0 ,表示设置失败:如果命令返回 1 ,那么表示设置成功.当一个键被设置了生存时间之后,它的生存时间将会随着时间的流逝而减少:时间过去一毫秒,键的生存时间就减少一毫秒:时间过去一秒钟,键的生存时间就减少一秒钟:以此类推.当一个键的生存时间被减少至低于 0 时,Redis 就会自动将这个键删除…
3.Pipeline 3.1 Pipeline概念 Redis客户端执行一条命令分为如下四个过程: (1)发送命令 (2)命令排队 (3)命令执行 (4)返回结果 其中(1)和(4)称为Round Trip Time(RTT,往返时间). Redis提供了批量操作命令( 例如mget.mset等) ,可以有效地节约RTT.但大部分命令是不支持批量操作的,例如要执行n次hgetall命令,并没有mhgetall命令存在,需要消耗n次RTT.Redis的客户端和服务端可能部署在不同的机器上.例如客户…
原文 Redis提供了5种数据结构,但除此之外,Redis还提供了注入慢查询分析,Redis Shell.Pipeline.事务.与Lua脚本.Bitmaps.HyperLogLog.PubSub.GEO等附加功能,这些功能可以在某些场景发挥很重要的作用. Pipeline 1. Pipeline概念 Redis客户端执行一条命令分为以下四个步骤: 1.发送命令2.命令排队3.命令执行4.返回结果 其中,第一步+第四步称为Round Trip Time(RTT,往返时间). Redis提供了批量…
Redis提供了5种数据结构已经足够强大,但除此之外,Redis还提供了诸如慢查询分析.功能强大的Redis Shell.Pipeline.事务与Lua脚本.Bitmaps.HyperLogLog.发布订阅.GEO等附加功能,这些功能可以在某些场景发挥重要作用. 慢查询分析:通过慢查询分析,找出有问题的命令进行优化: Redis Shell:功能强大的Redis Shell会有意想不到的使用功能: Pipeline:通过Pipeline(管道或者流水线)机制有效提高客户端性能: 事务与Lua:制…
1. Redis事务 Redis中的事务(transaction)是一组命令的集合,一个事务中的命令要么都执行,要么都不执行.事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令. > multi OK > sadd user::following QUEUED > sadd user::followers QUEUED > EXEC ) (integer) ) (integer) multi命令告诉redis,发送的sadd命令属于同一个事务,先…
Redis 简介 Redis 是完全开源免费的,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用. Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储. Redis支持数据的备份,即master-slave模式的数据备份. 性能极高 – Redis能读的速度是110000次/s…
5.1开始事务 MULTI 命令的执行标记着事务的开始: 当客户端处于非事务状态下时, 所有发送给服务器端的命令都会立即被服务器执行. Redis 的事务不可嵌套, 当客户端已经处于事务状态, 而客户端又再向服务器发送 MULTI 时, 服务器只是简单地向客户端发送一个错误, 然后继续等待其他命令的入队.MULTI 命令的发送不会造成整个事务失败, 也不会修改事务队列中已有的数据. 5.2命令入队 但是, 当客户端进入事务状态之后, 服务器在收到来自客户端的命令时,不会立即执行命令, 而是将这些…
3.Redis高级功能3.1 慢查询分析3.1.1 慢查询的两个配置参数3.1.2 最佳实践3.1.3 单线程架构3.2 Redis Shell3.2.1 redis-cli 详解3.2.2 redis-server 详解3.2.3 redis-benchmark 详解3.3 Pipeline3.3.1 Pipeline概念3.3.2 性能测试3.3.3 原生批量命令与Pipeline对比3.3.4 最佳实践3.4 事务与Lua3.4.1 事务3.4.2 Lua用法简介3.4.3 Redis与L…
接着上一篇,这篇文章分析一下redis事务操作中multi,exec,discard三个核心命令. 原文地址:http://www.jianshu.com/p/e22615586595 看本篇文章前需要先对上面文章有所了解: redis源码分析之事务Transaction(上) 一.redis事务核心命令简介 redis事务操作核心命令: //用于开启事务 {"multi",multiCommand,1,"sF",0,NULL,0,0,0,0,0}, //用来执行事…
部分参考链接 Transaction StackExchange.Redis Transaction hashest 正文 Redis 是一种基于内存的单线程数据库.意味着所有的命令是一个接一个的执行. 考虑只有一个Redis实例,也就是Redis本身没有做分布式. 通过SETNX命令,set if not exist的缩写.那么多个服务在调用的时候可以通过同一个key申请一个lock(也就是调用命令成功返回1),然后根据相应条件做释放(比如时间到期,or手动释放),也就是delete key.…
Redis支持事务机制,但Redis的事务机制与传统关系型数据库的事务机制并不相同. Redis事务的本质是一组命令的集合(命令队列).事务可以一次执行多个命令,并提供以下保证: (1)事务中的所有命令都按顺序执行.事务命令执行过程中,其他客户端提交的命令请求需要等待当前事务所有命令执行完成后再处理,不会插入当前事务命令队列中. (2)事务中的命令要么都执行,要么都不执行,即使事务中有些命令执行失败,后续命令依然被执行.因此Redis事务也是原子的. 注意Redis不支持回滚,如果事务中有命令执…
Redis队列功能介绍 List 常用命令: Blpop删除,并获得该列表中的第一元素,或阻塞,直到有一个可用 Brpop删除,并获得该列表中的最后一个元素,或阻塞,直到有一个可用 Brpoplpush Lindex获取一个元素,通过其索引列表 Linsert在列表中的另一个元素之前或之后插入一个元素 Llen获得队列(List)的长度 Lpop从队列的左边出队一个元素 Lpush从队列的左边入队一个或多个元素 Lpushx当队列存在时,从队到左边入队一个元素 Lrange从列表中获取指定返回的…
在 <企业应用架构模式> 中 提到了 乐观锁定, 用 时间戳 来 判定 交易 是否有效, 避免 传统事务 的 表锁定 造成 的 瓶颈 . 在 现在的 大并发 的 大环境下, 传统事务 及其 表锁定 以及 事务带来 的 性能消耗, 确实 不能适应 当今 的 大并发 的 场景 了 . 感觉 传统事务 也就只能用在 办公系统 了,   哈哈哈哈 . 但是 传统事务 的 表锁定 是 合理的, 表锁定 使得 事务中 其它 线程 不能 读写 表 . 不能 写, 这个容易理解, 不能 读 是怎么回事 ? 因…
一. 慢查询原因分析 与mysql一样:当执行时间超过阀值,会将发生时间耗时的命令记录 redis命令生命周期:发送 排队 执行 返回慢查询只统计第3个执行步骤的时间 预设阀值:两种方式,默认为10毫秒1,动态设置6379:> config set slowlog-log-slower-than 10000 //10毫秒10000微秒使用config set完后,若想将配置持久化保存到redis.conf,要执行config rewrite 2,redis.conf修改:找到slowlog-lo…
1. Redis 发布订阅 1.1 概述 Redis 发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅者(sub)接收消息. Redis 客户端可以订阅任意数量的频道. 下图展示了频道 channel1 , 以及订阅这个频道的三个客户端 —— client2 . client5 和 client1 之间的关系: 当有新消息通过 PUBLISH 命令发送给频道 channel1 时, 这个消息就会被发送给订阅它的三个客户端: 1.2 步骤: 1.2.1.  创建了订阅频…
事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断. 1.事务基本命令: multi:标记一个事务块的开始 exec:执行所有事务块内的命令 discard:取消事务,放弃执行事务块内的所有命令 watch:监视一个(或多个) key ,如果在事务执行之前这个(或这些) key 被其他命令所改动,那么事务将被打断. unwatch:取消 WATCH 命令对所有 key 的监视. redis > multi OK redi…
关闭redis持久化功能持久化会报如下信息 会影响硬盘写入性能 所以没什么用 就关掉吧 修改redis配置文件,redis.conf 第115行左右. 1.注释掉原来的持久化规则 <pre>#save 900 1#save 300 10#save 60 10000</pre> 2.设置为空 <pre>save ""</pre> 然后重启redis服务即可. ps:linux RDB: 10 MB of memory used by cop…
1 mysql基本命令 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroot -p -h 127.0.0.1 3.远程链接mysql服务端 mysql -uroot -p -h 192.168.1.197 远程授权: grant all privileges on *.* to root@"192.168.1.100" identified by "redhat"; flush privilege…
[1]两大特性 (1)多数据库 1个redis实例 可以有16个数据库,默认下标为0~15,默认连接到的是 0 下标的数据库. (2)事务 [2]多数据库 [2.1]概念 1个redis实例 可以有16个数据库,默认下标为0~15,默认连接到的是 0 下标的数据库. [2.2]基本操作 (1)select (切换数据库):select 1 把当前数据库切换到下标为 1 的数据库 (2)move(移动当前db下的 anykey 到其他 db):move nowdb_anykey new_db  =…
6.redis哨兵功能 Redis-Sentinel Redis-Sentinel是redis官方推荐的高可用性解决方案,当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的功能. 而redis-sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动切换slave > master. sentinel主要功能如下: 不时的监控redis是否良好运行,如果节点不可达就…
提到事务,相信大家都不陌生,事务的ACID四大特性,也是面试时经常问的,不过一般情况下,我们可能想到的是传统关系型数据库的事务,其实,Redis也是提供了事务机制的,本篇博客就来讲解下Redis的事务机制. 1. 事务演示 Redis的事务提供了一种将多个命令请求打包,然后一次性.按顺序性地执行多个命令的机制. 在事务执行期间,服务器不会中断事务而去执行其它客户端的命令请求,它会将事务中的所有命令执行完毕,然后才去处理其它客户端的命令请求. 下图展示了一个Redis事务的执行过程: 可以看出,事…
本文来源:https://www.dazhuanlan.com/2020/02/05/5e3a0a3110649/ 背景 前段时间自己在做附近直播相关业务,其中有一个核心的点就是检索用户附近的主播,也是主要召回池.针对业务场景的特殊性,最后决定使用Redis的GEO技术来完成这个功能.主要考虑点在于每天在线直播的主播数量是固定的差不多一万这个量级,使用配置好一点的单机Redis单key存储是没问题的.数据操作主要有两个:一是主播开播的时候写入主播Id的经纬度,二是主播关播的时候删除主播Id元素.…
redis哨兵功能 redis-Sentinel(哨兵) 前言 当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户都没有实现主从切换的功能 redis-sentinel是redis官方推荐的高可用性解决方案, 而redis-Sentinel就是一个独立运行的进程,用于监控多个master-slave集群,自动发现master宕机,进行自动切换slave>master 功能: 不时的监控redis是否良好运行,如果节点不可达就会对节点进行下线标识…
配置 maven项目进入相关配置 <dependency>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-data-redis</artifactId>    <version>2.1.0.RELEASE</version></dependency> 配置文件添加redis配置 Applicat…
许可证 <The Little Redis Book>是经由Attribution-NonCommercial 3.0 Unported license许可的,你不需要为此书付钱. 你可以自由地对此书进行复制,分发,修改或者展示等操作.当然,你必须知道且认可这本书的作者是Karl Seguin,译者是赖立维,而且不应该将此书用于商业用途. 关于这个许可证的详细描述在这里: http://creativecommons.org/licenses/by-nc/3.0/legalcode 关于作者…
Windows下Redis的安装使用 0.前言 因为是初次使用,所以是在windows下进行安装和使用,参考了几篇博客,下面整理一下 1.安装Redis 官方网站:http://redis.io/ 官方下载:http://redis.io/download 可以根据需要下载不同版本 windows版:https://github.com/MSOpenTech/redis github的资源可以ZIP直接下载的(这个是给不知道的同学友情提示下) 下载完成后 可以右键解压到 某个硬盘下 比如D:\R…
一.Redis是什么 Redis是一种基于键值对(key-value)的NoSQL数据库,与很多键值对数据库不同的是,Redis中的值可以是由string(字符串).hash(哈希).list(列表).set(集合).zset(有序集合).Bitmaps(位图).HyperLogLog.GEO(地理信息定位)等多种数据结构和算法组成,因此Redis可以满足很多的应用场景,而且因为Redis会将所有数据都存放在内存中,所以它的读写性能非常惊人. 不仅如此,Redis还可以将内存的数据利用快照和日志…