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默认为乐观锁

redis乐观锁

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

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

使用watch的Redis

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

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事务,-乐观锁与悲观锁-,-服务器管理命令)