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

三、事务处理

Redis的事务处理比较简单。只能保证client发起的事务中的命令可以连续的执行,而且不会插入其他的client命令,当一个client在连接中发出multi命令时,这个连接就进入一个事务的上下文,该连接后续的命令不会执行,而是存放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。如果其中执行出现错去,执行正确的不会回滚,次不同于关系型数据库的事务。

       

回滚后age的值已经改变。

取消一个事务用discard,取消事务队列,数据全部回滚。

Redis乐观锁:使用watch监视指定的key,当exec时如果监视的key从调用watch后发生过变化,这整个事务会失败。可调用watch多次监视多个key。watch和事务对整个连接有效,如果断开了连接监视和事务都会清除(exec,discard,unwatch也不例外)。

四、持久化机制

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

Redis支持两种持久化方式:

1、snapshotting(快照),将数据存放到文件里,默认方式。

是将内存中的数据已快照的方式写入到二进制文件中,默认文件dump.rdb,可以通过配置设置自动做快照持久化的方式。可配置Redis在n秒内如果超过m

个key被修改就自动保存快照。

save 900 1       #900秒内如果超过1个key被修改,者发起快照保存

save 300  10   #300秒内如果超过10个key被修改,这快照保存

save  60    10000  #60秒内如果超过10000个数据被修改,发起快照保存

2、 Append-only file(缩写为aof),将读写操作存放到文件中。

由于快照方式在一定间隔时间做一次,所以如果Redis意外down掉的话,就会丢失最后一次快照后的所有修改。

aof比快照方式有更好的持久化性,是由于使用aof时,redis会将每一个收到的写命令都通过write函数住家到文件中当redis启东市会通过重新执行文件中保存

的写命令来在内存中重新建立整个数据库的内容。

由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上,这样aof方式的持久化也还是有可能会丢失一部分数据。

可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。

appendonly   yes  #启用aof持久化方式

#appendfsync    always //收到写命令就立即写入磁盘,最慢,但是保证了数据的完整持久化

appendfsync       everysec  //每秒中写入磁盘一次,在性能和持久化方面做了很好的折中

#appendfsync      no     //完全依赖os,性能最好,持久化没有保证

开启以后,在bin文件夹中会多两个存储文件,如下:

五、发布与订阅信息

发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间起到消息路由的功能。订阅者通过subscribe和psubscribe命令向redis订阅自己感兴趣的消息类型,redis将信息类型成为通道(channel)。当发布者通过关publish命令向redis server发送特定类型的信息时,订阅该消息类型的全部client都会接收到此消息。

例如开启三个客户端,一个发布消息,另外两个订阅消息,如下

六、虚拟内存的使用

Redis的虚拟内存是暂时吧不经常访问的数据从内存交换到磁盘中,从而腾出内存空间用于其他的访问数据,尤其对于redis这样的内存数据库,内存总是不够用的。除了分隔到多个redis server外,提高数据库的容量的方法就是使用虚拟内存,把那些不常访问的数据交换到磁盘上。

通过配置vm相关的redis.config配置:

vm-enable  yes                                      #开启vm功能

vm-swap-file    /tmp/redis.swap          #交换出来的value保存的文件路径

vm-max-memory    10000000              #redis使用的最大内存上线

vm-page-size           32                           #每个页面的大小32字节

vm-pages                  123217729          #最多使用多小个页面

vm-max-threads        4                            #用于执行value对象换入的工作线程数量

时间: 2024-08-27 15:30:46

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

自学总结redis第三部分(安全性、主从、哨兵、事物、持久化、发布与订阅、虚拟内存)

八.redis的安全性 因为redis速度相当快,所以在一台比较好的服务器下,一个外部用户在一秒内可以进行15W次的密码尝试,这意味着需要设定非常强大的密码来防止暴力破解. 可以通过设置密码以及登录redis方式来操作,具体参考 九.redis主从复制 9.1简介 1.Master可以拥有多个slave. 2.多个slave可以连接同一个master外,还可以连接到其他的slave. 3.主从复制不会阻塞master,在同步数据时,master可以继续处理client请求. 4.提供系统的伸缩性

Redis源码解析:30发布和订阅

