String Operations
Redis String is the simplest data type, capable of storing strings, integers, or floating-point numbers.
Set_ - Set Key-Value
Basic Setting
vb
oRedis.Set_ "name", "Zhang San"
oRedis.Set_ "age", "25"
oRedis.Set_ "city", "Beijing"Set with Expiration
vb
' Set expiration time (seconds)
oRedis.Set_ "session", "abc123", , 3600 ' Expire in 1 hour
' Set expiration time (milliseconds)
oRedis.Set_ "token", "xyz789", , 60000 ' Expire in 1 minuteGet_ - Get Key Value
vb
Dim sValue As String
sValue = oRedis.Get_("name")
Debug.Print sValue ' Output: Zhang SanIncr - Increment
Increment the numeric value in the key by 1:
vb
' Initialize counter
oRedis.Set_ "counter", "10"
' Increment
Dim lValue As Long
lValue = oRedis.Incr("counter")
Debug.Print lValue ' Output: 11
' Increment again
lValue = oRedis.Incr("counter")
Debug.Print lValue ' Output: 12Use Cases:
- Counters
- ID generation
- Access statistics
Decr - Decrement
Decrement the numeric value in the key by 1:
vb
' Decrement
lValue = oRedis.Decr("counter")
Debug.Print lValue ' Output: 10MGet - Batch Get
Get values of multiple keys simultaneously:
vb
' Get multiple keys at once
Dim vValues As Variant
vValues = oRedis.MGet("name", "age", "city")
If IsArray(vValues) Then
Dim i As Long
For i = 0 To UBound(vValues)
Debug.Print vValues(i)
Next
End IfReturn Value Explanation:
- Returns corresponding value if key exists
- Returns empty string if key does not exist
MSet - Batch Set
Batch set multiple key-value pairs:
vb
' Batch set key-value pairs
oRedis.MSet "name", "Li Si", "age", "25", "city", "Beijing"Use Cases
1. User Session Management
vb
Sub UserSession()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then Exit Sub
Dim sUserId As String
sUserId = "user:12345"
' Create session
oRedis.Set_ sUserId & ":name", "Zhang San"
oRedis.Set_ sUserId & ":email", "zhangsan@example.com"
oRedis.Set_ sUserId & ":login_time", CStr(Now())
' Set session expiration time to 30 minutes
oRedis.Expire sUserId & ":name", 1800
oRedis.Expire sUserId & ":email", 1800
oRedis.Expire sUserId & ":login_time", 1800
' Get session information
Dim vSession As Variant
vSession = oRedis.MGet(sUserId & ":name", sUserId & ":email")
If IsArray(vSession) Then
Debug.Print "User: " & vSession(0)
Debug.Print "Email: " & vSession(1)
Debug.Print "Remaining time: " & oRedis.TTL(sUserId & ":name") & " seconds"
End If
oRedis.DisConnect
End Sub2. Counter
vb
Sub CounterExample()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then Exit Sub
' Page visit count
Dim sPage As String
sPage = "page:/home"
' Increment visit count
Dim lCount As Long
lCount = oRedis.Incr(sPage)
Debug.Print "Page visit count: " & lCount
' Article like count
oRedis.Incr "article:1001:likes"
oRedis.Incr "article:1001:likes"
oRedis.Incr "article:1001:likes"
Debug.Print "Article likes: " & oRedis.Get_("article:1001:likes")
oRedis.DisConnect
End Sub3. Distributed ID Generation
vb
Function GenerateId(ByVal sPrefix As String) As String
Static oRedis As cRedisClient
If oRedis Is Nothing Then
Set oRedis = New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "Connection failed"
Exit Function
End If
End If
Dim lId As Long
lId = oRedis.Incr("id:" & sPrefix)
GenerateId = sPrefix & ":" & lId
End Function
Sub TestIdGeneration()
Debug.Print GenerateId("order") ' Output: order:1
Debug.Print GenerateId("order") ' Output: order:2
Debug.Print GenerateId("user") ' Output: user:1
Debug.Print GenerateId("order") ' Output: order:3
End Sub4. Rate Limiter
vb
Function RateLimit(ByVal sUserId As String, ByVal lLimit As Long) As Boolean
Static oRedis As cRedisClient
If oRedis Is Nothing Then
Set oRedis = New cRedisClient
If Not oRedis.Connect() Then
Exit Function
End If
End If
Dim sKey As String
sKey = "ratelimit:" & sUserId
Dim lCount As Long
lCount = oRedis.Incr(sKey)
' Set expiration time on first request (1 minute)
If lCount = 1 Then
oRedis.Expire sKey, 60
End If
' Check if limit exceeded
If lCount > lLimit Then
Debug.Print "Limit exceeded, current requests: " & lCount
RateLimit = False
Else
RateLimit = True
End If
End Function
Sub TestRateLimit()
Dim i As Long
For i = 1 To 12
Debug.Print "Request " & i & ": " & IIf(RateLimit("user123", 10), "Allowed", "Denied")
Next i
End Sub5. Cache Management
vb
Function GetCachedData(ByVal sKey As String, ByVal sDefault As String) As String
Static oRedis As cRedisClient
If oRedis Is Nothing Then
Set oRedis = New cRedisClient
oRedis.Connect
End If
Dim sValue As String
sValue = oRedis.Get_(sKey)
If sValue = "" Then
' Cache miss, return default value
GetCachedData = sDefault
' Store default value in cache with 1 hour expiration
oRedis.Set_ sKey, sDefault, , 3600
Else
GetCachedData = sValue
End If
End Function
Sub TestCache()
Debug.Print "First fetch: " & GetCachedData("config:appname", "MyApp")
Debug.Print "Second fetch: " & GetCachedData("config:appname", "MyApp")
End SubComplete Example
vb
Sub Example_StringOperations()
Dim oRedis As New cRedisClient
If Not oRedis.Connect() Then
Debug.Print "Connection failed: " & oRedis.LastError
Exit Sub
End If
' Set values
oRedis.Set_ "name", "Zhang San"
oRedis.Set_ "age", "25"
' Get values
Debug.Print "Name: " & oRedis.Get_("name")
Debug.Print "Age: " & oRedis.Get_("age")
' Set expiration time
oRedis.Expire "name", 300
' Check remaining time
Debug.Print "name remaining TTL: " & oRedis.TTL("name") & " seconds"
' Counter example
oRedis.Set_ "counter", "10"
Debug.Print "Initial value: " & oRedis.Get_("counter")
Debug.Print "After increment: " & oRedis.Incr("counter")
Debug.Print "Increment again: " & oRedis.Incr("counter")
Debug.Print "After decrement: " & oRedis.Decr("counter")
' Batch operations
oRedis.MSet "user:1", "Zhang San", "user:2", "Li Si", "user:3", "Wang Wu"
Dim vUsers As Variant
vUsers = oRedis.MGet("user:1", "user:2", "user:3")
Debug.Print vbCrLf & "Batch fetch results:"
Dim i As Long
If IsArray(vUsers) Then
For i = 0 To UBound(vUsers)
Debug.Print " User" & (i + 1) & ": " & vUsers(i)
Next
End If
oRedis.DisConnect
End Sub