Redis 支持五种基本的数据结构,这些数据结构使得 Redis 能够灵活应用于各种场景。
- 字符串(Strings)
-
- 是 Redis 中最基本的数据类型,可以被理解为简单的 key-value 对,其中 value 是字符串。
- 字符串类型的数据可以是任何形式,如 JSON、XML 等。
- 字符串类型是二进制安全的,这意味着 Redis 的字符串可以包含任何数据,包括图片或序列化后的对象。
- 散列(Hashes)
-
- 散列是一个键值对的集合,其中每个键(field)和值(value)都是字符串类型。
- 散列非常适合存储对象信息,例如用户信息、商品详情等。
- 散列类型的 key 是唯一的,但一个 key 下的 field 可以是多个,且每个 field 对应的 value 也可以是不同的数据类型(在 Redis 中仍然是字符串)。
- 列表(Lists)
-
- 列表是简单的字符串列表,按照插入顺序排序。
- 列表允许你在列表的两端进行插入(push)和弹出(pop)操作。
- 列表经常被用于消息队列或栈的实现。
- 集合(Sets)
-
- 集合是一个无序的字符串集合,自动去重。
- 集合可以用于实现交集、并集、差集等操作,适合用于数据聚合的场景。
- 集合的 key 是唯一的,但 value(元素)可以重复(在集合中自动去重)。
- 有序集合(Sorted Sets)
-
- 有序集合与集合类似,但每个元素都会关联一个分数(score),使得元素可以按分数排序。
- 有序集合是唯一的,每个元素都是唯一的,但分数可以重复。
- 有序集合适合用于排行榜、具有优先级队列的实现等场景。
示例
- 字符串:
SET mykey "Hello"
GET mykey
- 散列:
HSET myhash field1 "Hello"
HGET myhash field1
- 列表:
RPUSH mylist "one"
RPUSH mylist "two"
LRANGE mylist 0 -1
- 集合:
SADD myset "Hello"
SADD myset "World"
SMEMBERS myset
- 有序集合:
ZADD mysortedset 1 "one"
ZADD mysortedset 2 "two"
ZRANGE mysortedset 0 -1 WITHSCORES
基本操作
根据提供的Redis数据库参考资料,我将展示如何在不同场景下使用Redis的示例用法。以下是一些关键的Redis使用示例:
1. Redis基本操作
启动Redis服务
sudo service redis start
停止Redis服务
sudo service redis stop
查看Redis进程
ps -ef | grep redis
使用Redis客户端
redis-cli
2. Redis数据类型操作
字符串(Strings)
# 设置键值对
SET mykey "Hello, Redis!"
# 获取键值对
GET mykey
散列(Hashes)
# 设置散列中的一个字段
HSET myhash field1 "Hello"
# 获取散列中的一个字段
HGET myhash field1
# 获取散列中所有字段
HGETALL myhash
列表(Lists)
# 在列表头部添加元素
LPUSH mylist "world"
# 在列表尾部添加元素
RPUSH mylist "hello"
# 获取列表中的所有元素
LRANGE mylist 0 -1
集合(Sets)
# 添加元素到集合
SADD myset "element1"
# 查看集合中所有元素
SMEMBERS myset
# 移除集合中的元素
SREM myset "element1"
有序集合(Sorted Sets)
# 添加带权重的元素到有序集合
ZADD myzset 1 "one"
ZADD myzset 2 "two"
# 获取有序集合中的元素(带排名)
ZRANGE myzset 0 -1 WITHSCORES
3. Redis配置和安全
修改Redis配置文件
编辑Redis配置文件(通常位于/etc/redis/redis.conf
或/usr/local/redis/redis.conf
),修改以下配置项以增加安全性:
# 开启保护模式
protected-mode yes
# 更改默认端口
port 6380
# 设置密码
requirepass mypassword
重启Redis以应用配置
sudo service redis restart
使用密码连接Redis
# 方法1: 先登录后输入密码
redis-cli -p 6380
AUTH mypassword # 方法2: 命令行直接输入密码(注意安全性)
redis-cli -p 6380 -a mypassword
4. Redis进阶操作
发布/订阅
发布消息:
# 订阅者启动订阅
redis-cli -p 6380 -a mypassword SUBSCRIBE mychannel # 发布者发布消息
redis-cli -p 6380 -a mypassword PUBLISH mychannel "Hello from Redis!"
数据库选择
# 切换到第2个数据库
SELECT 1
查看当前配置
CONFIG GET *
# 或者获取特定配置项
CONFIG GET requirepass