美文网首页
redis常用知识点总结

redis常用知识点总结

作者: brownchen | 来源:发表于2018-03-27 15:18 被阅读0次

    Redis基础概念

    Redis能够提供针对k-v型值的缓存及数据存储服务,它的主要特色归纳如下:

    • 单线程工作模式
    • in-memory工作模式
    • 支持数据持久化
    • 支持主从模式(能借助sentinel实现HA)
    • 支持分布式架构(数据库切片)

    安装Redis
    若无特殊需求,Linux系统直接使用包管理工具安装redis即可。并且大多情况下,redis的配置文件不需要修改,可以直接启动服务。

    • redis守护进程:6379/tcp
    • redis配置文件:/etc/redis.conf
    • redis日志文件:/var/log/redis
    • redis服务端程序:/usr/bin/redis-server
    • redis客户端程序:/usr/bin/redis-cli

    Redis数据操作

    redis有五种基本数据结构:

    • 字符串 Str
    • 哈希 Hash
    • 列表 List
    • 集合 Set
    • 有序集合 Zset

    使用redis-cli命令直接连上redis的交互式命令行接口,就可以进行数据的增删改查操作了,对于常见的编程语言,也提供有API接口对redis进行调用。
    字符串

    创建/修改
    set key value [EX seconds] [PX milliseconds] [NX|XX]
    >> set id 1 NX (只有key不存在时才创建)
    >> set name brown XX (只有key存在时才修改)
    >> set age 26 
    >> incr age (自增/自减,只有value是数值型时才可以)
    >> decr age
    >> set hobby tennis EX 10 (定义该值得存活时间)
    删
    del KEY
    >> del id name age 
    >>flushdb  删除此数据库中的所有值
    查
    >> keys * 列出所有值
    >> get hobby
    

    哈希

    创建
    >> hmset score brown 99 alice 95 marry 87
    >> hset score bob 80
    删
    >> hdel score bob
    修改(先删再加)
    >> hdel score brown
    >> hset score brown 100
    查
    >> hget score brown
    >> hmget score alice marry
    

    列表

    创建
    >> lpush colors white black
    >> rpush colors yellow red
    >> lset colors 0 blue
    删
    >> lpop colors
    >> rpop colors 
    修改
    >> lset colors 1 blue
    查
    >> lindex colors 2
    >> lrange colors 0 -1
    

    集合

    创建
    >> sadd cities beijing shanghai hangzhou beijing (自动去重)
    删
    >> spop cities 2 (随机删除集中中的两个值)
    查
    >> srandmember cities 5 (取出5个值)
    >> sismember citeis beijing
    字典操作
    >> sinter KEY1 KEY2 求交集
    >> sunion KEY1 KEY2 求并集
    

    有序集合

    创建
    >> zadd quiz 90 A 96 B 88 C
    查
    >> zrange quiz 0 -1 withscores
    

    Redis事务功能

    MULTI:开始一个事务;
    EXEC: 执行事务;将命令队列中的所有命令依次提交、逐个执行,然后将命令结果一下返回给客户端;哪怕命令队列中某一条指令出错,不影响之后命令的执行;
    WATCH:乐观锁;启动事务前,指明要监视的键,在EXEC命令执行前,如果有被监视的键的值发生改变,那么此次事务中的所有命令都不会被执行;

    >>> watch id
    >>> multi 
    >>> set id 100
    >>> set name brown
    >>> set gender Male
    >>> set age 26
    >>> exec 
    

    Redis发布/订阅

    频道:以消息队列(list)形式保存数据
    SUBSCRIBE: 客户订阅一个队列;
    PUBLISH:频道管理员向频道发布消息;
    UNSUBSCRIBE:客户退订此前订阅的频道;

    Redis数据持久化

    Redis有两种数据持久化方式:RDB和AOF

    • RDB: 基于快照方式;按配置文件中的策略,周期性地将数据保存至磁盘(SAVE命令);数据文件默认为dump.rdb;

      配置文件中RDB相关参数:
      SAVE 900 1 15分钟内至少1个key发生变化即触发RDB快照(fork一个子线程进行快照,依赖Linux内核写时同步机制保证数据同步)
      SAVE 300 10
      SAVE 60 10000
      SAVE "" 表示不启用RDB备份
      stop-writes-on-bgsave-error yes|no 若备份时出错,是否停止备份
      rdbcompression yes|no 备份时是否压缩文件
      rdbchecksum yes|no
      dbfilename dump.rdb 备份文件名及存放位置
      dir /var/lib/redis

      客户端可使用SAVA或BGSAVE命令手动执行快照;

      • SAVE: 同步,在主线程中保存快照;此时会阻塞所有客户端请求;
      • BGSAVE:异步模式
    • AOF:记录每一次写操作至指定的文件尾部实现持久化;当redis重启时,通过自动重新执行文件中的命令重建数据库;
      配置文件中AOF相关参数:
      appendonly yes|no 是否开启AOF
      appendfilename "appendonly.aof" AOF文件保存位置
      appendfsync {always|everysec|no} 建议使用everysec,表示每秒通知一次内核进行写入(1s内可能有许多写操作)
      no-appendfsync-on-rewrite no
      auto-aof-rewrite-percentage 100
      auto-aof-rewrite-min-size 64mb
      客户端可以使用BGREWRITEAOF命令手动生成.aof文件

    Reids主从模式

    Redis主从模式具有以下特点:

    1. 一个Master可以有多个Slave;
    2. 支持链式复制;即Slave喝Master是相对而言的
    3. Master以非阻塞方式同步数据至slave;

    配置方式:

    1. 配置一个外部的监听地址(bind字段)
    2. 配置文件中指明此节点是哪一个节点的Slave。slaveof <masterip> <masterport>

    相关文章

      网友评论

          本文标题:redis常用知识点总结

          本文链接:https://www.haomeiwen.com/subject/mtsszxtx.html