赞
踩
用来管理内存,提高内存效率
参考文章
事务中的错误
- 使用事务时可能会遇上以下两种错误:
事务在执行 EXEC 之前,入队的命令可能会出错。比如说,命令可能会产生语法错误(参数数量错误,参数名错误,等等),或者其他更严重的错误,比如内存不足(如果服务器使用 maxmemory 设置了最大内存限制的话)。
redis中事务的总结:
- 对于发生在 EXEC 执行之前的错误,客户端以前的做法是检查命令入队所得的返回值:如果命令入队时返回 QUEUED ,那么入队成功;否则,就是入队失败。如果有命令在入队时失败,那么大部分客户端都会停止并取消这个事务。
- 不过,从 Redis 2.6.5 开始,服务器会对命令入队失败的情况进行记录,并在客户端调用 EXEC 命令时,拒绝执行并自动放弃这个事务。
- 在 Redis 2.6.5 以前, Redis 只执行事务中那些入队成功的命令,而忽略那些入队失败的命令。
- **而新的处理方式则使得在流水线(pipeline)中包含事务变得简单,因为发送事务和读取事务的回复都只需要和服务器进行一次通讯。
至于那些在 EXEC 命令执行之后所产生的错误, 并没有对它们进行特别处理: 即使事务中有某个/某些命令在执行时产生了错误, 事务中的其他命令仍然会继续执行。**
换言之:
指令在入队列(事务)时发生错误,如语法错误,那么整个队列的指令就都不会执行。
如果说在执行了exec指令后,发现指令中存在错误,如向一个不存在的list中添加数据,那么只是发生错误的指令执行错误,而整个队列(事务)中的其他的(正常)指令依旧会被执行,不会像传统数据库一般发生回滚,redis也不支持回滚。
永久配置
配置文件:redis.conf
save 60 1000 #RDB模式:表示60s内有1000次操作就会做一次快照,(snapshot)
appendonly yes #AOF模式
手动
客户端执行:
- RDB
- BGSAVE/SAVE
- AOF
- BGREWRITEAOF #重构AOF文件,减少磁盘空间占用
运行时怎样从RDB方式切换为AOF方式
- 为最新的 dump.rdb 文件创建一个备份。
将备份放到一个安全的地方。
- 执行以下两条命令:
- redis-cli config set appendonly yes
- redis-cli config set save “”
- 确保写命令会被正确地追加到 AOF 文件的末尾。
- 执行的第一条命令开启了 AOF 功能: Redis 会阻塞直到初始 AOF 文件创建完成为止, 之后 Redis 会继续处理命令请求, 并开始将写入命令追加到 AOF 文件末尾。
- 执行的第二条命令用于关闭 RDB 功能。 这一步是可选的, 如果你愿意的话, 也可以同时使用 RDB 和 AOF 这两种持久化功能。
重要:别忘了在 redis.conf 中打开 AOF 功能! 否则的话, 服务器重启之后, 之前通过 CONFIG SET 设置的配置就会被遗忘, 程序会按原来的配置来启动服务器。
redis复制是怎么进行工作
如果设置了一个slave,不管是在第一次链接还是重新链接master的时候,slave会发送一个同步命令 然后master开始后台保存,收集所有对修改数据的命令。当后台保存完成,master会将这个数据文件传送到slave,然后保存在磁盘,加载到内存中;master接着发送收集到的所有的修改数据的命令,这好比一个流命令,是redis协议本身来实现的。
你可以自己通过远程登录来进行尝试,当服务器在做一些工作并发送同步命令的时候链接到redis端口,你将会看到大量的数据传输,然后收到的每个命令会会显示在远程登录的会话中。
当master和slave因一些故障当机时,slaves会自动的重链,如果master收到多个slave的同步请求,master会执行一个后台保存,以确保所有的slaves都是正常的。
当master和slave能够维持链接,就会有一个完整的同步进行。
主机设置一个masterauth 密码,redis-cli运行如下指令
config set requirepass <password>
持久到配置文件:
requirepass <password>
从机
masterauth <password>
slaveof <master_host_ip|master_host_name> <port>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。