Redis介绍与基本使用
约 658 个字 174 行代码 预计阅读时间 4 分钟
Redis基本介绍
Redis是一个开源的高性能键值数据库,提供字符串、哈希、列表、集合、有序集合等多种数据结构,具备内存读写带来的低延迟与高吞吐特点,同时支持持久化、主从复制、哨兵与集群机制以实现高可用和水平扩展。它常用于缓存、会话存储、排行榜、消息队列、分布式锁等场景,其优势在于速度快、结构丰富、部署灵活
Ubuntu上安装和卸载Redis
安装可以使用如下的命令:
| Bash |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | # 更新包索引
sudo apt update
# 安装 Redis
sudo apt install redis-server -y
# 检查版本
redis-server --version
# 启动服务并设置开机自启
sudo systemctl start redis-server
sudo systemctl enable redis-server
# 验证运行状态
sudo systemctl status redis-server
|
修改基本配置:
| Bash |
|---|
| sudo nano /etc/redis/redis.conf
|
常见修改的配置如下:
| Text Only |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13 | # 设置密码(取消注释并修改)
requirepass your_strong_password
# 允许远程访问(默认只允许本地,有风险,建议配合防火墙)
# bind 127.0.0.1 ::1
bind 0.0.0.0
# 关闭保护模式(如果允许远程访问)
protected-mode no
# 内存限制(示例:限制 256MB)
maxmemory 256mb
maxmemory-policy allkeys-lru
|
修改完配置之后需要重启Redis服务:
| Bash |
|---|
| sudo systemctl restart redis-server
|
完整卸载Redis可以参考如下步骤:
| Bash |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 | # 停止服务
sudo systemctl stop redis-server
sudo systemctl disable redis-server
# 卸载并清除配置文件
sudo apt purge redis-server -y
sudo apt autoremove --purge -y
# 手动删除数据目录(谨慎操作!)
sudo rm -rf /etc/redis/
sudo rm -rf /var/lib/redis/
sudo rm -rf /var/log/redis/
# 删除源码安装的文件(如果是源码安装)
sudo rm -f /usr/local/bin/redis-*
|
Redis常见通用命令
在Redis命令行客户端输入下面的命令可以查看当前版本支持的通用命令:
下面介绍几种常见的通用命令:
keys:查看符合指定规则的所有key del:删除指定的key。支持批量删除,返回实际删除成功的key的数量 exists:判断指定的key是否存在 expire:为指定的key设置有效期,单位为秒。 ttl:查看指定的key剩余的有效期。在未给key设置有效期时,查出该key的结果为-1表示永不过期,对一个已经过期的key进行查询,则结果为-2
常见命令使用示例:
String类型命令
String类型是Redis中最基础的数据类型,键对应的值根据字符串的格式可以是字符串、整数或浮点数,最大长度为512MB。常见的操作命令可以分为两类:
- 设置和获取键值对
- 值为整数或浮点数的自增
对于设置和获取,有下面的几种命令:
set:添加或者修改一个键值对 get:获取指定key的值 mset:批量添加多个键值对 mget:批量获取多个键值对
例如下面的例子:
| Bash |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 | 127.0.0.1:6379> set name Rose # 原来不存在
OK
127.0.0.1:6379> get name
"Rose"
127.0.0.1:6379> set name Jack # 原来存在,就是修改
OK
127.0.0.1:6379> get name
"Jack"
127.0.0.1:6379> MSET k1 v1 k2 v2 k3 v3
OK
127.0.0.1:6379> MGET name age k1 k2 k3
1) "Jack" # 之前存在的name
2) "10" # 之前存在的age
3) "v1"
4) "v2"
5) "v3"
|
其中set命令有两种变体:
setex:添加一个不存在的键值对,如果存在则不进行任何操作。等同于set key value nx setnx:添加一个键值对并且设置有效期。等同于set key value ex seconds
例如下面的例子:
| Bash |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 | 127.0.0.1:6379> set name Jack //设置名称
OK
127.0.0.1:6379> setnx name lisi //如果key不存在,则添加成功
(integer) 0
127.0.0.1:6379> get name //由于name已经存在,所以lisi的操作失败
"Jack"
127.0.0.1:6379> setnx name2 lisi //name2 不存在,所以操作成功
(integer) 1
127.0.0.1:6379> get name2
"lisi"
127.0.0.1:6379> setex name 10 jack
OK
127.0.0.1:6379> ttl name
(integer) 8
127.0.0.1:6379> ttl name
(integer) 7
127.0.0.1:6379> ttl name
(integer) 5
|
对于自增来说,有下面的两种命令:
incr:针对值为整数,自增1 incrby:针对值为整数,自增自定义步长 incrbyfloat:针对值为浮点数,自增自定义步长
例如下面的例子:
| Bash |
|---|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 | 127.0.0.1:6379> get age
"10"
127.0.0.1:6379> incr age # 增加1
(integer) 11
127.0.0.1:6379> get age # 获得age
"11"
127.0.0.1:6379> incrby age 2 # 一次增加2
(integer) 13 # 返回目前的age的值
127.0.0.1:6379> incrby age 2
(integer) 15
127.0.0.1:6379> incrby age -1 # 也可以增加负数,相当于减
(integer) 14
127.0.0.1:6379> incrby age -2 # 一次减少2个
(integer) 12
127.0.0.1:6379> DECR age # 相当于incr负数,减少的另一种方法
(integer) 11
127.0.0.1:6379> get age
"11"
|