Redis的发布与订阅功能,由SUBSCRIBE,PSUBSCRIBE,UNSUBSCRIBE,PUNSUBSCRIBE,以及PUBLISH等命令实现. 通过执行SUBSCRIBE命令,客户端可以订阅一个或多个频道.当有客户端通过PUBLISH命令向某个频道发布消息时,频道的所有订阅者都会收到这条消息. 除了订阅具体的频道之外,客户端还可以通过执行PSUBSCRIBE命令订阅一个或多个频道模式.当有客户端通过PUBLISH命令向某个频道发布消息时,消息不仅会被发送给这个频道的所有订阅者,它还会发

07_NoSQL数据库之Redis数据库:Redis的高级应用之事务处理、持久化操作、pub_sub、虚拟内存

 事务处理 Redis对事务的支持目前还比较简单.Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令.当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令. 127.0.0.1:6379> get age (nil) 127.0.0.1:6379> multi OK                

Redis 学习之持久化机制、发布订阅、虚拟内存

该问使用centos6.5 64位  redis3.2.8 一.持久化机制 Redis是一个支持持久化的内存数据库,redis会经常将内存中的数据同步到硬盘上来保证数据持久化,从而避免服务器宕机数据丢失问题,或者减少服务器内存消耗提高性能. 持久化方式: 1.Snapshotting:快照,redis默认持久化方式,这种方式是将内存中的数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb.可以通过配置设置自动做快照持久化的方式.我们可以配置redis在n秒内如果超过m个key被修改

Redis 笔记与总结6 Redis 高级应用之 事务处理、持久化操作、pub_sub、虚拟内存

3.事务处理 redis 对事务的支持目前还比较简单. redis 只能保证一个 client 发起的事务中的命令可以连续的执行,而中间不会插入其他 client 的命令. 由于 redis 是单线 程来处理所有 client 的请求的所以做到这点是很容易的.一般情况下redis 在接受到一个 client 发来的命令后会立即处理并 返回处理结果,但是当一个client 在 一个连接中发出 multi 命令时,这个连接会进入一个事务上下文,该连接后续的命令并不是立即执行,而是先放到一个队列中.当

Redis的高级应用

Redis的高级应用 实验简介 前面学习了Redis的基础知识和基本命令,接下来继续讲解Redis的高级应用,包括:安全性设置,主从复制,事务处理, 持久化机制, 虚拟内存的使用. 一.安全性 设置在客户端连接是需要指定的密码(由于redis速度相当的快,一秒钟可以150K次的密码尝试,所以需要设置一个密码强度很大的密码). 设置密码的方式有两种: (1) 使用config set 命令的requirepass 参数,具体格式为config set requirepass "password&q

Redis的高级特性一览

更多内容,欢迎关注微信公众号:全菜工程师小辉.公众号回复关键词,领取免费学习资料. 应用场景 缓存系统:用于缓解数据库的高并发压力 计数器:使用Redis原子操作,用于社交网络的转发数,评论数,粉丝数,关注数等 排行榜:使用zset数据结构,进行排行榜计算 实时系统:使用Redis位图的功能实现布隆过滤器,进而实现垃圾邮件处理系统 消息队列:使用list数据结构,消息发布者push数据,多个消息订阅者通过阻塞线程pop数据,以此提供简单的消息队列能力 之所以说简单,是因为Redis官方不提供可靠

小贝_redis高级应用-发布与订阅

redis高级应用-发布与订阅 一.发布与订阅(pub/sub)功能 二.发布与订阅(pub/sub)机制 三.redis发布与订阅(pub/sub)的实现 一.发布与订阅(pub/sub)功能 Pub/Sub功能(meansPublish, Subscribe)即发布及订阅功能.基于事件的系统中,Pub/Sub是目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件:发布者(如服务

Redis 详解 (七) AOF 持久化

目录 1.AOF简介 2.AOF 配置 3.开启 AOF 4.AOF 文件恢复 5. AOF 重写 6.AOF的优缺点 上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失).对于数据完整性要求很严格的需求,怎么解决呢? 本篇博客接着来介绍Redis的另一种持久化方式——AOF. 回到顶部 1.AOF简介 Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库