每月 Shaarli
Find emojis!
欢迎来到极品下载论坛,这里不仅专注于高清无损音乐MV的搜集下载,更是教育教学的最佳学习分享之地。
基于豆包大模型,提供智能 AI IDE 和 AI 编程助手,带给你全新的编码体验。AI IDE 提供开箱即用的开发环境,AI 编程助手提供代码生成、代码解释、单测生成和问题修复等功能,支持上百种编程语言和主流开发环境。
基于豆包大模型,提供智能 AI IDE 和 AI 编程助手,带给你全新的编码体验。AI IDE 提供开箱即用的开发环境,AI 编程助手提供代码生成、代码解释、单测生成和问题修复等功能,支持上百种编程语言和主流开发环境。
// ./src/lib.rs
// Learn more about Tauri commands at https://tauri.app/v1/guides/features/command
#[tauri::command]
fn greet(name: &str) -> String {
format!("Hello, {}! You've been greeted from Rust!", name)
}
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
tauri::Builder::default()
.setup(|app| {
{
use tauri::Manager;
// 获取窗口对象
let window = app.get_webview_window("main").unwrap();
// 设置窗口始终在最上层
window.set_always_on_top(true).unwrap();
}
{
use tauri::{AppHandle, Manager};
#[cfg(desktop)]
use tauri_plugin_global_shortcut::{
Code, GlobalShortcutExt, Modifiers, Shortcut, ShortcutState,
}; // 引入窗口管理模块
let alt_x_shortcut = Shortcut::new(Some(Modifiers::ALT), Code::KeyX);
app.handle().plugin(
tauri_plugin_global_shortcut::Builder::new()
.with_handler(move |app_handle: &AppHandle, shortcut, event| {
if shortcut == &alt_x_shortcut {
let window = app_handle.get_webview_window("main").unwrap(); // 获取窗口对象
match event.state() {
ShortcutState::Pressed => {
if window.is_minimized().unwrap() {
window.unminimize().unwrap(); // 还原窗口
println!("窗口已还原!");
} else {
window.minimize().unwrap(); // 最小化窗口
println!("窗口已最小化!");
}
}
ShortcutState::Released => {
// 这里可以添加你想要在松开时执行的逻辑
}
}
}
})
.build(),
)?;
app.global_shortcut().register(alt_x_shortcut)?;
}
Ok(())
})
.plugin(tauri_plugin_shell::init())
.invoke_handler(tauri::generate_handler![greet])
.run(tauri::generate_context!())
.expect("error while running tauri application");
}
The cross-platform app building toolkit
<?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 更高效地管理和查询表格化数据。
文件数据库:
<?php
// 定义数据库文件的路径
$dbFile = 'database.db';
try {
// 创建或打开 SQLite3 数据库
$db = new SQLite3($dbFile);
// 创建一个表格,如果已经存在则跳过
$db->exec("CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)");
// 插入一些数据
$insertData = [
['name' => 'Alice', 'email' => 'alice@example.com'],
['name' => 'Bob', 'email' => 'bob@example.com'],
['name' => 'Charlie', 'email' => 'charlie@example.com'],
];
$stmt = $db->prepare("INSERT OR IGNORE INTO users (name, email) VALUES (:name, :email)");
foreach ($insertData as $data) {
$stmt->bindValue(':name', $data['name'], SQLITE3_TEXT);
$stmt->bindValue(':email', $data['email'], SQLITE3_TEXT);
$stmt->execute();
}
// 从数据库读取数据
$result = $db->query("SELECT * FROM users");
// 输出数据
echo "<h1>Users List</h1>";
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Name</th><th>Email</th></tr>";
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row['id']) . "</td>";
echo "<td>" . htmlspecialchars($row['name']) . "</td>";
echo "<td>" . htmlspecialchars($row['email']) . "</td>";
echo "</tr>";
}
echo "</table>";
// 关闭数据库连接
$db->close();
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>
内存数据库:
<?php
try {
// 创建一个 SQLite3 的内存数据库
$db = new SQLite3(':memory:');
// 创建一个表
$db->exec("CREATE TABLE users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT NOT NULL UNIQUE
)");
// 插入一些数据
$db->exec("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')");
$db->exec("INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')");
$db->exec("INSERT INTO users (name, email) VALUES ('Charlie', 'charlie@example.com')");
// 从数据库读取数据
$result = $db->query("SELECT * FROM users");
// 输出数据
echo "<h1>Users List (Memory Database)</h1>";
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Name</th><th>Email</th></tr>";
while ($row = $result->fetchArray(SQLITE3_ASSOC)) {
echo "<tr>";
echo "<td>" . htmlspecialchars($row['id']) . "</td>";
echo "<td>" . htmlspecialchars($row['name']) . "</td>";
echo "<td>" . htmlspecialchars($row['email']) . "</td>";
echo "</tr>";
}
echo "</table>";
// 关闭数据库连接
$db->close();
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>
Utilities for web, compare text online or compress/convert images to formats like JPEG, PNG, AVIF and WEBP
===========20250704=============
Collect the perfect IP addresses and domain names database for querying.
Clarity is a free user behavior analytics tool that helps you understand how users are interacting with your website through session replays and heatmaps.