Redis 安装与基本操作

1. Redis 安装

1.1 yum安装

yum install redis -y
redis-server --version  # 查看Redis版本
Redis server v=6.2.7 sha=00000000:0 malloc=jemalloc-5.1.0 bits=64 build=ec192bdd77ecd321

systemctl start redis  # 启动Redis服务
systemctl enable redis  # 配置Redis开机自启动
systemctl status redis  # 验证Redis是否成功启动,如果Redis成功启动,将显示"active (running)"的状态

redis-cli  # 连接到Redis服务器
127.0.0.1:6379> keys *
(empty array)

# Redis默认监听在本地回环地址(127.0.0.1)的默认端口(6379)。如果需要从其他主机访问Redis,需要修改Redis的配置文件。
vi /etc/redis/redis.conf
# 找到bind行,并将其注释掉(添加#符号)
# bind 127.0.0.1
# 重新启动Redis服务,使配置更改生效
systemctl restart redis
Bash

1.2 源码安装

官网:https://redis.io/
最新稳定版下载地址:https://download.redis.io/redis-stable.tar.gz
其他版本下载地址:https://download.redis.io/releases/

# 下载Redis源码
wget https://download.redis.io/redis-stable.tar.gz 
# 解压源码包
tar -xf redis-stable.tar.gz
# 安装编译依赖
yum groupinstall "Development Tools" -y
yum install jemalloc-devel -y
# 进入解压后的目录
cd redis-stable
# 编译 
# make -j4  # 指定编译任务并发个数为4,一般指定为cpu核心数的两倍
# make -j   # 尽可能多的运行并发任务
make PREFIX=/usr/local/redis install  # 编译Redis并安装到指定的路径



# 将Redis添加到环境变量
vim /etc/profile.d/redis.sh
export PATH=/usr/local/redis/bin:$PATH



# 拷贝配置文件模版
mkdir /usr/local/redis/conf/
cp /root/redis-stable/redis.conf /usr/local/redis/conf/
# 修改配置文件
vim /usr/local/redis/conf/redis.conf 
...
# 1、修改:以守护进程的方式运行
daemonize yes
# 2、修改:0.0.0.0意味着接受任意IP的连接请求。
bind 0.0.0.0
# 3、增加:设置redis的登录密码
requirepass 123
...


# 将Redis加入systemd管理
vim /usr/lib/systemd/system/redis.service
 
[Unit]
Description=Redis
After=network.target
 
[Service]
Type=forking
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
 
[Install]
WantedBy=multi-user.target
# 重载使配置生效
systemctl daemon-reload



# 启动Redis服务并设置开机自启
systemctl start redis.service 
systemctl enable redis.service

# 客户端登录
redis-cli -h 192.168.2.104 -p 6379 -a '123'
 
# 或者登录后再用AUTH认证
redis-cli -h 192.168.2.104 -p 6379 
192.168.2.104:6379> keys *
(error) NOAUTH Authentication required.
192.168.2.104:6379> AUTH 123
OK
Bash

2. Redis 基本操作

2.1. 键(Key)操作

# 查看所有,⽣产中禁⽤[可能键值对很多, redis会崩溃, 耗费资源, ⽽且获取不到信息]
keys *  

# 设置键值对
SET key value  # 示例:SET name "Alice"

# 获取键的值
GET key  # 示例:GET name → "Alice" 

# 删除键
DEL key  # 示例:DEL name

# 检查键是否存在
EXISTS key  # 示例:EXISTS name → 1(存在)/0(不存在)

# 设置过期时间(以秒为单位)
EXPIRE key seconds  # 示例:EXPIRE temp_key 60,将键"temp_key"的过期时间设置为60秒。

# 查看剩余生存时间
TTL key  # 示例:TTL temp_key,查询结果-1永不过期,-2已经过期,5代表剩余5秒过期。
Bash

2.2. 数据结构操作

字符串(String)

# 设置键值对
SET counter 123
# 自增1 → "123" → "124"
INCR counter
# 增加 n
INCRBY counter 10
# 扩展命令(Redis 6.2+)支持浮点数加减
INCRBYFLOAT counter 1.5
INCRBYFLOAT counter -1.5
# 自减1
DECR counter
DECRBY counter 5   # 减5

