• 《redis实战》读书笔记


    1、数据结构:
    (1)String
      值:可以是字符串、整数或者浮点数
      功能:对整个字符串或者字符串的其中一部分执行操作;
      对整数和浮点数执行自增(increment)或者自减(decrement)操作
      命令:GET、SET、DEL
        INCR、DECR、INCRBY(加上整数amount)、DECRBY、INCRBYFLOAT(加上浮点数amount)
        APPEND、GETRANGE、SETRANGE、GETBIT、SETBIT、BITCOUNT、BITOP
    (2)List
      值:一个链表,链表上的每个节点都包含了一个字符串
      功能:从链表的两端推入或者弹出元素;
      根据偏移量对链表进行修剪(trim);
      读取单个或者多个元素;
      根据值查找或者移除元素
      命令:RPUSH、LPUSH、LPOP、RPOP、LRANGE、LINDEX、LTRIM
        BLPOP、BRPOP
        RPOPLPUSH、BRPOPLPUSH
    (3)Set
      值:包含字符串的无序收集器(unordered collection),并且被包含的每个字符串都不相同
      功能:添加、获取、移除单个元素;
        检查一个元素是否存在于集合中
        计算交集、并集、差集
        从集合里面随机获取元素
      命令:SADD、SMEMBERS(返回所有元素)、SISMEMBER(检查该元素是否存在)、SREM(移除一个或多个元素,并返回移除数量)
        SCARD(集合元素数量)、SRANDMEMBER、SPOP、SMOVE
        SDIFF、SDIFFSTORE、SINTER、SINTERSTORE、SUNION、SUNIONSTORE
    (4)Hash
      值:包含键值对的无序散列表
      功能:添加、获取、移除单个键值对
        获取所有键值对
      命令:HSET、HGET、HGETALL、HDEL
        HMGET、HMSET、HDEL、HLEN
        HEXISTS、HKEYS、HVALS、HGETALL、HINCRBY、HINCRBYFLOAT
    (5)Zset 有序集合
      值:字符串成员(member)与浮点数分值(score)之间的有序映射,元素的排列顺序由分值的大小决定
      功能:添加、获取、删除单个元素
        根据分值范围(range)或者成员来获取元素
      命令:ZADD、ZRANGE、ZRANGEBYSCORE、ZREM、ZCARD、ZINCRBY、ZCOUNT、ZRANK、ZSCORE
        ZREVRANK、ZREVRANGE、ZRANGEBYSCORE、ZREVRANGEBYSCORE、ZREMRABGEBYRANK、ZREMRABGEBYSCORE、ZINTERSTORE、ZUNIONSTORE


    2、发布和订阅
      缺点:
      (1)客户端读取消息的速度不够快的情况下,消息积压会使得redis输出缓存区的体积变得越来越大,可能导致redis变慢、崩溃或被操作系统杀死。新版redis不会出现这种问题:client-output-buffer-limit pubsub配置
      (2)客户端断线过程中的消息会丢失
      命令:
      SUBSCRIBE (订阅一个频道)UNSUBSCRIBE (退订频道)PUBLISH(向给定频道发送消息)PSUBSCRIBE、PUNSUBSCRIBE

    3、事务
      特点:在不被打断(interruption)的情况下对多个键执行操作
      命令:WATCH、MULTI、EXEC、UNWATCH、DISCARD


    4、持久化
    (1)快照(snapshotting)
      配置:save 60 10000
        stop-writes-on-bgsave-error no
        rdbcompression yes
        dbfilename dump.rdb
      方式:redis会调用fork来创建一个子进程,子进程负责将快照写入硬盘,父进程继续处理命令
      缺点:当redis占用的内存越大,创建子进程的时间越多
        容易丢数据
    (2)只追加文件(append-only file,AOF)
      配置:appendonly no
        appendfsync everysec(always、no)
        no-appendfsync-on-rewrite no
        auto-aof-rewirte-percentage 100
        auto-aof-rewrite-min-size 64mb
      方式:将被执行的写命令写到AOF文件的末尾,以此来记录数据发生的变化
      缺点:生成的AOF文件占用空间较大,auto-aof-rewrite时同样面临创建子进程耗时的问题

    5、主从复制(旧版redis)


    6、工具
      分布式锁、计数信号量(semaphore)、任务队列(优先级任务、延迟任务)、消息拉取

    9、降低内存占用
      相关命令:debug object(可查看编码格式)
      9.1 短结构
        9.1.1 压缩列表(ziplist)
        列表:
          底层实现:双向链表 doubly linked list
          list-max-ziplist-entries 512 (表示当list长度小于512时使用压缩列表)
          list-max-ziplist-value 64 (表示当list中的所有元素长度小于64时使用压缩列表)
        散列:
          底层实现:散列 hashtable
          hash-max-ziplist-entries 512
          hash-max-ziplist-value 64
        有序集合:
          底层实现:散列+跳跃表skiplist
          zset-max-ziplist-entries 512
          zset-max-ziplist-value 64
      9.1.2 整数集合(intset)
        集合:
        底层实现:散列 hashtable
          set-max-intset-entries 512 (表示当集合的成员数量在512内,并且这些整数处于有符号整数范围之内)
     9.2 分片(sharding)
       注:一种字典压缩算法

  • 相关阅读:
    最短路(Floyed、Dijkstra、Bellman-Ford、SPFA)
    查找技术
    简单线段树
    dfs
    bfs
    插件工具集合
    Web前端代码规范
    Javascript 判断手机横竖屏状态
    Git 笔记2
    git 笔记 1
  • 原文地址:https://www.cnblogs.com/chbjaycn/p/8493920.html
Copyright © 2020-2023  润新知