# Redis 简介

Redis 是一款开源的、基于内存进行存储的数据库。

# Redis 基础

# 安装与使用 (Linux 版)

Redis 官网

前往 Redis 的官网进行下载,进入 Install Redis=>Install from Source

根据官网给出的文档进行下载,首先获取官方的 tar 包 (请提前安装 wget)

1
wget https://download.redis.io/redis-stable.tar.gz

然后进行解压

1
tar -zxvf redis-stable.tar.gz -C /usr/local

进入到相应的文件夹

1
cd /usr/local/redis-stable

进行编译

1
2
make
make install

如果失败,可以尝试用 root 用户进行

然后使用 vim 对配置文件 (redis.conf) 进行修改:

1
2
3
4
5
#备份初始配置文件,防止错误修改一些内容
cp redis.conf redis.conf.backup

#修改配置文件
vim redis.conf

修改下面这些关键字的内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#可以访问Redis的ip,默认为127.0.0.1 ,修改为0.0.0.0表示任意机器都可以访问
bind 0.0.0.0
#登录到Redis的密码,默认不要求密码
requirepass password
#数据库的数量,新版本默认为16
databases 16
#日志文件的输出位置,默认为空
logfile "logfileName.log"
#后台守护线程,默认关闭
daemonize yes
#Redis监听端口,默认为6379
port 6379
#保护模式会在没有bind ip且没有设置访问密码时自动启动
#以禁止公网访问到redis,来保护数据库安全,默认开启
protected-mode yes

修改完成后保存退出,使用如下指令来运行 Redis

1
redis-server redis.conf

注意:这样开启的 Redis 服务并不会开机自启,当电脑重启后,Redis 将关闭,需要手动重新启动 Redis 服务

使用如下代码查询 redis 的开启情况,或者关闭 redis:

1
2
3
4
#查询redis是否开启
ps -aux | grep redis
#杀死redis进程
kill -9 redis_pid

通过 redis 自带的客户端可以在命令行进行连接:

1
2
3
4
#-h可以指定连接的ip地址,-p指定连接的端口,-a为密码,为保证安全,不推荐使用-a进行连接
redis-cli [-h] [-p] [-a]
#可以在连接到redis后,使用如下指令输入密码:
AUTH password

# 命令

# String 类型的常见命令

命令 描述
SET 添加或者修改已经存在的一个 String 类型的键值对
GET 根据 key 获取 String 类型的 value
MSET 批量添加多个 String 类型的键值对
MGET 根据多个 key 获取多个 String 类型的 value
INCR 让一个整形的 key 自增 1
INCRBY 让一个整形的 key 自增并指定步长
INCRBYFLOAT 让一个浮点类型的数字自增并指定步长
SETNX 添加一个 String 类型的键值对,前提是其 key 不存在,否则不执行
SETEX 添加一个 String 类型的键值对,并指定有效期

# Hash 类型的常见命令

命令 描述
HSET key field value 添加或修改 hash 类型 key 的 field 的值
HGET key field 获取一个 hash 类型 key 的 field 的值
HMSET(已弃用) 批量添加多个 hash 类型 key 的 field 的值
HMGET 批量获取多个 hash 类型 key 的 field 的值
HGETALL 获取一个 hash 类型的 key 中的所有的 field 和 value
HEKYS 获取一个 hash 类型的 key 中的所有 field
HVALS 获取一个 hash 类型的 key 中所有的 value
HINCRBY 让一个 hash 类型 key 的字段值自增并指定步长
HSETNX 添加一个 hsh 类型的 key 的 field 值,前提是这个 field 不存在,否则不执行

# List 类型的常见命令

命令 描述
LPUSH key element … 向列表左侧插入一个或多个元素
LPOP key 移除并返回列表左侧的第一个元素,没有则返回 nil
RPUSH key element … 向列表右侧插入一个或多个元素
RPOP key 移除并返回列表右侧的第一个元素
LRANGE key start end 返回一段角标范围内的所有元素
BLPOP 和 BRPOP 与 LPOP 和 RPOP 类似,只不过在没有元素时等待指定时间,而不是直接返回 nil

# Set 类型的常见命令

命令 描述
SADD key member … 向 set 中添加一个或多个元素
SREM key member … 移除 set 中的指定元素
SCARD key 返回 set 中元素的个数
SISMEMBER key member 判断一个元素是否存在于 set 中
SMEMBERS 获取 set 中的所有元素
SINTER key1 key2 … 求 key1 与 key2 的交集
SDIFF key1 key2 … 求 key1 与 key2 的差集
SUNION key1 key2 … 求 key1 与 key2 的并集

# SortedSet 类型的常见命令

命令 描述
ZADD key score member 添加一个或多个元素到 sorted set,如果已经存在则更新其 score 值
ZREM key member 删除 sorted set 中的一个指定元素
ZSCORE key member 获取 sorted set 中的指定元素的 score 值
ZRANK key member 获取 sorted set 中的指定元素的排名
ZCARD key 获取 sorted set 中的元素个数
ZCOUNT key min max 统计 score 值在给定范围内的所有元素的个数
ZINCRBY key increment member 让 sorted set 中的指定元素自增,步长为指定的 increment 值
ZRANGE key min max 按照 score 排序后,获取指定排名范围内的元素
ZRANGEBYSCORE key min max 按照 score 排序后,获取指定 score 范围内的元素
ZDIFF、ZINTER、ZUNION 求差集、交集、并集

# 基础实战练习

# Redis 高级

# Redis 原理