一、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. PS改变图像颜色

    由于写的一个页面主色调变了,里面的一些图标颜色也要相应改变,自己难得重新去psd里面截图,就想着用ps,看能否直接能变换一下图标颜色.其实方法也很简单的. 1:用ps打开需要改变图标颜色的文件,然后选 ...

  2. windows 程序员电脑设置

    程序员电脑设置: 1.详细目录 a.在一个文件夹下设为详细信息 b.win7点击"组织"-->"文件夹的搜索选项"-->"查看" ...

  3. webapp开发绝对定位引发的问题

    最近做了一个webapp 需求是要滑动页面翻页,我使用了大量绝对定位 当遇到输入框时,在部分手机上发现了问题.虚拟键盘收回时,整个body全部下移了,经过多次测试, 发现是fixed布局的音乐按钮造成 ...

  4. 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控

    [编者按]本文主要介绍 NGINX 的主要功能以及如何通过 Nginx 优化 Python 应用性能.本文系国内 ITOM 管理平台 OneAPM 编译呈现. 本文上一篇系: 利用 NGINX 最大化 ...

  5. [翻译] GMCPagingScrollView

    GMCPagingScrollView https://github.com/GalacticMegacorp/GMCPagingScrollView GMCPagingScrollView is a ...

  6. mysql 创建数据数据库 (避免新建的库名已经存在、设置编码)

    1.创建数据库的 create database 数据库名 eg: Create database mydatabase 查看已创建的数据: show databases; 结果: 2.数据库名所对应 ...

  7. awk.md

    简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的行编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分 ...

  8. Golang 读取写入Etcd

    http://www.yunweipai.com/archives/8131.html 新一代etcd:etcd3 etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现.简 ...

  9. 20165318 2017-2018-2 《Java程序设计》第一周学习总结

    20165318 2017-2018-2 <Java程序设计>第一周学习总结 教材内容学习总结 第一章主要对Java平台进行了简单的介绍,并讲解了如何搭建Java环境. Java平台概论 ...

  10. BZOJ2729:[HNOI2012]排队(组合数学)

    Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不 ...