redis 入门指南读书笔记

Table of Contents

1 简介

  • 存储结构:字符串、散列、列表、集合、有序集合。
  • 主要用来做数据库、缓存系统、消息队列。

2 准备

测试环境:

uname -a

2.1 安装

sudo apt install redis-server redis-tools

2.2 启动和停止

  • 通过 redis-server 启动服务器
  • 通过 redis-cli 执行命令

2.3 配置文件

  • 初始化脚本放在/etc/init/redis_端口号
  • 配置文件/etc/redis/端口号.conf
  • 持久化文件/var/redis/端口号
  • 配置项:daemonize、pidfile、port、dir。

3 入门

  • 所有的 Redis 命令都是原子操作。

3.1 字符串

  • 可执行的操作:SET、GET、MSET、MGET、SETNX、INCR、INCRBY、INCRBYFLOAT、DECR、DECRBY、APPEND、STRLEN、GETBIT、SETBIT、BITOP

3.2 散列

  • 散列的值只能是字符串。
  • 可执行的操作:HSET、HGET、HMSET、HMGET、HGETALL、HSETNX、HINCRBY、HDEL

3.3 列表

  • 列表的内部是使用双向列表实现的。
  • 可执行的操作:
    • LPUSH、LPOP
    • RPUHS、RPOP
    • LLEN、LRANGE、LREM、LINDEX、LTRIM、LINSERT、RPOPLPUSH

3.4 集合

  • 集合内不使用值为空的散列表实现。
  • 可执行的操作:SADD、SREM、SMEMBERS、SISMEMBER、SDIFF、SINTER、SUNION、SCARD、SDIFFSTORE、SINTERSTORE、SUNIONSTORE、SRANDMEMBER、SPOP

3.5 有序集合

  • 有序集合是使用散列表和跳跃表实现的。
  • 有序集合比列表类型更耗内存。
  • 可执行的操作:ZADD、ZSCORE、ZRANGE、ZREVRANGE、ZRANGEBYSCORE、ZINCRBY、ZCARD、ZCOUNT、ZREM、ZREMRANGEBYRANK、ZREMRANGEBYSCORE、ZRANK、ZINTERSTORE

4 进阶

4.1 事务

  • 命令:MULTI、EXEC、WATCH
  • 如果执行时候事务中的一条命令出错了,事务中的其他命令还是会继续执行。
  • 事务没有回滚操作。

4.2 生存时间

  • 命令:EXPIRE、TTL、PERSIST、PEXPIRE
  • 使用 SET 或 GETSET 命令为键赋值会清楚键的生存时间。

4.3 排序

  • 命令:SORT、BY、GET、STORE
  • SORT 命令的时间复杂度是 O(n+mlogm)。

4.4 消息通知

  • 命令:BRPOP、PUBLISH、SUBSCRIBE、PSUBSCRIBE PUNSUBSCRIBE
  • 如果先 publish,然后 subscribe,将收不到信息。

4.5 管道

  • 管道通过减少客户端与 Redis 的通信次数来实现降低往返时延累计值的目的。

4.6 节省空间

  • 精简键名和键值。
  • 内部编码优化,Redis 为每种数据类型提供了两种内部编码实现:(需要深入了解)
    • 字符串:raw、int
    • 散列:ht、ziplist
    • 列表:linkedlist、ziplist
    • 集合:ht、intset
    • 有序集合:skiplist、ziplist

5 实践

Author: lsl

Created: 2016-08-07 Sun 19:36

Validate