# 範例程式碼
歡迎來到範例程式碼區!這裡收集了各種實用的 Redis Toolkit 使用範例,從基礎到進階,幫助您快速上手。
# 📂 範例分類
# 🚀 快速開始範例
# Hello Redis Toolkit
from redis_toolkit import RedisToolkit
# 初始化
toolkit = RedisToolkit()
# 存儲資料
toolkit.setter("greeting", "Hello, Redis Toolkit!")
# 讀取資料
message = toolkit.getter("greeting")
print(message) # Hello, Redis Toolkit!
# 存儲複雜資料
user = {
"id": 1,
"name": "Alice",
"scores": [95, 87, 92]
}
toolkit.setter("user:1", user)
# 自動反序列化
retrieved_user = toolkit.getter("user:1")
print(f"{retrieved_user['name']} 的分數: {retrieved_user['scores']}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 📱 實用小範例
# 計數器
class Counter:
def __init__(self, name):
self.toolkit = RedisToolkit()
self.key = f"counter:{name}"
def increment(self):
current = self.toolkit.getter(self.key) or 0
self.toolkit.setter(self.key, current + 1)
return current + 1
def get(self):
return self.toolkit.getter(self.key) or 0
def reset(self):
self.toolkit.setter(self.key, 0)
# 使用範例
page_views = Counter("page_views")
page_views.increment()
print(f"瀏覽次數: {page_views.get()}")
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 簡單快取
import time
def cached(key, ttl=300):
"""快取裝飾器"""
def decorator(func):
def wrapper(*args, **kwargs):
toolkit = RedisToolkit()
# 嘗試從快取獲取
cached_result = toolkit.getter(key)
if cached_result is not None:
return cached_result
# 執行函數並快取結果
result = func(*args, **kwargs)
toolkit.setter(key, result, ex=ttl)
return result
return wrapper
return decorator
# 使用範例
@cached("expensive_calculation", ttl=600)
def calculate_something():
print("執行昂貴的計算...")
time.sleep(2) # 模擬耗時操作
return {"result": 42}
# 第一次呼叫會執行計算
result1 = calculate_something()
# 後續呼叫直接返回快取
result2 = calculate_something()
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
27
28
29
30
31
32
33
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
27
28
29
30
31
32
33
# 排行榜
class Leaderboard:
def __init__(self, name):
self.toolkit = RedisToolkit()
self.key = f"leaderboard:{name}"
def add_score(self, player, score):
"""添加或更新玩家分數"""
self.toolkit.client.zadd(self.key, {player: score})
def get_top(self, count=10):
"""獲取前 N 名"""
top_players = self.toolkit.client.zrevrange(
self.key, 0, count-1, withscores=True
)
return [(p.decode(), int(s)) for p, s in top_players]
def get_rank(self, player):
"""獲取玩家排名"""
rank = self.toolkit.client.zrevrank(self.key, player)
return rank + 1 if rank is not None else None
# 使用範例
game_scores = Leaderboard("game_2024")
# 添加分數
game_scores.add_score("Alice", 1500)
game_scores.add_score("Bob", 1200)
game_scores.add_score("Charlie", 1800)
# 獲取排行榜
top_3 = game_scores.get_top(3)
for i, (player, score) in enumerate(top_3, 1):
print(f"{i}. {player}: {score} 分")
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
27
28
29
30
31
32
33
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
27
28
29
30
31
32
33
# 🎯 學習路徑建議
# 初學者路線
- 基礎操作 → 從 Hello World 開始
- 資料類型 → 了解序列化功能
- 簡單應用 → 實作計數器、快取
- 發布訂閱 → 嘗試訊息傳遞
# 進階路線
- 批次操作 → 提升效能
- 媒體處理 → 處理圖片音頻
- 錯誤處理 → 建立穩定系統
- 實戰專案 → 完整應用開發
# 💡 範例使用技巧
# 1. 複製並修改
所有範例都可以直接複製使用,根據需求修改:
# 複製範例程式碼
# 修改配置參數
# 調整業務邏輯
# 添加錯誤處理
1
2
3
4
2
3
4
# 2. 組合使用
不同範例可以組合使用:
# 結合快取 + 計數器
class CachedCounter(Counter):
def increment(self):
result = super().increment()
# 清除相關快取
self.toolkit.client.delete("stats:cache")
return result
1
2
3
4
5
6
7
2
3
4
5
6
7
# 3. 性能測試
在範例基礎上進行性能測試:
import time
def benchmark(func, iterations=1000):
start = time.time()
for _ in range(iterations):
func()
elapsed = time.time() - start
print(f"執行 {iterations} 次耗時: {elapsed:.3f} 秒")
print(f"平均每次: {elapsed/iterations*1000:.2f} 毫秒")
# 測試範例
benchmark(lambda: toolkit.setter("test", "value"))
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 📚 完整範例專案
# 迷你部落格系統
結合多個功能的完整範例:
class MiniBlog:
def __init__(self):
self.toolkit = RedisToolkit()
def create_post(self, author, title, content):
"""創建文章"""
post_id = self.toolkit.client.incr("post:id")
post = {
"id": post_id,
"author": author,
"title": title,
"content": content,
"created_at": time.time(),
"views": 0
}
# 儲存文章
self.toolkit.setter(f"post:{post_id}", post)
# 添加到文章列表
self.toolkit.client.lpush("posts:recent", post_id)
# 更新作者的文章列表
self.toolkit.client.sadd(f"author:{author}:posts", post_id)
return post_id
def get_post(self, post_id):
"""獲取文章並增加瀏覽次數"""
key = f"post:{post_id}"
post = self.toolkit.getter(key)
if post:
# 增加瀏覽次數
post["views"] += 1
self.toolkit.setter(key, post)
return post
def get_recent_posts(self, count=10):
"""獲取最近的文章"""
post_ids = self.toolkit.client.lrange("posts:recent", 0, count-1)
posts = []
for pid in post_ids:
post = self.toolkit.getter(f"post:{int(pid)}")
if post:
posts.append(post)
return posts
# 使用範例
blog = MiniBlog()
# 創建文章
post_id = blog.create_post(
author="Alice",
title="Redis Toolkit 使用心得",
content="這是一個很棒的工具..."
)
# 讀取文章
post = blog.get_post(post_id)
print(f"《{post['title']}》已被瀏覽 {post['views']} 次")
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# 🔗 相關資源
- GitHub 範例倉庫 (opens new window)
- API 文檔 - 詳細的 API 說明
- 最佳實踐 - 開發建議
# 🎯 下一步
選擇您感興趣的範例類別開始探索:
提示
- 所有範例都經過測試,可以直接運行
- 建議先閱讀程式碼,理解邏輯後再運行
- 遇到問題可以查看疑難排解