Question

Est-ce que les mises à jour atomiques support de vitesse côté serveur? Je suis en train de voir si je peux le port du code (basé sur memcached) qui a mis en œuvre un tampon circulaire basé sur le fonctionnement de INCR Memcache.

Était-ce utile?

La solution

Je ne peux pas dire que je suis assez familier avec memcached savoir exactement ce que tu veux dire, mais je suppose qu'il implique le verrouillage d'un élément mis en cache de sorte qu'un client peut mettre à jour, qui est supporté par la vitesse à travers le GetAndLock et méthodes de PutAndUnlock.

Edit: OK, maintenant je comprends ce que tu veux dire, non, je ne l'ai pas vu quelque chose comme ça dans la vitesse. Mais vous pouvez l'écrire comme une méthode d'extension par exemple

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

Votre utilisation deviendrait alors:

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
scroll top