180 条记录
15 私有链接
15 私有链接
<?php
// 检查 Redis 扩展是否已加载
if (!extension_loaded('redis')) {
die("Redis extension is not loaded.");
}
try {
// 创建 Redis 客户端实例
$redis = new Redis();
// 连接到 Redis 服务器 (假设是本地服务器,默认端口 6379)
$redis->connect('127.0.0.1', 6379);
// 设置一个键值对
$redis->set("greeting", "Hello, Redis!");
// 获取并显示该值
$greeting = $redis->get("greeting");
echo "<p>Greeting from Redis: " . htmlspecialchars($greeting) . "</p>";
// 增加一个计数器
$redis->incr("counter");
$counter = $redis->get("counter");
echo "<p>Visit count: " . htmlspecialchars($counter) . "</p>";
// 删除键
$redis->del("greeting");
} catch (Exception $e) {
// 错误处理
echo "Could not connect to Redis: ", $e->getMessage();
}
?>
Redis 的持久化配置
打开 Redis 配置文件(AlpineLinux中位于 /etc/redis.conf),根据需要设置持久化选项:
# 启用 RDB 快照(例如每 5 分钟有 1 次更新时生成快照)
save 300 1
# 启用 AOF 持久化
appendonly yes
修改完配置文件后,重启 Redis 使配置生效:
rc-service redis restart
Redis 的跨 PHP 脚本共享
只要 Redis 服务在运行,所有连接到它的 PHP 脚本都可以共享数据。在其他 PHP 文件中,只需重复相同的 Redis 连接代码,即可访问 Redis 中的数据。
例如,在 other_script.php 中可以使用:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 读取之前设置的计数器
$counter = $redis->get("counter");
echo "Current visit count: " . htmlspecialchars($counter);
?>
将表格结构的数据存储在 Redis 中
1. 使用 Redis 哈希(Hash)类型
Redis 哈希类型可以用来存储类似行记录的数据,每一行是一个 Redis 哈希,每列是哈希的字段。
适用于单条记录的数据存储,且查询特定字段非常高效。
示例
假设有一张“用户表”,包含 id, name, 和 email 列:
<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 添加一个用户记录,key 为 "user:1"
$redis->hSet("user:1", "id", 1);
$redis->hSet("user:1", "name", "Alice");
$redis->hSet("user:1", "email", "alice@example.com");
// 获取用户记录
$user = $redis->hGetAll("user:1");
print_r($user);
?>
结果
Array
(
[id] => 1
[name] => Alice
[email] => alice@example.com
)
2. 使用 Redis 列表(List)类型
Redis 列表可以用来按顺序存储多行数据,例如多个用户的 id 列表。
可以用于模拟表中的一列,但没有字段标识,适合按顺序存取数据的场景。
示例
$redis->lPush("user_ids", 1);
$redis->lPush("user_ids", 2);
$redis->lPush("user_ids", 3);
$userIds = $redis->lRange("user_ids", 0, -1);
print_r($userIds);
3. 使用 Redis 集合(Set)和有序集合(Sorted Set)
集合(Set)适合无序、去重的数据列,适用于存储唯一的字段(如标签)。
有序集合(Sorted Set)适合存储排序数据,例如排行榜或按日期排序的数据。
示例
$redis->zAdd("user_scores", 100, "user:1");
$redis->zAdd("user_scores", 150, "user:2");
4. 将整张表序列化存储
如果需要存储复杂的表格数据,可以将整个表格序列化为 JSON 格式字符串,并存储到 Redis 中。
示例
$userData = [
['id' => 1, 'name' => 'Alice', 'email' => 'alice@example.com'],
['id' => 2, 'name' => 'Bob', 'email' => 'bob@example.com'],
];
$redis->set("users", json_encode($userData));
// 获取并解码
$decodedData = json_decode($redis->get("users"), true);
print_r($decodedData);
总结
Redis 哈希最适合存储类似数据库表的行记录。
JSON 序列化适合存储复杂的表格数据结构。
使用合适的数据类型可以让 Redis 更高效地管理和查询表格化数据。