Redis高级应用
上一篇博文讲述了Redis的一些常用命令,可以对数据库及数据库服务器进行操作,本篇将讲述Redis的高级应用及配置
- 安全性
- 设置密码:修改redis.conf中的requirepass,在其后面添加密码即可
- 使用:
- 进入客户端时,添加参数u;即 redis-cli -u password
 - 进入客户端后,使用命令 auth,即 auth password
 
 
 - 使用:
 
 - 设置密码:修改redis.conf中的requirepass,在其后面添加密码即可
 - 主从复制
- 通过主从复制可以允许多个是slave server拥有和master server相同的数据库副本
 - 特点:
- Master可以拥有多个slave
 - 多个slave可以连接同一个master外,还可以连接到其他的slave
 - 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求
 - 提高系统的伸缩性
 
 - Redis主从复制过程
 
- Slave与master建立连接,发送sync同步命令
 - Master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存
 - 后台完成保存后,就将此文件发送给slave
 - Slave将此文件保存到硬盘上
 
- 配置主从服务器
- 配置slave服务器:
 
- 在slave的配置文件中修改slaveof,在其后面添加master的ip
 - 在slave的配置文件中修改masterauth,在其后面添加master的密码
 
 
 - 事务处理
- Redis只能保证一个client发起的事务可以连续执行,中间不插入其他client的命令
 - 原理:但一个client在一个连续中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放入一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令
 - 打开事务:multi
 - 执行并关闭事务:exec
 - 关闭并取消事务:discard
 - 监视:watch命令会监视给定的key,当exec时,如果监视的key从调用watch后发生变化,这整个事务将失败
- 乐观锁:基于数据库表的版本解决方案中,一般是通过为数据库表添加一个“version”字段来实现读取数据时,将此版本号一同读出,之后更新时,对此版 本号+1。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据版本号大于数据库当前版本号,则予以更新,否则认为是过期数据
 - 监视key:watch,如 watch key
 - 关闭监视:unwatch,如 unwatch key
 
 
 - 持久化机制
- Redis两种持久化方式
- snapshotting(快照)默认方式
- 将内存中数据以快照的方式写入二进制文件中,默认文件名为dump.rdb。
 - 可通过配置自动化快照持久化的方式,修改redis.conf的save参数,配置redis在n秒内如果超过m个key被修改就自动做快照
 
 - Append-only file(aof)
- 将操作写入文件中,当发生操作时,写入磁盘
 - 修改redis.conf的appendonly为yes,开启aof方式
 - 修改redis.conf的appendfsync的参数,设置aof方式
- always:收到写命令就立即写入磁盘
 - everysec:没秒钟写入磁盘一次
 - no:完全依赖os写入
 
 
 
 - snapshotting(快照)默认方式
 
 - Redis两种持久化方式
 - 发布订阅消息
- 发布订阅(pub/sub)是一种消息通信模式,主要目的是解除消息发布者和消息订阅者之间的耦合,
 - 订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令向redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此信息
 - 订阅消息:subscribe/psubscribe,如 subscribe/psubscribe key
 - 发布消息:publish,如 publish key value
 
 - 虚拟内存的使用
- 暂时把不经常访问的数据内存交换到磁盘中,从而腾出内存空间用于其他需要访问的数据
 - 提高数据库容量的办法之一是使用虚拟内存把那些不经常访问的数据交换到磁盘中
 - 配置
- vm-enabled:设置虚拟内存是否开启
 - vm-swap-file:交换出来的value保存的文件路径
 - vm-max-memory:redis使用的最大内存上限
 - vm-page-size:每个页面的大小
 - vm-pages:最多使用多少个页面
 - vm-max-threads:用于执行value对象换入的工作线程数量
 
 
 
Redis高级应用的更多相关文章
- 分布式缓存技术redis学习系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
		
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
 - NoSQL之Redis高级实用命令详解--安全和主从复制
		
