zoukankan      html  css  js  c++  java
  • redis高级知识

     

    一、事务及锁应用

      a) 事务开启:multi

      b) 事务回滚:discard

      c) 事务成功:exec

      d) 事务前上乐观锁,检测key是否改动:watch key

      e) 取消所有锁:unwatch

      注:multi后面的语句中出错可能有两种情况:

      1、语法有问题,exec时报错,所有语句取消执行。

      2、语法本身没错,但适用对象出错,比如 sadd 操作 string对象,exec之后,会执 行正确的语句,并跳过不适当的语句。

    二、频道发布和消息订阅

      a) 订阅消息:subscribe test

      b) 发布消息:publish test message

      c) 通配订阅:psubscribe test*

    三、rdb快照持久化

      修改redis.config:

      a) save 900 1:刷新快照到硬盘中,必须满足两者要求才触发--每隔900秒之后至少1个关键字发生变化。

      b) save 300 10:每隔300秒之后至少10个关键字发生变化。

      c) stop-writes-on-bgsave-error yes:后台存储错误停止写操作

      d) rdbcompression yes:使用LZF压缩rdb文件。

      e) rdbchecksum yes:存储和加载rdb文件时校验。

      f) dbfilename dump.rdb:设置rdb文件名。

      g) dir ./ :设置工作目录,rdb文件会写入该目录

      rdb工作原理:每隔n分钟或n写操作后,从内存dump数据形成rdb文件压缩放在备份目录.

      rdb的缺陷: 两个保存点之间断电或出故障将会丢失1-N分钟的数据,出于对持久化的更精细要求,redis增添了aof方式 append only file.

    四、aof日志持久化

      a) 开启aof日志功能:appendonly no => appendonly yes

      b) appendfsync always:每1命令都立即同步到aof,安全但速度慢

      c) appendfsync everysec:折中方案,每秒写一次

      d) appendfsync no:写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof。同步频率低,速度快。

      e) no-appendfsync-on-rewrite yes;正在导出rdb快照的过程中,是否停止同步aof

      f) auto-aof-rewrite-percentage 100aof文件大小比起上次重写时的大小,增长率100%时重写

      g) auto-aof-rewrite-min-size 64mbaof文件至少超过64M时重写。

      注: aof重写:是指把内存中的数据,简化成命令写入到aof日志中,解决aof 日志过大的问题。如果rdb文件和aof文件都存在,优先使用aof来恢复数据。在dump.rdb过程中,所有的操作缓存在内存队列里,dump执行完成后统一操作,不会导致aof数据丢失。

    五、redis主从复制(集群)

      a) Master配置:

        1.关闭rdb快照(备份工作交给slave

        2.可以开启aof

      b) Slave 配置:

        i. 声明slave-ofslaveof 127.0.0.1 6379

        ii. 配置密码masterauth(如果master requirepass有密码)

        iii. Slave打开rdb快照功能

        iv. 配置是否只读(slave-read-only

      c) 复制redis.confcp redis.conf redis6380.conf  cp redis.conf redis6381.conf

      d) 开启守护进程(主从):daemonize yes

      e) 端口号(主从): port  端口号

      f) 启动pid(主从)pidfile /var/run/redis_端口号.pid

      g) 配置日志文件(主从):logfile  "./logdata/端口号.log"

    六、redis运维常用命令

      a) time:服务器时间,时间戳(秒),微妙数

      b) dbsize:当前数据库key数量

      c) bgrewriteaof:后台进程重写aof

      d) bgsave:后台进程保存rdb快照

      e) save:保存rdb快照

      f) lastsave:上次保存时间

      g) slaveof:设为slave服务器

      h) flushdb:清空当前数据库所有键

      i) flushall:清空所有数据库所有键

      j) info:查看redis详情

      k) config get/set xx:获取或设置 redis.conf文件的配置信息

      l) shutdown:关机

    七、aof恢复

      a) 如果flushall:立即 shutdown nosave关机,然后到aof日志把flushall命令删除。

    八、sentinel监控

      a) sentinel monitor def_master 217.0.0.1 6379 2:连续两次连接不上为master失效

      b) sentinel auth-pass def_master xxx:设置master密码

      c) sentinel down-after-milliseconds def_master 30000:默认30秒为通讯失效间隔时间

      d) sentinel can-failover def_master yes:如果master失效,实施其中一slavemaster

      e) redis-server ./sentinel --sentinel:执行sentinel redis服务

    九、PHPredis扩展

    a) pecl.php.net复制 stable 版本下载链接

    b) wget 下载解压

    c) 执行

  • 相关阅读:
    else 的特殊用法和三目运算
    pycharm快捷键
    5、【排序算法】选择排序
    4、【排序算法】希尔排序
    3、【排序算法】直接插入排序
    1、【常见算法】不使用第三个变量交换两个数的值
    1、【排序算法】冒泡排序
    7、【树形结构】哈夫曼树
    6、【树形结构】红黑树
    5、【树形结构】AVL树
  • 原文地址:https://www.cnblogs.com/zgxblog/p/13220562.html
Copyright © 2011-2022 走看看