Skip to content

连接管理

基本连接

连接到本地 Redis 服务器

vb
Dim oRedis As New cRedisClient

' 连接到本地 Redis 服务器
If oRedis.Connect() Then
    Debug.Print "连接成功!"
Else
    Debug.Print "连接失败: " & oRedis.LastError
End If

连接到指定服务器

vb
Dim oRedis As New cRedisClient

' 连接到指定地址和端口
If oRedis.Connect("192.168.1.100", 6379) Then
    Debug.Print "连接成功!"
End If

带密码认证的连接

vb
Dim oRedis As New cRedisClient

' 连接并使用密码认证
If oRedis.Connect("127.0.0.1", 6379, "mypassword") Then
    Debug.Print "连接成功!"
End If

带 ACL 用户名和密码的连接 (Redis 6.0+)

vb
Dim oRedis As New cRedisClient

' 使用 ACL 认证(需要 Redis 6.0+ 并配置了 ACL 用户)
If oRedis.Connect("127.0.0.1", 6379, "mypassword", "myusername") Then
    Debug.Print "ACL 认证连接成功!"
End If

设置超时时间

vb
Dim oRedis As New cRedisClient

' 设置超时时间为 10 秒
oRedis.Timeout = 10
If oRedis.Connect() Then
    Debug.Print "连接成功!"
End If

断开连接

vb
oRedis.DisConnect

连接状态检查

在执行操作前检查连接状态:

vb
' 检查内部连接标志
If Not oRedis.Connected Then
    Debug.Print "未连接到 Redis 服务器"
End If

' 检查 Socket 实际连接状态(更准确,会同步内部标志)
If Not oRedis.IsConnected Then
    Debug.Print "Socket 已断开,尝试重连..."
    If Not oRedis.Connect() Then
        Debug.Print "重连失败: " & oRedis.LastError
        Exit Sub
    End If
End If

事件处理

OnDisconnected - 连接断开事件

vb
' 在类模块中声明 WithEvents 变量
Private WithEvents m_oRedis As cRedisClient

Private Sub m_oRedis_OnDisconnected()
    Debug.Print "Redis 连接已断开"
    ' 可以在这里实现重连逻辑
End Sub

OnError - 错误事件

vb
Private Sub m_oRedis_OnError(ByVal ErrorMsg As String)
    Debug.Print "Redis 错误: " & ErrorMsg
    ' 可以在这里实现错误处理逻辑
End Sub

连接最佳实践

1. 使用 Using 模式

vb
Sub DoRedisWork()
    Dim oRedis As New cRedisClient

    If Not oRedis.Connect() Then
        Debug.Print "连接失败"
        Exit Sub
    End If

    ' 执行操作
    oRedis.Set_ "key", "value"

    ' 确保断开连接
    oRedis.DisConnect
    Set oRedis = Nothing
End Sub

2. 错误处理

vb
Sub SafeRedisOperation()
    Dim oRedis As New cRedisClient

    On Error GoTo ErrorHandler

    If Not oRedis.Connect() Then
        Debug.Print "连接失败: " & oRedis.LastError
        Exit Sub
    End If

    ' 执行操作(命令失败会自动重连重试一次)
    oRedis.Set_ "key", "value"

    ' 检查错误
    If oRedis.LastError <> "" Then
        Debug.Print "操作出错: " & oRedis.LastError
    End If

    Exit Sub

ErrorHandler:
    Debug.Print "发生错误: " & Err.Description
    If oRedis.Connected Then
        oRedis.DisConnect
    End If
End Sub

3. 心跳保持连接

vb
Dim oRedis As New cRedisClient

' 连接到 Redis
If oRedis.Connect("127.0.0.1", 6379, "mypassword") Then
    ' 设置心跳间隔(秒),默认 30 秒
    oRedis.HeartbeatInterval = 30
    
    ' 启动心跳(定时发送 PING 保持连接活跃)
    oRedis.StartHeartbeat
    
    ' 执行业务操作...
    oRedis.Set_ "key", "value"
    
    ' 停止心跳并断开
    oRedis.StopHeartbeat
    oRedis.DisConnect
End If

4. 连接池示例

vb
' 简单的连接管理器示例
Private m_oRedis As cRedisClient

Function GetRedisConnection() As cRedisClient
    If m_oRedis Is Nothing Then
        Set m_oRedis = New cRedisClient
        If Not m_oRedis.Connect() Then
            Debug.Print "创建连接失败: " & m_oRedis.LastError
            Set GetRedisConnection = Nothing
            Exit Function
        End If
    End If

    ' 检查连接是否仍然有效
    If Not m_oRedis.Connected Then
        If Not m_oRedis.Connect() Then
            Debug.Print "重连失败: " & m_oRedis.LastError
            Set GetRedisConnection = Nothing
            Exit Function
        End If
    End If

    Set GetRedisConnection = m_oRedis
End Function

Sub CloseRedisConnection()
    If Not m_oRedis Is Nothing Then
        m_oRedis.StopHeartbeat  ' 先停止心跳
        m_oRedis.DisConnect
        Set m_oRedis = Nothing
    End If
End Sub

自动重连机制

从 v1.x 起,自动重连默认开启。当连接意外断开时:

  • Connected / IsConnected 会返回 False
  • 发送命令时会自动尝试重连一次
  • 若重连成功,命令继续执行;失败则抛出错误
  • 配合心跳机制可及时检测死连接
vb
' 关闭自动重连(不推荐)
oRedis.AutoReconnect = False

' 启用自动重连(默认)
oRedis.AutoReconnect = True

VB6及其LOGO版权为微软公司所有