Resid功能介绍, 安装部署, 发布订阅, Redis事务, 乐观锁与悲观锁 , 服务器管理命令

Redis

1、Redis功能介绍

高速读写

数据类型丰富 ******************
支持持 久化 ******************
多种内存分配及回收策略
支持事务 ******************
消息队列、消息订阅
支持高可用
支持分布式分片集群 (面试) ******************
缓存穿透\雪崩(笔试、面试) ******************
Redis API ************

2、Redis使用场景介绍

Memcached:多核的缓存服务,更加适合于多用户并发访问次数较少的应用场景

Redis:单核的缓存服务,单节点情况下,更加适合于少量用户,多次访问的应用场景。

Redis一般是单机多实例架构,配合redis集群出现。

3. Redis安装部署

  1. 下载安装

    下载:
    wget http://download.redis.io/releases/redis-3.2.12.tar.gz
    
    解压:
    上传至 /data
    tar xzf redis-3.2.12.tar.gz
    mv redis-3.2.12 redis
    
    安装:
    cd redis
    make
    
    启动:
    src/redis-server &
    
    环境变量:
    vim /etc/profile 
    export PATH=/data/redis/src:$PATH
    source /etc/profile 
    
    redis-server & 
    
  2. 配置文件

    [root@standby ~]# redis-cli  shutdown
    
    mkdir /data/6379
    
    cat >>/data/6379/redis.conf <
  3. 客户端命令常用参数说明

    redis-cli 刚装完,可以在redis服务器上直接登录redis
    -p 6379   指定端口号
    -h        指定链接地址
    -a        指定链接密码
    redis-cli  set num  10 ,无交互执行redis命令
    cat /tmp/1.txt |redis-cli
    
    [root@db01 ~]# redis-cli -h 10.0.0.51  -p 6379
    10.0.0.51:6379> 
    
  4. redis安全配置

    redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。
    禁止protected-mode
    
    1. Bind :指定IP进行监听
    echo "bind 10.0.0.200  127.0.0.1" >>/data/6379/redis.conf
    
    2. 增加requirepass  {password}
    echo "requirepass 123" >>/data/6379/redis.conf
    
    3. 重启redis
    redis-cli shutdown 
    redis-server /data/6379/redis.conf 
    
  5. 在线查看和修改配置

    CONFIG GET *
    CONFIG GET requirepass
    CONFIG SET requirepass 123
    
  6. redis持久化(内存数据保存到磁盘)

    作用:可以有效防止,在redis宕机后,缓存失效的问题.

    RDB 持久化

    可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot)。
    优点:速度快,适合于用做备份,主从复制也是基于RDB持久化功能实现的。
    缺点:会有数据丢失
    
    rdb持久化核心配置参数
    vim /data/6379/redis.conf
    dir /data/6379
    dbfilename dump.rdb
    
    save 900 1
    save 300 10
    save 60 10000
    
    配置分别表示:
    900秒(15分钟)内有1个更改
    300秒(5分钟)内有10个更改
    60秒内有10000个更改
    

    AOF 持久化(append-only log file)

    记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。 
    AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
    优点:可以最大程度保证数据不丢
    缺点:日志记录量级比较大
    
    AOF持久化配置
    vim /data/6379/redis.conf
    appendonly yes  # 是否打开aof日志功能,每1个命令,都立即同步到aof 
    appendfsync everysec  # 每秒写1次
    
    appendfsync always
    appendfsync no
    

    总结

    持久化方式有哪些?有什么区别?
    rdb:基于快照的持久化,速度更快,一般用作备份,主从复制也是依赖于rdb持久化功能
    aof:以追加的方式记录redis操作日志的文件。可以最大程度的保证redis数据安全,类似于mysql的binlog
    

4. 发布订阅

PUBLISH channel msg
​ 将信息 message 发送到指定的频道 channel

SUBSCRIBE channel [channel ...]
​ 订阅频道,可以同时订阅多个频道

UNSUBSCRIBE [channel ...]
​ 取消订阅指定的频道, 如果不指定频道,则会取消订阅所有频道

PSUBSCRIBE pattern [pattern ...]
​ 订阅一个或多个符合给定模式的频道,每个模式以 * 作为匹配符,比如 it* 匹配所 有以 it 开头的频道( it.news 、 it.blog 、 it.tweets 等等), news.* 匹配所有 以 news. 开头的频道( news.it 、 news.global.today 等等),诸如此类

PUNSUBSCRIBE [pattern [pattern ...]]
​ 退订指定的规则, 如果没有参数则会退订所有规则

PUBSUB subcommand [argument [argument ...]]
​ 查看订阅与发布系统状态

注意:使用发布订阅模式实现的消息队列,当有客户端订阅channel后只能收到后续发布到该频道的消息,之前发送的不会缓存,必须Provider和Consumer同时在线。

发布订阅例子:

窗口1:
127.0.0.1:6379> SUBSCRIBE baodi 
窗口2:
127.0.0.1:6379> PUBLISH baodi "jin tian zhen kaixin!"

订阅多频道:
窗口1:
127.0.0.1:6379> PSUBSCRIBE wang*
窗口2:
127.0.0.1:6379> PUBLISH wangbaoqiang "jintian zhennanshou "

5. Redis事务

redis的事务是基于队列实现的
mysql的事务是基于事务日志实现的

multi 开启事务

discard 取消执行

exec 执行

开启事务功能时(multi)
multi
command1
command2
command3
command4

4条语句作为一个组,并没有真正执行,而是被放入同一队列中。
如果,这是执行discard,会直接丢弃队列中所有的命令,而不是做回滚。

当执行exec时,对列中所有操作,要么全成功要么全失败

redis是乐观锁, mysql为悲观锁

乐观锁: 在事物开始时修改了某条数据, 还未提交时另一个事物也能修改这条数据并且提交

悲观锁: 在事物开始时修改了某条数据, 还未提交时, 其他事物不得修改这条数据

.

6. 乐观锁与悲观锁

redis默认为乐观锁

Resid功能介绍, 安装部署, 发布订阅, Redis事务, 乐观锁与悲观锁 , 服务器管理命令_第1张图片
redis乐观锁

窗口1开启事务修改了num的值, 还未提交, 窗口2 也在修改num, 并且提交了, 最后两个窗口都提交成功了 ,所以num的值会被修改两次

通过watch可以避免两个事物同时修改了一条记录这一情况

Resid功能介绍, 安装部署, 发布订阅, Redis事务, 乐观锁与悲观锁 , 服务器管理命令_第2张图片
使用watch的Redis

窗口1开启事务修改了a的值, 还未提交, 窗口2 也在修改a, 并且提交了, 这时窗口1再提交就会提交失败

Resid功能介绍, 安装部署, 发布订阅, Redis事务, 乐观锁与悲观锁 , 服务器管理命令_第3张图片
mysql悲观锁

窗口1开启事务修改了money的值, 还未提交, 窗口2 再修改同一数据时会阻塞住

7. 服务器管理命令

Info
Clinet list
Client kill ip:port
config get *
CONFIG RESETSTAT 重置统计
CONFIG GET/SET 动态修改
Dbsize
FLUSHALL 清空所有数据 
select 1
FLUSHDB 清空当前库

MONITOR 监控实时指令
SHUTDOWN 关闭服务器

关闭数据库:
redis-cli -a root shutdown

你可能感兴趣的:(Resid功能介绍, 安装部署, 发布订阅, Redis事务, 乐观锁与悲观锁 , 服务器管理命令)