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 <<EOF
    daemonize yes
    port 6379
    logfile /data/6379/redis.log
    dir /data/6379
    dbfilename dump.rdb
    EOF
    
    
    重启redis
    redis-cli shutdown 
    redis-server /data/6379/redis.conf 
    netstat -lnp|grep 63
    
    配置文件说明
    
    是否后台运行: daemonize yes
    默认端口: port 6379
    日志文件位置:  logfile /var/log/redis.log
    持久化文件存储位置:  dir /data/6379
    RDB持久化数据文件:  dbfilename dump.rdb
    
  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
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容

  • 文章已经放到github上 ,如果对您有帮助 请给个star[https://github.com/qqxuanl...
    尼尔君阅读 2,280评论 0 22
  • 【本教程目录】 1.redis是什么2.redis的作者3.谁在使用redis4.学会安装redis5.学会启动r...
    徐猿猿阅读 1,863评论 0 35
  • redis是什么 redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Valu...
    烨枫_邱阅读 765评论 0 6
  • 1.1 资料 ,最好的入门小册子,可以先于一切文档之前看,免费。 作者Antirez的博客,Antirez维护的R...
    JefferyLcm阅读 17,030评论 1 51
  • 安全性 设置客户端连接后进行任何其他指令前需要使用的密码。 警告:因为redis 速度相当快,所以在一台比较好的服...
    OzanShareing阅读 1,660评论 1 7