redis ruby客户端学习(五)

By | 01月11日
Advertisement

一,redis是支持事务的,请看这篇介绍

下面介绍几个ruby实现的命令,multi,exec,discard,watch,unwatch。

1,multi:标记一个事务块开始,exec:执行所有 MULTI 之后发的命令

require 'Redis'
r = Redis.new
r.set 'a', 1
r.set 'b', 2

r.multi
r.set 'a', 3
r.set 'b', 6
r.exec

#r.get 'a'
#=> "3"
#r.get 'b'
# => "6"

2,discard:丢弃所有 MULTI 之后发的命令

require 'Redis'
r = Redis.new
r.set 'a', 1
r.set 'b', 2

r.multi
r.set 'a', 3
r.set 'b', 6
r.discard
#r.get 'a'
#=> "1"
#r.get 'b'
# => "2"

3,watch:锁定key直到执行了 MULTI/EXEC 命令

watch会检查时给定的key,如果从开始watch的时候,到执行exec的时候。所监视的key发生了变化,整个事务就会失败。

假设两个redis链接分别为r1和r2。

require 'Redis'
r1 = Redis.new
r1.set 'a', 1
r1.set 'b', 2

r1.multi
r1.set 'a', 3
r1.set 'b', 6
#r2中改变a的值后,执行exec
r1.exec
#r1.get 'a'
#=> "1"
#r1.get 'b'
# => "2"
require 'Redis'
r = Redis.new
r.set 'a', 100

4,unwatch:

刷新一个事务中已被监视的所有key。重新开始watch

redis中事务和mysql中事务的区别

事务中出现错误时,整个事务中的操作是不会回滚的

Similar Posts:

  • 《Redis源码学习笔记》键过期

    <Redis源码学习笔记>文章列表 Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除,eg: redis 127.0.0.1:6379> setex name 5 diaocow # 为键name设置5秒的过期时间 OK redis 127.0.0.1:6379> 5 秒后... redis 127.0.0.1:6379> get name # 键过期被删除,返回nil (nil) 那这一切Redis究竟是怎么实现的呢?

  • 开源中国iOS客户端学习——(十二)用户登陆

    上一篇博客 开源中国iOS客户端学习--(十一)AES加密中提到将用户名和密码保存到了本地沙盒之中,在从本地读取用户名和密码,这是一个怎样的过程? -(void)saveUserNameAndPwd:(NSString *)userName andPwd:(NSString *)pwd { NSUserDefaults * settings = [NSUserDefaults standardUserDefaults]; [settings removeObjectForKey:@"UserNa

  • OpenGL入门学习[五]

    OpenGL入门学习[五] 转自: http://www.cppblog.com/doing5552/archive/2009/01/08/71532.html 今天要讲的是三维变换的内容,课程比较枯燥.主要是因为很多函数在单独使用时都不好描述其效果,我只好在最后举一个比较综合的例子.希望大家能一口气看到底了.只看一次可能不够,如果感觉到迷糊,不妨多看两遍.有疑问可以在下面跟帖提出. 我也使用了若干图形,希望可以帮助理解. 在前面绘制几何图形的时候,大家是否觉得我们绘图的范围太狭隘了呢?坐标只能

  • Ruby/Rails学习教程-Hello Ruby

    项目需要,我的Ruby之旅也开始了.学习之初必定是各种菜各种困惑,但是作为Developer,学习新知识是我们的基本技能.于是决定写点什么,来自我记录自己的成长轨迹. 从最初的Hello World 开始,ruby 的一个很好的入门途径就是通过官网的Document :入门后我要做的就是多练习,多查找多看API.在查资料中也找到了一些优秀的网站,作为Ruby修行不失为一个很好的途径. 1. https://rubymonk.com/ 里面有6个lesson,跟着这些lesson从基础的开始学起.

  • [Java并发包学习五]CountDownLatch和CyclicBarrier介绍

    概述 JDK中提供了一些用于线程之间协同等待的工具类,CountDownLatch和CyclicBarrier就是最典型的两个线程同步辅助类.下面分别详细介绍这两个类,以及他们之间的异同点. CountDownLatch类 CountDownLatch顾名思义:倒计数锁存器.没错,他就是一个计数器,并且是倒着计数的.他的应用场景如下: 一个任务A,他需要等待其他的一些任务都执行完毕之后它才能执行.就比如说赛跑的时候,发令员需要等待所有运动员都准备好了才能发令,否则不被K才怪嘞! 此时CountD

  • Redis Java客户端Jedis的基础案例

    jedis是java访问redis的一个客户端,通过Jedis可以像Redis的控制台一样操作Redis数据库,功能类似FTPClient HttpClient ,充当一个访问Redis数据库的连接器角色 Jedis工具类: package com.zhiwei.redis_jedis; import java.util.ResourceBundle; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool;

  • 一个不错的redis gui客户端

    随着网站性能要求的提升,redis.memcached之类的no-sql数据库应用也越来越广泛,redis-desktop-manager是一款不错的redis gui客户端,用户可以很方便的查看redis内部的数据. 由于官网在国外,为了提升下载速度,我将自己下载的软件放在了百度网盘里面,供有需要的朋友下载:https://pan.baidu.com/s/1o8loNUi

  • ruby -- 基础学习(五)empty、nil、blank三者之间的区别

    这三个方法在ROR中经常用到,都是用来判断是否为空的. 区别是: ruby的方法:.nil?..empty? rails的方法 :.blank? 用法的区别: .nil? : 判断对象是否存在. .empty? : 是对象已经存在,判断是否为空字段. .blank? : 相当于同时满足 .nil? 和 .empty? . 注: Rails API中的解释是如果对象是:false, empty, 空白字符都是blank. 比如说: "", " ", nil, [],

  • WCF学习五(客户端和服务器时间不一致,导致通道建立失败的问题)

    最近,经常有客户反应,前天还用的好好的系统,今天就不能用了. 考虑到系统近来没有做过改动和升级操作,所以从客户的机器环境入手解决,最后发现客户端的日期时间和服务端的日期时间有较大差异,将客户端机器修改成和服务端的日期时间一致后,系统恢复正常. 查了一下资料,原来WCF安全校验通道,在建立时,会将客户端和服务端的时间进行对比,如果差异超过一定范围,通道建立工作就会失败:这个时间范围默认为5分钟,可通过配置进行修改,具体方法可到网上搜索. 另外,客户端为什么用的好好的,突然就不行了,最后检查发现,客

  • Ruby method 学习笔记

    学习笔记,来自于Programming Ruby 1.9 Ruby 关于Method 一. 定义方法 使用关键字 def 方法名称以小写字母或下划线开头,后面跟着字母.数字和下划线 有的方法名后面跟着?,!或= 方法名有?通常意味着方法返回boolean型结果 例: 1.even? # => false 2.even? # => true 1.instance_of?(Fixnum) # => true 方法名后有!,则此方法的接收者将被修改 方法名后加=,通常意味着赋值 Ruby方法的

Tags: