现在的位置: 首页 > 综合 > 正文

redis (5).事务处理以及持久化

2014年02月24日 ⁄ 综合 ⁄ 共 1216字 ⁄ 字号 评论关闭

1.redis中的事务处理。使用 multi和exec
//先使用multi开始事务的标记,事务块内的多条命令会按照先后顺序
//被放进一个队列当中,最后由 EXEC 命令原子性(atomic)地执行。
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set age 1
QUEUED
redis 127.0.0.1:6379> set name
QUEUED
redis 127.0.0.1:6379> set sex n
QUEUED
redis 127.0.0.1:6379> exec
1) OK
2) OK
3) OK
redis 127.0.0.1:6379> get age
"111"
redis 127.0.0.1:6379> get name
"yangyi"
redis 127.0.0.1:6379> get sex
"nan"
redis 127.0.0.1:6379>

2.取消一个事务。discard。清空事务队列和标记上下文。也就是回滚
redis 127.0.0.1:6379> multi
OK
redis 127.0.0.1:6379> set age 333
QUEUED
redis 127.0.0.1:6379> discard
OK
redis 127.0.0.1:6379> get age
"111"
redis 127.0.0.1:6379>

3.事务里面队列某个错误,不影响其他队列成员执行,不会回滚

4.redis持久化,将内存中的数据同步到硬盘
两种方式:
1)snapshotting(快照)默认方式。
2)Append-only file(缩写aof)的方式

第1种方式是将内存中的数据以快照的方式写入到二进制文件中,默认
文件名是dump.rdb.
在redis.conf中:
save 900 1  900秒内超过1海里key被修改,则发起快照保存
save 300 10
save 60 10000

第2种方式aof方式
由于第1种快照方式有一定的时间间隔,很有可能redis意外down
掉的话,最后一次的所有修改将会丢失。那么,aof会把每一次写命令通过write函数
追加到文件中,当redis重启时,会执行文件中的写命令来重建内存数据库

在redis.conf中
1)appendonly yes
2)# appendfsync always  #一直同步
appendfsync everysec #每秒同步
# appendfsync no #不同步
选择一个同步方式

重启redis ,
set age 3333
会发现多了一个文件appendonly.aof

5.虚拟内存的使用,将不常用的内容移动到磁盘中。
vm-enabled yes
vm-swap-file D:/phpweb/redis/redis.swap
vm-max-memory 100000
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
保存退出重启redis

会提示说要加入配置really-use-vm yes ,那么加入好了。

抱歉!评论已关闭.