Redis 基础 | 青训营笔记

62 阅读2分钟

这是我参与「第五届青训营」笔记创作活动的第 7 天

1. 安装 Redis

建议将 Redis 安装在 Docker 容器里,因此先从安装 Docker 介绍

1.1 安装 Docker

以 CentOS 安装 Docker 为例,步骤如下

  1. 安装 yum-utils
yum install -y yum-utils
  1. 添加阿里云的 Docker 镜像源
yum-config-manager --add-repo <http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo>
  1. 清除 yum 缓存
yum clean all
yum makecache
  1. 安装 Docker
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  1. 启动 Docker
systemctl start docker
  1. 设置 Docker 开机自启动
systemctl enable docker

2.2 安装 Redis

安装 Docker 成功后运行下面命令安装并运行 Redis

docker run --name my-redis -p 6379:6379 \
-v /usr/local/workspace/redis/data:/data \
-d redis:5.0.8 redis-server --appendonly yes

2. Redis 基础数据结构

Redis 有五种基本数据类型,分别为

string(字符串),hash(哈希),list(列表),set(集合)及 zset(有序集合)

其中 string 类型的基本操作有

  • SET key value
  • SETNX key value(只在键 key 不存在的情况下, 将键 key 的值设置为 value;若键 key 已经存在, 则 SETNX 命令不做任何动作)
  • MSET key value [key value ...]
  • GET key
  • MGET key [key ...]
  • INCR key(为键 key 储存的数字值加上一)
  • INCRBY key increment(为键 key 储存的数字值加上增量 increment

hash 类型的基本操作有

  • HSET key field value
  • HMSET key field value [field value ...]
  • HGET key field
  • HMGET key field [field ...]
  • HINCRBY key field increment(为哈希表 key 中的域 field 的值加上增量 increment

list 类型的基本操作有

  • LPUSH key value [value ...]
  • RPUSH key value [value ...]
  • RPOP key
  • LRANGE key start stop (例如 LRANGE key 0 10)

set 类型的基本操作有

  • SADD key member [member ...]
  • SMEMBERS key

zset 类型的基本操作有

  • ZADD key score member [score] [member](添加元素到集合,元素在集合中存在则更新对应score)
  • ZRANGEBYSCORE key min max [WITHSCORES](返回有序集 key 中,所有 score 值介于 minmax 之间(包括等于 minmax )的成员。有序集成员按 score 值递增(从小到大)次序排列;可选的 WITHSCORES 参数决定结果集是单单返回有序集的成员,还是将有序集成员及其 score 值一起返回)
  • ZREVRANGE key start stop [WITHSCORES](返回有序集 key 中,指定区间内的成员;使用 ZREVRANGE 时,具有相同分数值的成员按字典序的逆序来排列)
  • ZINCRBY key increment member(为有序集 key 的成员 memberscore 值加上增量 increment

3. pipelining

Redis 的管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应,这样可以大大减少发送多个请求时的耗时

4. Redis 应用案例

  • 连续签到天数,需要使用 GET/SET,设置 Key 的过期时间
  • 用户收到的点赞数、访问量需要使用到 HASH
  • 排行榜使用 ZSET
  • 使用 SETNX 实现分布式锁