一、redis事务的用法

1.开启事务:multi

2.提交事务:exec   ( queued只是把指令放入队列中,没有执行)

3.取消事务:discard

4.redis事务不能保证同时成功或者失败进行提交或者回滚,比如下图中 姓名报错而年龄增加了

5.使用watch

watch命令可以为redis事务听check and set行为,也就是cas

被watch的key会被监视,检测它是否被修改,如果有至少一个key被修改了,整个事务都会取消

开启两个服务,在第一个服务器exec之前,另一个服务对watch的键进行修改操作。程序需要做的就是不断重试这个操作,知道没有发生碰撞。

这种形式的锁被称为乐观锁。

二、持久化

redis是一个支持持久化的内存数据库,redis需要经常将内存中的数据同步到硬盘来保证持久化。

1.默认采用RDB方式

  • Redis默认的方式,redis通过快照来将数据持久化到磁盘中。
  • redis.conf中修改持久化快照的条件:
  • redis.conf中可以指定持久化文件存储的目录
  • dbfilename dump.rdb
  • dir ./
  • 不足:如果就在每隔的这个时间内断机,会有部分缓存中的数据丢失。一般选择使用redis,不太在乎缓存中的数据丢失,数据库中还可以同步。如果数据库没有存储,redis还可以做集群保障。

2.AOF

  • Aof方式的持久化,是操作一次redis数据库,则将操作的记录存储到aof持久化文件中。
  • 开启aof方式:将redis.conf中的appendonly改为yes
  • Aof文件存储的目录和rdb方式的一样。
  • Aof文件存储的名称: appendfilename "appendonly.aof"
  • 如果redis重启,则数据从aof文件加载。
  • 时时持久化,数据不丢失。
  • 不足:但是性能耗费大。

三、发布订阅

使用subscribe [频道]  进行订阅监听

使用publish [频道] [内容]进行发布消息广播

Redis高级特性---------事务与持久化与发布订阅的更多相关文章

  1. Redis事务、持久化、发布订阅

    一.Redis事物 1. 概念 Redis 事务可以一次执行多个命令, 并且带有以下两个重要的保证: 事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他 ...

  2. Redis05——Redis高级运用(管道连接,发布订阅,布隆过滤器)

    Redis高级运用 一.管道连接redis(一次发送多个命令,节省往返时间) 1.安装nc yum install nc -y 2.通过nc连接redis nc localhost 6379 3.通过 ...

  3. redis 高级特性 不要太好用

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  4. Redis高级特性及应用场景

    Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...

  5. 【Redis】二、Redis高级特性

    (三) Redis高级特性   前面我们介绍了Redis的五种基本的数据类型,灵活运用这五种数据类型是使用Redis的基础,除此之外,Redis还有一些特性,掌握这些特性能对Redis有进一步的了解, ...

  6. activemq的高级特性:消息存储持久化

    activemq的高级特性之消息存储持久化 有基于文件的,数据库的,内存的.默认的是基于文件的,在安装目录/data/kahadb.在conf/activemq.xml文件中. <persist ...

  7. Linux07 /redis的配置、五大数据类型、发布订阅、持久化、主从复制、哨兵配置、集群搭建

    Linux07 /redis的配置.五大数据类型.发布订阅.持久化.主从复制.哨兵配置.集群搭建 目录 Linux07 /redis的配置.五大数据类型.发布订阅.持久化.主从复制.哨兵配置.集群搭建 ...

  8. Redis的高级应用-事务处理、持久化、发布与订阅消息、虚拟内存使用

    三.事务处理 Redis的事务处理比较简单.只能保证client发起的事务中的命令可以连续的执行,而且不会插入其他的client命令,当一个client在连接 中发出multi命令时,这个连接就进入一 ...

  9. Redis高级特性介绍及实例分析

    转自:http://www.jianshu.com/p/af7043e6c8f9   Redis基础类型回顾 String Redis中最基本,也是最简单的数据类型.注意,VALUE既可以是简单的St ...

随机推荐

  1. Python这个缩进让我焦头烂额!最奇葩的缩进...

        例如如下程序.     运行上面代码,如果输入年龄小于20,将会看到如下运行结果.     从上面代码可以看出,如果输入的年龄大于20,则程序会执行整体缩进的代码块. 再次重复:Python不 ...

  2. Oracle Sequence Cache 参数说明

    转自 http://blog.csdn.net/tianlesoftware/article/details/5995051 之前整理的一篇文章: ORACLE SEQUENCE 介绍 http:// ...

  3. canvas交互部分

    mousemove let mouse = { x: undefined, y: undefined, } // 鼠标监听事件,获取鼠标移动的相应坐标 window.addEventListener( ...

  4. 登录MySQL提示ERROR 1045 (28000)错误解决方法

    今天,登录服务器准备修改数据库的一些东西.但输入密码,却进不了数据库并提示一个错误,如下图 再确认密码没错的情况下,还是进不了数据库.便在网上找到了解决方法,记录下来,供参考学习. 解决方法: 总体思 ...

  5. Spring常用注解简单汇总

    使用注解之前要开启自动扫描功能,其中base-package为需要扫描的包(含子包). <context:component-scan base-package="cn.test&qu ...

  6. 我用的是python2,以后加python3的内容

    可能有的不成功,比如print 'abc',这时候确定下python版本,3的方式是print('abc')

  7. [翻译] NSImage+HHTint - Tints grayscale images using CoreImage

    NSImage+HHTint - Tints grayscale images using CoreImage https://github.com/gloubibou/NSImage-HHTint ...

  8. Python学习---Django的request.post源码分析

    request.post源码分析: 可以看到传递json后会帮我们dumps处理一次最后一字节形式传递过去

  9. Windows 7 添加快速启动栏

    1.右击任务栏空白处,选择 “工具栏” ,单击 “新建工具栏” 2.输入 以下路径: %userprofile%\AppData\Roaming\Microsoft\Internet Explorer ...

  10. CSS一个属性,让图片后的文字垂直居中,效果看得见

    困扰我多年的疑难,终于解决了.哈哈哈,太爽了 背景 页面经常遇到,图片后面的文字显示在图片的中间部位,也就是说文字图片垂直居中. <div class="banner"> ...