Я не могу сказать, что я достаточно знаком с memcached, чтобы точно знать , что вы имеете в виду, но я предполагаю, что это включает блокировку кэшированного элемента, чтобы один клиент мог его обновить, что поддерживается Velocity с помощью методов GetAndLock и PutAndUnlock .
Редактировать: ОК, теперь я понимаю, что вы имеете в виду, нет, я не видел ничего подобного в Velocity. Но вы можете написать это как метод расширения, например
Imports System.Runtime.CompilerServices
Public Module VelocityExtensions
<Extension()> _
Public Sub Increment(ByVal cache As Microsoft.Data.Caching.DataCache, ByVal itemKey As String)
Dim cachedInteger As Integer
Dim cacheLockHandle As DataCacheLockHandle
cachedInteger = DirectCast(cache.GetAndLock(itemKey, New TimeSpan(0, 0, 5), cacheLockHandle), Integer)
cachedInteger += 1
cache.PutAndUnlock(itemKey, cachedInteger, cacheLockHandle)
End Sub
<Extension()> _
Public Sub Decrement(ByVal cache As Microsoft.Data.Caching.DataCache, ByVal itemKey As String)
Dim cachedInteger As Integer
Dim cacheLockHandle As DataCacheLockHandle
cachedInteger = DirectCast(cache.GetAndLock(itemKey, New TimeSpan(0, 0, 5), cacheLockHandle), Integer)
cachedInteger -= 1
cache.PutAndUnlock(itemKey, cachedInteger, cacheLockHandle)
End Sub
End Module
Тогда ваше использование станет:
Imports VelocityExtensions
Imports Microsoft.Data.Caching
Partial Public Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim myCache As DataCache
Dim factory As DataCacheFactory
myCache = factory.GetCache("MyCacheName")
myCache.Increment("MyInteger")
End Sub
End Class