Android IOS JavaScript HTML5 CSS jQuery Python PHP NodeJS Java Spring MySQL MongoDB Redis NOSQL Vim ...
 - 分布式缓存技术redis学习(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
		
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
 - 3.Redis高级功能
		
3.Redis高级功能3.1 慢查询分析3.1.1 慢查询的两个配置参数3.1.2 最佳实践3.1.3 单线程架构3.2 Redis Shell3.2.1 redis-cli 详解3.2.2 redi ...
 - 分布式缓存技术redis系列(四)——redis高级应用(集群搭建、集群分区原理、集群操作)
		
本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 <详细讲解redis数据结构(内存模型)以及常用命令> <redis高级应用( ...
 - redis 高级特性 不要太好用
		
Redis高级特性及应用场景 redis中键的生存时间(expire) redis中可以使用expire命令设置一个键的生存时间,到时间后redis会自动删除它. 过期时间可以设置为秒或者毫秒精度. ...
 - Redis学习第八课:Redis高级实用特性(二)
		
Redis高级实用特性 4.持久化机制 Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化.Redis支持两种持久化方式:(1).snapshott ...
 - Redis学习第八课:Redis高级实用特性(一)
		
Redis高级实用特性 注:我学习的环境是vmware7.1 + ubantu10.10+ redis 3.0.2 1.安全性 设置客户端连接后进行任何其他指定前需要的密码.因为redis速度相当快, ...
 - redis高级应用(集群搭建、集群分区原理、集群操作)
		
文章主目录 Redis集群简介 Redis集群搭建 Redis集群分区原理 集群操作 参考文档 本文是redis学习系列的第四篇,前面我们学习了redis的数据结构和一些高级特性,点击下面链接可回看 ...
 - 架构师养成记--32.Redis高级(安全 主从复制)
		
Redis高级命令及特性 keys * 返回满足的所有键值(*表示模糊匹配) exists 是否存在指定的key(返回1表示存在,0表示不存在) expire 设置某个key的过期时间,使用ttl查看 ...
 
随机推荐
- IE11之F12 Developer Tools--调试器(Debugger)
			
使用调试器工具在代码运行时对其导航.设置监视点和断点,查看调用堆栈,以及提高编译/精简JavaScript的可读性. 调试器可以帮助你了解为何你的代码片段会出现未按照预期方式运行.未在预期时间运行及在 ...
 - MySQL5中大数据错误:Packet for query is too large (****** > ******). You can change this value on the server by setting the max_allowed_packet' variable.;
			
使用的MySQL数据库版本:5.5 插入或更新字段有大数据时(大于1M),会出现如下错误: ### Cause: com.mysql.jdbc.PacketTooBigException: Packe ...
 - 重构第21天 合并继承 (Collapse Hierarchy)
			
理解:本文中的”合并继承”是指如果子类的属性和方法也适合于基类,那么就可以移除子类,从而减少依赖关系. 详解:上一篇我们讲到“提取子类”重构是指当基类中的一个责任不被所有的子类所需要时,将这些责任提取 ...
 - 已超过传入消息(65536)的最大消息大小配额。若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性。
			
错误:已超过传入消息(65536)的最大消息大小配额.若要增加配额,请使用相应绑定元素上的 MaxReceivedMessageSize 属性. 或者 错误:反序列化操作“GetAllUserData ...
 - UnityShader快速上手指南(一)
			
简介 引言 其实网上有很多shader教程,但是大概看了下,也不知是网上各位大神已经脱离了代码层面的高度还是啥原因.貌似没有找到从代码方面作为入门讲解的,导致了shader对于苦逼程序员入门有一定要求 ...
 - 循序渐进开发WinForm项目(2)--项目代码的分析
			
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
 - [新手学Java]使用内省(Introspector)操作JavaBean属性
			
获取类bean中的所有属性: @Test //获取类bean中的所有属性 public void test1() throws Exception{ BeanInfo info = Introspec ...
 - 不可或缺 Windows Native (6) - C 语言: 函数
			
[源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...
 - JPA(7)  spring-data-jpa
			
对于不是使用spring管理的项目,我们就自己创建对象使用:大概的思路就是①创建dao接口②实现该接口,并且编写逻辑: Dao: public interface StudentDao { publi ...
 - [moka同学摘录]iptables防火墙规则的添加、删除、修改、保存
			
文章来源:http://www.splaybow.com/post/iptables-rule-add-delete-modify-save.html 本文介绍iptables这个Linux下最强大的 ...