这是我参与「第五届青训营」笔记创作活动的第 7 天
1. 安装 Redis
建议将 Redis 安装在 Docker 容器里,因此先从安装 Docker 介绍
1.1 安装 Docker
以 CentOS 安装 Docker 为例,步骤如下
- 安装 yum-utils
yum install -y yum-utils
- 添加阿里云的 Docker 镜像源
yum-config-manager --add-repo <http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo>
- 清除 yum 缓存
yum clean all
yum makecache
- 安装 Docker
yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
- 启动 Docker
systemctl start docker
- 设置 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值介于min和max之间(包括等于min或max)的成员。有序集成员按score值递增(从小到大)次序排列;可选的WITHSCORES参数决定结果集是单单返回有序集的成员,还是将有序集成员及其score值一起返回) - ZREVRANGE key start stop [WITHSCORES](返回有序集
key中,指定区间内的成员;使用 ZREVRANGE 时,具有相同分数值的成员按字典序的逆序来排列) - ZINCRBY key increment member(为有序集
key的成员member的score值加上增量increment)
3. pipelining
Redis 的管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应,这样可以大大减少发送多个请求时的耗时
4. Redis 应用案例
- 连续签到天数,需要使用 GET/SET,设置 Key 的过期时间
- 用户收到的点赞数、访问量需要使用到 HASH
- 排行榜使用 ZSET
- 使用 SETNX 实现分布式锁