redis事务和redis集群
一、事务(相对mysql来说简单)
1. 比较
①:mysql ----->start trantation ---->普通sql ------->回滚rollback------>commit ②:redis -------> multi-(放入queue队列)-->普通命令----->discard (取消,不是真正的回滚感觉) ---->exec
2. 注
rollback与discard的区别 如果已经成功执行2条语句,第3条语句出错RollBack后, ①:前两条语句影响会消失
②:Discard只是结束本次事务(第三条失败,其他两条不影响),前两条语句造成的影响仍然存在 在mutil后面的语句中,语句出错可能有两种情况
1. 语法就有问题,这种exec时,报错,所有语句得不到执行
2. 语法本身没错,但使用对象有问题,比如zadd操作list对象,exec之后,会执行正确的语句,并跳过有不适当的语句 watch key1 key2 ....keyn 监视key有没有变化,如果有变,则事务取消 unwatch 取消所有watch监视
二、 发布订阅
①:publish aa ‘aa’ 发布消息 (publish aa ‘aa’) ②:subscribe aa 订阅消息
③:psubscribe aa 订阅消息,模糊匹配(aabb也可以接收到)
三、集群搭建
1. 主从备份,防止主机宕机
2. 读写分离,分担master的任务
3. 任务分离,如从服务分别分担备份工作与计算工作
4.
①:cp redis.conf redis210.conf
②:cp redis.conf redis211.conf ③:pkill -9 redis ④:vim redis.conf 修改配置文件
--slave1配置
pidfile /var/run/redis211.pid
port 8031
dbfilename dump211.rdb //快照(很浪费io,所以一台有rdb)
slaveof localhost 8030 //作为8030的slave,也就是8030端口为master slaveof <masterip> <masterport>
slave-read-only yes //只读
--slave2配置
pidfile /var/run/redis212.pid
port 8032
#save 900 1 //注释三个save是为了取消使用rdb
#save 300 10
#save 60 3000
appendonly no //关闭aof(日志持久化)
slaveof localhost 8030
--master配置
#save 900 1 //注释三个save是为了取消使用rdb
#save 300 10
#save 60 3000 ⑤:
./bin/redis-server redis.conf
./bin/redis-server redis211.conf
./bin/redis-server redis212.conf ⑥:测试
./bin/redis-cli //先链接主服务器
set title an
./bin/redis-cli -p 8031 //链接8031 redis服务器
get title
--set pic //因为只读所以报错 ⑦:master设置连接密码:requirepass passwd
slave设置连接master的密码:masterauth passwd ⑧:auth passwd ⑨:pkill -9 redis 杀掉redis进程 ⑩:bind:可以绑定允许访问数据库的地址,只能绑定一个地址 ⑪ ⑬⑫
5. 主从复制缺陷
每次slave断开后(无论是主动断开,还是网络故障等)再连接master,都要master全部dump出来rdb,再aof,即同步的过程都要重新执行1遍,所以要记住,多台slave不要一下启动起来,否则master可能IO剧增。
redis事务和redis集群的更多相关文章
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- redis + 主从 + 持久化 + 分片 + 集群 + spring集成
Redis是一个基于内存的数据库,其不仅读写速度快,每秒可以执行大约110000的写操作,81000的读取操作,而且其支持存储字符串,哈希结构,链表,集合丰富的数据类型.所以得到很多开发者的青睐.加之 ...
- 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- 分布式缓存技术redis系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
- redis高级应用(集群搭建、集群分区原理、集群操作)
文章主目录 Redis集群简介 Redis集群搭建 Redis集群分区原理 集群操作 参考文档 本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 ...
- Shiro经过Redis管理会话实现集群(转载)
原文:http://www.myexception.cn/software-architecture-design/1815507.html Shiro通过Redis管理会话实现集群 写在前面 1.在 ...
- Redis(十)集群:Redis Cluster
一.数据分布 1.数据分布理论 2.Redis数据分区 Redis Cluser采用虚拟槽分区,所有的键根据哈希函数映射到0~16383整数槽内,计算公式:slot=CRC16(key)&16 ...
- 一文掌握Redis的三种集群方案
在开发测试环境中,我们一般搭建Redis的单实例来应对开发测试需求,但是在生产环境,如果对可用性.可靠性要求较高,则需要引入Redis的集群方案.虽然现在各大云平台有提供缓存服务可以直接使用,但了解一 ...
- Redis 3.0 Cluster集群配置
Redis 3.0 Cluster集群配置 安装环境依赖 安装gcc:yum install gcc 安装zlib:yum install zib 安装ruby:yum install ruby 安装 ...
- Redis 3.0.2集群搭建以及相关问题汇总
Redis3 正式支持了 cluster,是为了解决构建redis集群时的诸多不便 (1)像操作单个redis一样操作key,不用操心key在哪个节点上(2)在线动态添加.删除redis节点,不用停止 ...
随机推荐
- 数组排序array_multisort
array_multisort --对多个数组或者多维数组进行排序[参考:secure.php.net] 说明: bool array_multisort ( array &$array1 [ ...
- oracle 子查询详解 in和exists的区别
sql允许多层嵌套,子查询是嵌套在其他查询中的查询.我们可以把子查询当做一张表来看到,即外层语句可以把内嵌的查询结果当做一张表使用. 子查询查询结果有三种情况 不返回查询记录.若子查询不返回记录则主查 ...
- dypedef 和 define
typedef char *String_t; 和 #define String_dchar * 这两句在使用上有什么区别? 答:typedef char *String_t 定义了一个新的类型别名, ...
- python学习笔记(SMTP邮件发送)
想着给框架添加邮件发送功能.所以整理下python下邮件发送功能 首先python是支持邮件的发送.内置smtp库.支持发送纯文本.HTML及添加附件的邮件 之后是邮箱.像163.qq.新浪等邮箱默认 ...
- js的onclick字符串参数的解决办法
<a href='#' onclick='onedit(\""+ name + "\")';>编辑</a>" 一些写法实例~~ ...
- react 文章
1.http://www.ruanyifeng.com/blog/2016/09/react-technology-stack.html (React 技术栈系列教程) 2.http://www.ru ...
- Eclipse Android 代码自动提示功能
Eclipse Android 代码自动提示功能 Eclipse for android 实现代码自动提示智能提示功能,介绍 Eclipse for android 编辑器中实现两种主要文件 java ...
- 如何切换到自定义的Activity
一. 新建一个空的工程,并添加一个按钮 二.新建一个布局文件,命名为my_aty, 并添加一个文本 三.新建一个类,命名为MyAty,并重写onCreate函数 public void onCreat ...
- 在一个Activity中启动另一个Activity
一.新建一个空的工程 二.添加一个Activity并命名为BAty 三.在activity_main.xml中添加一个按钮,设置id号为btnStartB <Button android:lay ...
- tf随笔-1
生成新的计算图,并完成常量初始化,在新的计算 图中完成加法计算 import tensorflow as tf g1=tf.Graph() with g1.as_default(): value=[1 ...