# 设置键值对
SET msg hello
# 追加 → "hello world"
APPEND msg " world" 
# 截取,表示获取从索引 0 到 4 的字符(包含两端),返回 "hello"
GETRANGE msg 0 4 
Bash

哈希(Hash)

# hash类型,类似字典结构
# 向哈希表 user 中设置多个字段
HSET user name "Bob" age 30

# 获取哈希表 user 中指定字段 name 的值。
HGET user name
# 获取哈希表 user 的所有字段和值。
HGETALL user
# 将哈希表 user 的 age 字段值增加 1,负数则减
HINCRBY user age 1
Bash

列表(List)

# 从列表左侧(头部)插入元素,如果列表不存在,会自动创建
lpush namelist "Bob" "Tom" "Jack"
lrange namelist 0 -1
1) "Jack"
2) "Tom"
3) "Bob"

lpush namelist "lili"
lrange namelist 0 -1
1) "lili"
2) "Jack"
3) "Tom"
4) "Bob"
# 从列表 右侧(尾部) 弹出并返回一个元素。
RPOP namelist
"Bob"
lrange namelist 0 -1
1) "lili"
2) "Jack"
3) "Tom"

# 查看列表
lrange namelist 0 0  # start为 0,stop也为 0,代表取 0 号索引的元素
lrange namelist 0 -1  # 取出所有
LLEN namelist  # 返回列表长度
Bash

无序集合(Set)

# 无序集合元素不能重复
# 向集合 tags 中添加一个或多个元素(自动去重),如果集合 tags 不存在,会自动创建
SADD tags "redis" "db"
 
# 返回集合中的所有元素(无序)
SMEMBERS tags
# 检查元素 "db" 是否存在于集合 tags 中,返回 1 存在,0 不存在。
SISMEMBER tags "db"
# 返回多个集合的交集
SINTER tags1 tags2
Bash

有序集合(ZSet)

# 语法:ZADD key score1 member1 [score2 member2] 会按照分数排序,分数大的往后排
# 向有序集合 leaderboard 中添加成员及其分数(score),如果集合不存在,会自动创建。
ZADD leaderboard 100 "Alice" 85 "Bob"
 
# 按分数升序返回指定排名范围的成员(WITHSCORES 会同时返回分数)
ZRANGE leaderboard 0 -1 WITHSCORES  # 从0号索引到最后,即查看所有
1) "Bob"
2) "85"
3) "Alice"
4) "100"
ZRANGE leaderboard 0 -1
1) "Bob"
2) "Alice"
# 返回成员 "Alice" 的降序排名,升序排名用 ZRANK
ZREVRANK leaderboard "Alice"
ZRANK leaderboard "Alice"
Bash

3. Redis 发布订阅功能

Redis 的发布订阅(Pub/Sub)是一种消息通信模式,允许发送者(发布者)将消息发送到频道,而订阅者可以接收这些频道上的消息。

基本概念:

  • 频道(Channel):消息传输的通道。
  • 发布者(Publisher):向频道发送消息的客户端。
  • 订阅者(Subscriber):订阅频道并接收消息的客户端。

基本命令

# 订阅频道,订阅一个或多个频道
SUBSCRIBE channel [channel ...]
# 使用通配符模式订阅多个频道
PSUBSCRIBE pattern [pattern ...]

# 发布消息,向指定频道发布消息
PUBLISH channel message

# 取消订阅
UNSUBSCRIBE [channel [channel ...]]
PUNSUBSCRIBE [pattern [pattern ...]]
Bash

使用示例:

订阅者1:

# 订阅名为 news.sports 的频道
SUBSCRIBE news.sports

# 输出解析
1) "subscribe"     # 响应类型:订阅操作成功
2) "news.sports"   # 你订阅的频道名称
3) (integer) 1     # 当前客户端订阅的频道数量(这里是第一个订阅)
Bash

订阅者2:

# 通过通配符订阅多个匹配的频道,订阅所有以 news. 开头的频道。
PSUBSCRIBE news.*
Bash

发布者:

# 发布 Redis wins the benchmark! 到 news.sports 频道
PUBLISH news.sports "Redis wins the benchmark!"
Bash
上一篇
下一篇