设为首页 收藏本站
查看: 1353|回复: 0

[经验分享] Redis高级实用特性

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-22 11:40:31 | 显示全部楼层 |阅读模式
1.安全性
  设置客户端连接后进行任何其他指定前需要使用的密码。
  警告:因为redis速度相当快,所以在一台比较好的服务器下,一个外部的用户可以在一秒钟进行150k次密码尝试,这意味着你需要指定非常非常强大的密码来防止暴力破解。
  设置密码是需要修改配置文件中的requirepass选项。例如

  #requirepass foobared
  requirepass beijing
  我们设置了连接口令是beijing。
  
2.主从复制
  Redis主从复制配置和使用都非常简单,通过主从复制可以允许多个slave server拥有和master server相同的数据库副本。
  Redis主从复制特点:
  1.Master可以拥有多个slave。
  2.多个slave可以连接同一个master外,还可以连接到其他的slave。
  3.主从复制不会阻塞master,在同步数据时,master可以继续吹client请求。
  4.提高系统的伸缩性。
  Redis主从复制过程:
  1.Slave与master建立连接,发送sync同步命令。
  2.Master会启动一个后台进程,将数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。
  3.后台完成保存后,就将此文件发送给Slave。
  4.Slave将此文件保存到硬盘上。
  配置主从服务器:
  配置slave服务器很简单,只需要在slave的配置文件中加入以下配置:
  slaveof 192.168.1.1 6379 #指定master的ip和端口
  masterauth beijing #这是让输入密码让主机授权
  
3.事务处理
  Redis对事务的支持目前还比较简单。Redis只能保证一个client发起的事务中的命令可以连续的执行,而中间不会插入其他client的命令。当一个client在一个连接中发出multi命令时,这个连接会进入一个事务上下文,该连接后续的命令不会立即执行,而是先放到一个队列中,当执行exec命令时,redis会顺序的执行队列中的所有命令。使用discard命令清空命令队列并退出事务上下文,也就是我们常说的事务回滚。
DSC0000.jpg
  乐观锁复杂事务控制
  乐观锁:大多数是基于数据库版本(version)的记录机制实现的。即为数据增加一个版本标识,在基于数据库表的版本解决方案中,一遍是通过为数据库表添加一个“version”字段来实现读取出数据时,将此版本号一同读出,之后更新时,对此版本号加1 。此时,将提交数据的版本号与数据库表对应记录的当前版本号进行比对,如果提交的数据库版本号大于数据库当前版本号,则予以更新,否则认为是过期数据。
  watch命令会监视给定的key,当exec时候如果监视的key从调用watch后发生过变化,则整个事务会失败,也可以调用watch多次监视多个key,这样就可以对指定的key加乐观锁了。注意watch的key是对整个连接有效的,事务也一样。如果连接断开,监视和事务都会自动清除。当然了exec,discard,unwatch命令都会清除连接中的所有监视。
  Redis乐观锁实例:假设有一个age的key,我们开2个session来对age进行赋值操作,我们来看下结果如何。
DSC0001.jpg
DSC0002.jpg
DSC0003.jpg

[img]http://onexin.iyunv.com/source/plugin/onexin_bigdata/file:///C:Usersbaojian.zhang.LANDWINDAppDataRoamingTencentUsers284212308QQWinTempRichOleGP1]GG77R3@7C[B4]0QJ0@1.jpg[/img]4.持久化机制
  Redis是一个支持持久化的内存数据库,也就是说Redis需要经常将内存中的数据同步到硬盘来保证持久化。Redis支持两种持久化的方式:
  1.snapshotting(快照)也是默认的方式。
  快照方式是默认的持久化方式。这种方式是将内存中数据以快照的方式写入到二进制文件中,默认的文件名为dump.rdb。可以通过配置设置自动做快照持久化的方式。我们可以配置redis在N秒内如果超过m个key修改就自动做快照。
DSC0004.jpg
  
  2.Append-only file(缩写aof)的方式。
  由于快照方式是在一定间隔时间做一次的,所以如果redis意外down掉的话,就会丢失最后一次快照的所有修改。
  aof比快照方式有更好的持久化性,是由于在使用aof时,redis会将每一个收到的写命令都通过write函数追加到文件中,当redis重启时会重新执行文件中 保存的写命令来在内存中重建整个数据库的内容。
  当然由于os会在内核中缓存write做的修改,所以可能不是立即写到磁盘上。这样aof方式的持久化也还是有可能会丢失部分修改。
  可以通过配置文件告诉redis我们想要通过fsync函数强制os写入到磁盘的时机。
DSC0005.jpg
  
5.发布订阅消息
  发布订阅(pub/sub)是一种消息通信模式,主要的目的是解除消息发布者和消息订阅者之间的耦合,Redis作为一个pub/sub的server,在订阅者和发布者之间起到了消息路由的功能。订阅者可以通过subscribe和psubscribe命令向redis server订阅自己感兴趣的消息类型,redis将信息类型称为通道(channel)。当发布者通过publish命令想redis server发送特定类型的信息时,订阅该信息类型的全部client都会收到此消息。
6.虚拟内存的使用
  Redis的虚拟内存与操作系统的虚拟内存不是一回事,但是思路和目的都是相同的。就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的内存空间用于其他需要访问的数据。尤其是对于redis这样的内存数据库,内存总是不够用。除了可以将数据分割到多个redis server外。另外能够提高数据库容量的办法就是使用虚拟内存把那些不经常访问的数据交换到磁盘上。
  下面是vm相关配置:
DSC0006.jpg

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89439-1-1.html 上篇帖子: Redis主从配置详细过程 下篇帖子: redis配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表