• [Redis]Redis高级特性的配置及使用


    ----------------------------------------------------------------------------

    【Redis安全性】

    一 . 默认我们进入Redis客户端是不需要密码的,但是在使用任何命令前保证已授权,这在一个你不信任其它人的环境里可能有用。

      1. 按照如下方式可设置密码:

      ① 修改配置文件(默认为/usr/local/etc/redis.conf),找到requirepass foobared,默认已注释掉;将密码设为123456只需要这样,requirepass 123456,然后重启服务。(杀掉主进程:kill -9 进程号,启动:/usr/local/bin/redis-server /usr/local/etc/redis.conf)

        ② 此时/usr/local/bin/redis-cli进入到客户端就需要获取权限,没有将提示:(error) NOAUTH Authentication required.

       

      2. 输入密码有两种方式:

      ① 输入任何命令前,在客户端界面执行:auth 123456

      ② 进入客户端时输入密码:/usr/local/bin/redis-cli -a 123456

     

      其实auth本来应该一直被注释掉,因为向后兼容性并且大部分人不需要权限(例如:他们运行自己的服务)。

     

    注意:由于Redis非常快,针对于一台好的机器一个外部的使用者可以每秒尝试150k次密码。这意味着你应该使用一个非常强壮的密码,否则很容易被破解。

     

    二. 命令的重命名:

    Redis支持在一个共享的环境中对危险命令的名字进行修改,例如:CONFIG这个命令可以重命名成其它很难猜到的名字,以便对内部使用的工具可用而对一般客户端不可用。

      如:rename-command CONFIG othernameofconfig

     

    同样,通过重命名为空字符串可以使一个命名失效。

      如:rename-command CONFIG ""

     

    注意:命名重命名将记录到AOF文件中 或 传输到slave,并且可能会引起问题。

     

    【Redis主从复制】

    一. Redis主从复制特点:

      ① master可以拥有多个slave

      ② 多个slave可以连接同一个master外,还可以连接到其它slave

      ③ 主从复制不会阻塞master,在同步数据时,master可以继续处理client请求

      ④ 提高系统的伸缩性

     

    二. Redis主从复制过程:

      ① slave与master建立连接,发送sync同步命令

      ② master启动一个后台进程,将数据库快照保存到文件中,同时master主进程开始收集新的写命令并缓存。

      ③ 后台完成保存后,就将此文件发送给slave

      ④ slave将此文件保存到硬盘上

     

    三. 配置Redis从服务器:

      要设置IP使用:ifconfig eth0 192.168.117.224

     

      vim /usr/local/etc/redis.conf  # 找到slaveof 和 masterauth,配置如下

      slaveof <masterip> <masterport>  # slaveof 192.168.88.90 6379

      masterauth <master-password>     #masterauth 123456

     

      现在在master里设置一个键,如:set name weichen;使用keys * 或 get name 查看slave是否能复制成功。

      

      自Redis2.6后,slave默认将只读;在Redis从库中写,会出现如下提示:

      

      不过这个可以在配置文件里面作更改(slave-read-only no),然后重启Redis即可允许写操作。

      允许slave写操作,一方面对存储临时的数据有用(因为在和主库重新同步后,从库数据可以很容易被删除掉),但是如果由于配置错误导致客户端对其写操作则会引发问题。

      slave只读的设计是防止在网络上暴露给不被信任的客户端,仅仅是针对误用Redis实例的一个保护层;但是一个只读的slave仍然默认输出所有管理命令,比如 CONFIG, DEBUG等等。在一定程度上,你可以通过使用 'rename-command' 跟踪所有的管理/危险命令来提高只读的slave的安全性。

     

      同步复制策略:disk 或 socket。注意:目前无盘复制是实验性的。

      repl-diskless-sync no

     

    (用info查看当前Redis服务器信息)

      通过几个参数可以判断是Reis主还是从,

      role:master

      slave0:192.168.88.90,6379,online

     

      redis_version 3.0.3 包含下面几类服务器信息:

      #Server

      #Clients

      #Memory

      #Persistence

      #Stats

      #Replication

      #CPU

      #Cluster

     

    注:只要Redis slave配置完成,任何时候slave打开,master数据都会自动复制。

     

    【Redis队列/事务】

    一. 使用multi打开一个队列,exec执行队列命令,discard取消队列;

     

     

    二. 与MySQL的事务不同的是,Redis队列中的命令有未执行成功的,整个事务不会回滚。

     

    三. 乐观锁:使用watch命令对key监控,如果在watch后,该key发生过改变,则事务将失败(即已过期);可以调用多次watch监控多个key;exec、discard、unwatch都会清除连接中的监控。

    例如:上面的age现在是21,先对age进行watch age,此时multi打开队列进行等待,另一方面打开新终端,对age进行set age 30,设置成功后,在第一个终端内执行set age 40,exec执行,提示nil。

     

    【Redis持久化】

    一. Snapshotting(快照)。

      Redis默认的持久化方式,将内存中的数据以快照的方式写入到二进制文件(dump.rdb)中,通过配置文件可以配置多少秒后有至少多少次修改就进行快照。

      save 900 1     #900秒后有至少1次key的修改就持久化

      save 300 10     #300秒后有至少10次key的修改就持久化

      save 60 10000   #60秒后有至少10000次key的修改就持久化

      

      阻止快照的方式:

      ① 注释掉上面三行

      ② 或 改成save ""。

     

    二. Append Only File(AOF方式)

      Redis默认异步将数据备份到磁盘,这种模式对许多应用足够了,但是如果Redis进程出现问题或断电,将导致最近几分钟的写数据丢失(根据配置文件中的保存时间点)。

      Append Only File(AOF)是提供了更好持久性的可选的持久化模式。例如通过fsync(同步内存中所有已修改的文件数据到储存设备)的方式,Redis可以做到在服务器断电的情况下仅丢失一秒钟的写数据,或者在Redis进程错误的情况下丢失单条写数据。

     

      AOF和数据库存储可以同时打开,如果在安装Redis时打开支持AOF,那么Redis将会使用AOF。(http://redis.io/topics/persistence)

      appendonly no            #默认AOF为关闭状态

      appendfilename "appendonly.aof"   #指定写入的文件名

      

      调用fsync()告诉操作系统实时将数据写入磁盘而不是写入输出缓存,一些OS可能不会实时刷新清空缓存数据。为此,Redis提供三种不同的模式:

      appendfsync always  #速度慢,但最安全,每次write都异步持久化

      appendfsync everysec #默认选项,每秒一次的异步保存,速度和数据安全的折中方案

      appendfsync no     #速度较快,不执行异步,让系统自动刷新数据

     

      结论:如果能在考虑到数据丢失的情况下保证运行,可以使用Snapshotting 或者 相反的使用"always"(非常慢但比"everysec"安全一点)。

     

      打开AOF模式(appendonly yes),etc/ 将新增appendonly.aof文件(存储的是操作内容):

     

    五. 发布/订阅(pub/sub)

    订阅者使用subscribe和psubscribe命令向Redis服务订阅消息,发布者通过publish命令向Redis服务发送信息时,订阅的客户端将收到消息。

     

    如:终端1:subscribe m1

      终端2:subscribe m1 m2

      终端3:publish m1 abc;publish m2 hello;#publish命令返回频道订阅者数量,终端3发布的消息将实时显示到终端1和终端2

     

     

     

     

     

     

    Link: http://www.cnblogs.com/farwish/p/4351828.html

  • 相关阅读:
    219. Contains Duplicate II
    189. Rotate Array
    169. Majority Element
    122. Best Time to Buy and Sell Stock II
    121. Best Time to Buy and Sell Stock
    119. Pascal's Triangle II
    118. Pascal's Triangle
    88. Merge Sorted Array
    53. Maximum Subarray
    CodeForces 359D Pair of Numbers (暴力)
  • 原文地址:https://www.cnblogs.com/farwish/p/4351828.html
Copyright © 2020-2023  润新知