完整示例
本文档包含 Redis 客户端的综合使用示例。
示例 1:基本的 String 操作
vb
Sub Example1_BasicString()
Dim oRedis As New cRedisClient
' 连接
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 设置值
oRedis.Set_ "name", "张三"
oRedis.Set_ "age", "25"
' 获取值
Debug.Print "姓名: " & oRedis.Get_("name")
Debug.Print "年龄: " & oRedis.Get_("age")
' 设置过期时间
oRedis.Expire "name", 300
' 检查剩余时间
Debug.Print "name 的剩余生存时间: " & oRedis.TTL("name") & " 秒"
' 断开连接
oRedis.DisConnect
End Sub示例 2:Hash 操作
vb
Sub Example2_HashOperations()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 设置用户信息
oRedis.HSet "user:1001", "name", "李四"
oRedis.HSet "user:1001", "age", "30"
oRedis.HSet "user:1001", "city", "上海"
oRedis.HSet "user:1001", "email", "lisi@example.com"
' 获取单个字段
Debug.Print "用户姓名: " & oRedis.HGet("user:1001", "name")
' 获取所有字段
Dim oDict As Scripting.Dictionary
Set oDict = oRedis.HGetAll("user:1001")
Debug.Print vbCrLf & "用户详细信息:"
Dim vKey As Variant
For Each vKey In oDict.Keys
Debug.Print " " & vKey & ": " & oDict(vKey)
Next
oRedis.DisConnect
End Sub示例 3:List 操作
vb
Sub Example3_ListOperations()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 清空现有列表
oRedis.Del "tasks"
' 添加任务
oRedis.RPush "tasks", "任务1"
oRedis.RPush "tasks", "任务2"
oRedis.RPush "tasks", "任务3"
oRedis.RPush "tasks", "任务4"
oRedis.RPush "tasks", "任务5"
' 获取列表长度
Debug.Print "任务列表长度: " & oRedis.lLen("tasks")
' 获取所有任务
Dim vTasks As Variant
vTasks = oRedis.LRange("tasks", 0, -1)
Debug.Print vbCrLf & "所有任务:"
Dim i As Long
For i = 0 To UBound(vTasks)
Debug.Print " " & (i + 1) & ". " & vTasks(i)
Next
' 处理第一个任务
Debug.Print vbCrLf & "处理任务: " & oRedis.LPop("tasks")
Debug.Print "剩余任务数: " & oRedis.lLen("tasks")
oRedis.DisConnect
End Sub示例 4:事务操作
vb
Sub Example4_Transaction()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 初始化计数器
oRedis.Set_ "counter", "0"
Debug.Print "初始计数: " & oRedis.Get_("counter")
' 开始事务
oRedis.Multi
' 执行多个自增操作
oRedis.Incr "counter"
oRedis.Incr "counter"
oRedis.Incr "counter"
' 提交事务
Dim vResults As Variant
vResults = oRedis.Exec()
Debug.Print "事务执行结果:"
If IsArray(vResults) Then
For i = 0 To UBound(vResults)
Debug.Print " 操作 " & (i + 1) & " 结果: " & vResults(i)
Next
End If
Debug.Print "最终计数: " & oRedis.Get_("counter")
oRedis.DisConnect
End Sub示例 5:Set 和 Sorted Set 操作
vb
Sub Example5_Sets()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 使用 Set 存储标签
oRedis.SAdd "post:1:tags", "技术", "编程", "Redis", "VB6"
Debug.Print "文章标签数: " & oRedis.SCard("post:1:tags")
Dim vTags As Variant
vTags = oRedis.SMembers("post:1:tags")
Debug.Print "所有标签:"
Dim i As Long
For i = 0 To UBound(vTags)
Debug.Print " - " & vTags(i)
Next
' 使用 Sorted Set 存储排行榜
oRedis.ZAdd "leaderboard", 1000, "玩家A"
oRedis.ZAdd "leaderboard", 1500, "玩家B"
oRedis.ZAdd "leaderboard", 800, "玩家C"
oRedis.ZAdd "leaderboard", 2000, "玩家D"
Debug.Print vbCrLf & "排行榜(按分数升序):"
vTags = oRedis.ZRange("leaderboard", 0, -1)
For i = 0 To UBound(vTags)
Debug.Print " " & (i + 1) & ". " & vTags(i)
Next
Debug.Print vbCrLf & "排行榜(带分数):"
vTags = oRedis.ZRange("leaderboard", 0, -1, True)
For i = 0 To UBound(vTags) Step 2
If i + 1 <= UBound(vTags) Then
Debug.Print " " & vTags(i) & ": " & vTags(i + 1) & " 分"
End If
Next
oRedis.DisConnect
End Sub示例 6:数据库切换和批量操作
vb
Sub Example6_MultipleDb()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 在数据库 0 中存储用户数据
oRedis.SelectDb 0
oRedis.Set_ "user:1", "张三"
oRedis.Set_ "user:2", "李四"
Debug.Print "数据库0中的用户: "
Dim vKeys As Variant
vKeys = oRedis.Keys("user:*")
Dim i As Long
If IsArray(vKeys) Then
For i = 0 To UBound(vKeys)
Debug.Print " " & vKeys(i) & ": " & oRedis.Get_(vKeys(i))
Next
End If
' 在数据库 1 中存储配置数据
oRedis.SelectDb 1
oRedis.Set_ "config:appname", "MyApp"
oRedis.Set_ "config:version", "1.0.0"
oRedis.Set_ "config:debug", "false"
Debug.Print vbCrLf & "数据库1中的配置: "
vKeys = oRedis.Keys("config:*")
If IsArray(vKeys) Then
For i = 0 To UBound(vKeys)
Debug.Print " " & vKeys(i) & ": " & oRedis.Get_(vKeys(i))
Next
End If
' 批量获取配置
Dim vConfigs As Variant
vConfigs = oRedis.MGet("config:appname", "config:version")
Debug.Print vbCrLf & "配置信息:"
If IsArray(vConfigs) Then
For i = 0 To UBound(vConfigs)
Debug.Print " " & vConfigs(i)
Next
End If
' 切换回数据库 0
oRedis.SelectDb 0
Debug.Print vbCrLf & "当前数据库: " & oRedis.DbIndex
oRedis.DisConnect
End Sub示例 7:综合应用 - 用户会话管理
vb
Sub Example7_UserSession()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
Dim sUserId As String
sUserId = "user:123"
' 使用 Hash 存储用户信息
oRedis.HSet sUserId, "name", "张三"
oRedis.HSet sUserId, "email", "zhangsan@example.com"
oRedis.HSet sUserId, "login_time", CStr(Now())
' 使用 Set 存储用户标签
oRedis.SAdd sUserId & ":tags", "VIP", "活跃", "已验证"
' 使用 List 存储最近操作
oRedis.RPush sUserId & ":history", "登录"
oRedis.RPush sUserId & ":history", "浏览商品"
oRedis.RPush sUserId & ":history", "加入购物车"
' 设置会话过期时间(30分钟)
oRedis.Expire sUserId, 1800
oRedis.Expire sUserId & ":tags", 1800
oRedis.Expire sUserId & ":history", 1800
' 显示用户信息
Debug.Print "=== 用户信息 ==="
Dim oDict As Scripting.Dictionary
Set oDict = oRedis.HGetAll(sUserId)
Dim vKey As Variant
For Each vKey In oDict.Keys
Debug.Print vKey & ": " & oDict(vKey)
Next
' 显示用户标签
Debug.Print vbCrLf & "=== 用户标签 ==="
Dim vTags As Variant
vTags = oRedis.SMembers(sUserId & ":tags")
For i = 0 To UBound(vTags)
Debug.Print "- " & vTags(i)
Next
' 显示最近操作
Debug.Print vbCrLf & "=== 最近操作 ==="
Dim vHistory As Variant
vHistory = oRedis.LRange(sUserId & ":history", -5, -1)
For i = 0 To UBound(vHistory)
Debug.Print (i + 1) & ". " & vHistory(i)
Next
oRedis.DisConnect
End Sub示例 8:综合应用 - 电商系统
vb
Sub Example8_ECommerce()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 1. 商品信息(Hash)
Debug.Print "=== 商品信息 ==="
oRedis.HSet "product:1001", "name", "iPhone 15"
oRedis.HSet "product:1001", "price", "5999"
oRedis.HSet "product:1001", "stock", "100"
Debug.Print "商品: " & oRedis.HGet("product:1001", "name")
Debug.Print "价格: ¥" & oRedis.HGet("product:1001", "price")
Debug.Print "库存: " & oRedis.HGet("product:1001", "stock")
' 2. 购物车(Hash)
Debug.Print vbCrLf & "=== 购物车 ==="
oRedis.HSet "cart:user123", "product:1001", "2"
oRedis.HSet "cart:user123", "product:1002", "1"
Dim oCart As Scripting.Dictionary
Set oCart = oRedis.HGetAll("cart:user123")
Dim lTotal As Long
lTotal = 0
For Each vKey In oCart.Keys
Debug.Print vKey & ": " & oCart(vKey) & " 件"
lTotal = lTotal + CLng(oCart(vKey))
Next
Debug.Print "总件数: " & lTotal
' 3. 热门商品(Sorted Set)
Debug.Print vbCrLf & "=== 热门商品 ==="
oRedis.ZAdd "hot:products", 100, "product:1001"
oRedis.ZAdd "hot:products", 80, "product:1002"
oRedis.ZAdd "hot:products", 150, "product:1003"
Dim vHot As Variant
vHot = oRedis.ZRange("hot:products", -3, -1)
For i = UBound(vHot) To 0 Step -1
Dim sProductId As String
sProductId = vHot(i)
Debug.Print (UBound(vHot) - i + 1) & ". " & oRedis.HGet(sProductId, "name")
Next
' 4. 订单队列(List)
Debug.Print vbCrLf & "=== 订单队列 ==="
oRedis.RPush "orders:pending", "ORDER001: " & Now()
oRedis.RPush "orders:pending", "ORDER002: " & Now()
Dim vOrders As Variant
vOrders = oRedis.LRange("orders:pending", 0, -1)
For i = 0 To UBound(vOrders)
Debug.Print vOrders(i)
Next
' 5. 用户标签(Set)
Debug.Print vbCrLf & "=== 用户标签 ==="
oRedis.SAdd "user:123:tags", "VIP", "活跃", "新用户"
vTags = oRedis.SMembers("user:123:tags")
For i = 0 To UBound(vTags)
Debug.Print "- " & vTags(i)
Next
oRedis.DisConnect
End Sub示例 9:错误处理
vb
Sub Example9_ErrorHandling()
Dim oRedis As New cRedisClient
' 连接
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
Exit Sub
End If
' 检查错误
If oRedis.LastError <> "" Then
Debug.Print "连接错误: " & oRedis.LastError
oRedis.DisConnect
Exit Sub
End If
' 执行操作
oRedis.Set_ "test", "value"
If oRedis.LastError <> "" Then
Debug.Print "操作错误: " & oRedis.LastError
Else
Debug.Print "操作成功"
End If
' 获取不存在的键
Dim sValue As String
sValue = oRedis.Get_("nonexistent")
If sValue = "" Then
Debug.Print "键不存在"
End If
oRedis.DisConnect
End Sub示例 10:连接管理最佳实践
vb
Sub Example10_ConnectionManagement()
Dim oRedis As cRedisClient
Set oRedis = New cRedisClient
' 连接
If Not oRedis.Connect() Then
Debug.Print "连接失败: " & oRedis.LastError
GoTo Cleanup
End If
' 使用连接
oRedis.Set_ "key", "value"
Debug.Print "设置的值: " & oRedis.Get_("key")
Cleanup:
' 确保断开连接
If Not oRedis Is Nothing Then
If oRedis.Connected Then
oRedis.DisConnect
End If
Set oRedis = Nothing
End If
End Sub运行示例
您可以直接复制上述代码到 VB6 或 VBA 环境中运行。确保:
- 已添加对
cRedisClient类的引用 - 已添加对
Scripting.Dictionary的引用(Microsoft Scripting Runtime) - Redis 服务器正在运行并可访问
示例输出
运行上述示例后,您将在立即窗口(Immediate Window)中看到类似以下的输出:
=== 用户信息 ===
name: 张三
email: zhangsan@example.com
login_time: 2024-01-01 10:30:00
=== 用户标签 ===
- VIP
- 活跃
- 已验证
=== 最近操作 ===
1. 登录
2. 浏览商品
3. 加入购物车更多示例
如需更多特定场景的示例,请参考: