Hafıza Depoları

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

MemoryStoreService yüksek bir veri çıkış hızına sahip ve tüm sunuculardan hızlı bir şekilde erişilebilen düşük gecikmeli bir veri hizmetidir. Hafıza Depolama uygulamaları, hızlı bir şekilde değiştir

Veri Yapıları

Doğrudan kaynak verilere erişmek yerine, bellek depolarının üç ilkel veri yapısı, hızlı işlem için sunucular arasında paylaşılır: sıralama haritası, sıra ve harita. Her bir veri yapısı belirli kullanım durumları için iyidir:

  • Yetenek tabanlı eşleştirme - Kullanıcı bilgilerini, bilecek seviyesi gibi, paylaşılan sıraya arasındaki bir çevrim içi eşleştirme süresi için kaydet ve lobi sunucularını kullanarak eşleştirmeyi periyodik olarak yürüt.
  • Sunucu arası ticaret ve takas - Farklı sunuculardaki kullanıcıların gerçek zamanlı olarak değişen fiyatlarla öğelere teklif vermesine izin verin, böylece anahtar değer çiftleriyle ilgili sıralı bir harita oluşturulur.
  • Küresel lider tabloları - Paylaşılan bir harita içindeki kullanıcı sıralamasını depola ve güncelle.
  • Paylaşılan envanterler - Paylaşılan bir klon haritası da envanter öğelerini ve istatistiklerini kaydetin, kullanıcılar birbirleriyle envanter öğelerini ve istatistiklerini aynı anda kullanabilirler.
  • Kalıcı Veriler için önbelleği - Kalıcı verilerinizi bir veri depolarına bir hafıza depolarına aktarın ve bir hafıza kaynağı olarak hizmet veren bir hafıza aracılığıyla hızlı bir şekilde kaydedin. harita eşleştirme ile deneyiminizin sözleşme imzalamaartırabilirsiniz.

Genel genel, belirli bir anahtara dayanan verilere erişmeniz gerekirse, bir hasar haritası kullanın. Eğer bu verileri sıralamaya ihtiyacınız varsa, bir sıralama haritası kullanın. Verilerinizi belirli bir sırayla işlemek için sırayı kullanın.

Sınırlar ve Oranlar

Skalabilite ve sistem sözleşme imzalamakorumak için, hafıza boyutları için hafıza kullanımı quotası, API istekleri ve veri yapısı boyutları vardır.

Hafıza depolarının expiration time'ına (saat zamanı) dayalı bir yerleştirme politikası vardır, ayrıca "yaşamak için zaman" olarak da bilinir (TTL). Öğeler expired olduktan sonra, hafıza kвоzu yeni girişler için serbest bırakılır.Memory stores have an eviction policy based on expiration time, also known as time to live (TTL). Items are evicted after they expire, and memory quota is freed up for new entries. When you hit the memory limit, all subsequent write

Hafıza Boyutu Sınırı

Hafıza kısıtlamaları deneyimin tüketebileceği toplam hafıza miktarını sınırlar. Bu, sabit bir değer değildir. Bunun yerine, deneyimin kullanıcılarına göre deneyimin kullanımına bağlı olarak hafıza değiştirmez. Hafıza kısıtlamaları, sunucu seviyesinde değil deneyim seviyesinde geçerl

Kullanıcılar deneyime katıldığında, ekstra bellek kota derhal mevcut. Kullanıcılar deneyimden ayrıldığında, kota derhal azaltılmaz. Kullanıcıların kota'yı düşük bir değere yeniden değerlendirmeye kadar izleyebilirsiniz.

Deneyiminiz bellek büyüklüğü sınırına vurduktan sonra, bellek büyüklüğünü artıran herhangi bir API isteği her zaman başarısız olur. Bellek büyüklüğünü azaltan veya değiştirmeyen istekler hala başarılı olur.

With the gözlemlenebilirlik dashboard, you can view the memory size quota of your experience in real-time using the Memory Usage chart.

API İstek Sınırları

API istek sınırları için, tüm Class.MemoryStoreService API çağrıları için geçerli bir MemoryStoreService quota vardır. Quota, dakika başına 1000 + 100 * [kaç concurrent kullanıcı] istek birimidir.

Çoğu API çağrısı sadece bir istek birimi tüketir, birkaç istisna dışında:

Sunucu seviyesi değil deneyim seviyesi olarak istek kotası uygulanır. Bu, toplam istek oranının kotadan aştığında istekleri arasında esneklik sağlar. Eğer kotayı aşarsanız, hizmetin isteklerinizi sınırlandırdığında bir hata yanıtı alırsınız.

Gözlemlenebilirlik özelliği mevcut olduğunda, deneyiminizin gerçek zamanlı olarak isteği gönderen birimi görebilirsiniz.

Veri Yapısı Boyut Sınırları

Tek bir sıralama veya sıraya göre harita veya sıraya göre öğe sayısı sınırlarının uygulandığını gösteren aşağıdaki grafik:

  • Maksimum öğe sayısı: 1,000,000
  • Sıralanmış harita için anahtarlar dahil maksimum toplam boyut: 100 MB

Bölümlere Göre Sınırlar

Ayrıca bakın Bölümlere Göre Sınırlar.

En İyi Pratikler

Hafıza kullanımınızı mükemmel tutmak ve sınırlara vurmak öneminden kaçınmak için şu en iyi pratikleri izleyin:

  • İşlenmiş öğeleri kaldır. Kuyruklar için Class.MemoryStoreQueue:RemoveAsync() yöntemini kullanarak okumaları düzenli olarak temizliyor ve Class.MemoryStoreSortedMap:RemoveAsync() yazılımlarının hızlı bir şekilde belleği serbest bırakıp veri yapısını güncelleyebilirsiniz.

  • Eklenen verilerinizdeki zamanlanmayı en aza indirmeyi mümkün olduğunuz kadar küçük bir zaman dilimine ayarlayın. Bu, varsayılan zamanlanma süresi 45 gün olsa da, en kısa zaman dilimini ayarlayarak hafıza kullanımınızın yüzdesini otomatik olarak temizleyebilirsiniz, böyle

    • Uzun bir süreyle büyük miktarda veri depolamayın, çünkü bun potansiyel olarak tüm deneyiminizi bozabilecek sorunlar oluşturabilir.
    • Gereksiz öğeleri her zaman açık olarak sil veya kısa bir öğe süresini ayarla.
    • Genel olarak, belleği ve öğe süresi aşımını önlemek için güvenlik mekanizması olarak açık silmeyi kullanmanız gerekir.
  • Yalnızca gerekli değerleri hafızada tutun.

    Örneğin, bir müzayene evi deneyiminde, sadece en yüksek teklifi korumak için gerekir. Aynı anahtarda MemoryStoreQueue:UpdateAsync() kullanıyorsunuz, tüm teklifleri veri yapınızında tutmak yerine yüksek teklifi korumak için kullanabilirsiniz.

  • API istek sınırlarının altında kalmak için geometrik geri gitmeyi kullann.

    Örneğinizde bir DataUpdateConflict alırsanız, isteği sürekli olarak göndermek yerine, iki saniye sonra, dört, sekiz vb. gibi, doğru yanıtı almak için MemoryStoreService'a göndermeyi deneyebilirsiniz.

  • Devasa veri yapılarını parçalayarak daha küçük yap.

    Genellikle tüm verileri tek bir büyük veri yapısında depolamak yerine, daha küçük yapılarda verileri daha kolay yönetmek daha iyidir. Bu yaklaşım ayrıca kullanım ve oran sınırlarını önlemek için de faydalı olabilir. Örneğin, kullanıcıların kullanıcı kimlikleri üzerinde sıral

  • Saklanan değerleri sıkıştırır.

    Örneğin, depolanmış değer boyutunu azaltmak için LZW algoritmasını kullanmayı düşünün.

Gözlemlenebilirlik

The Gözlemlilik Dashboardı sağlar, hafıza depolarınızı izlemek ve sorunlarınızı çözmek için içgörüler ve analitikler sağlar. Gerçek zamanlı grafiklerle hafıza kullanımınızı izleyebilirsiniz, mevcut ayrılık kuotalarınızı gözden geçirebilirsiniz, API durumunu izleyebilir ve performans optimizasyonu i

Aşağıdaki tabloda, API yanıtlarının Görünürlük Dashboard'ının İstek Sayısına Göre Durum Kodlarını Açıklayan ve Açıklayan tüm durum kodlarını listeler ve açıklar. For more information on how to resolve these errors, see Hata ayıklama . For the specific quota or

Durum KoduAçıklama
BaşarılıBaşarılı.
Veri Deposu HatırlatıcıVeri yapısı seviyesi hafıza boyutu sınırını aşar (100MB).
Veri Güncellemesi ÇatışmasıÇelişki, çevrimiçi güncelleme nedeniyle oluşturuldu.
ErişimReddedildiDeneyim verilerine erişim için izin yok. Bu istek gereksinimleri yerine getirmeyi veya kota kullanmayı kullanmaz.
DahiliHataDahili bir hata.
Geçersiz istekİstek gerekli bilgilere sahip değil veya malformlu bilgilere sahip.
Veri Deposu SınırıVeri yapısı seviye öğe sayısı sınırını aşar (1M).
NoItemFoundNo item found in MemoryStoreQueue:ReadAsync() or MemoryStoreSortedMap:UpdateAsync() . ReadAsync() polls every 2 seconds and returns this status code until it finds items in the queue.
Veri Deposu İstekleri SınırıVeri yapısı seviye isteği sınırını aşar (1 dakika başına 100.000 istek birimi).
Bölme SınırıBölüm isteği sınırını aşar.
Toplam İsteklerin SınırıEvren seviyesi istek birimi sınırını aşar.
Toplam Hafıza SınırıEvren seviyesi hafıza kuotasını aşar.
ÖğeDeğeriSizeTooLargeDeğer boyutu sınırı aşıyor (32KB).

Aşağıdaki tablo, mevcut Görünürlük Panelinde mevcut değilken kullanıcı tarafından kullanılan devlet kodlarını listeler.

Durum KoduAçıklama
DahiliHataDahili bir hata.
YayınlanmayanYerMemoryStoreService'i kullanmak için bu yeri yayınlamalısınız.
GeçersizClientAccessMemoryStoreService, sunucudan çağrılmalıdır.
GeçersizExpirationTimeBölüm "sonlanma" zamanı 0 ve 3,888,000 arasında olmalıdır.
Geçersiz istekDeğerleri JSON'a dönüştüremezsiniz.
Geçersiz isteksorTahta'yı geçerli bir sayıya veya dizidönüştüremezsiniz.
TransformCallbackFailedDönüşüm arayüzü çağrısı başarısız.
RequestThrottledRecent MemoryStores istekleri bir veya daha fazla sınıra ulaştı.
Güncelleme ÇatışmasıMaksimum tekrar deneme sayısını aştınız.

Problem Çözme

Aşağıdaki tabloda, her yanıt durum kodunun önerilen çözümü listelenir ve açıklanır:

HataHata ayıklama seçenekleri
DataStructureCommandsLimit / PartitionCommandsLimit

    Bir yerel önbelleği eklemek için bilgileri başka bir değişkeni kaydederek ve belirli bir süre aralığında tekrar kontrol ederek, örneğin 30 s

    • önemli bir DataStructureCommandsLimit / PartitionCommandsLimit yanıtı alırsanız veri yapılarınızı bölür.
    • Açık bir yük denkleme için tüm sayıların yüklenmesini sağlayın.

Toplam İsteklerin Sınırı
Veri Deposu Sınırı

  • Hafıza büyüklüğünü azaltmak için en iyi uygulamaları uygula
  • onu.

Veri Deposu Hatırlatıcı
Toplam Hafıza Sınırı
Veri Güncellemesi Çatışması

    İstekleri birden fazla güncellemeyi önlemek için kısa bir gecikme uygula.

    1> 4> 7> 0> 3>

Dahili Bir Hata

  • Roblox durum sayfasını kontrol et
  • .
  • Roblox raporu
  • nın sorunu hakkında deneyiminizin Universe ID'si ile ilgili bir

    0>hata raporu0> sunulduğunu. >

Geçersiz istek

    talepdoğru ve geçerli parametreleri içereğinden emin olun. Geçersiz parametrelerin bazı örnekleri şunları içerir:

    • Bir boş yazılım yeri
    • Uzunluk sınırını aşan bir yazılım yeri
ÖğeDeğeriSizeTooLarge
  • Öğe değerini birden fazla anahtara böl veya bölün.
    • Grup halindeki anahtarları düzenlemek için, anahtarın prefix ekleyerek alfabetik olarak sıralayın.
  • Depolanmış değerleri kodlanır veya sıkıştırılır.

Stüdyo'da Test ve DepDebug

Veriler MemoryStoreService arasında Studio ve üretim arasında izole edilmiştir, bu yüzden Studio'da verileri değiştirmek üretim davranışını etkilemez. Bu, Studio'nun API çağrılarının üretim davranışına erişmediği anlamına gelir, böylece üretim için güvenli bir şekilde bellek depoları ve yeni özellikleri test edebilirsiniz.

Stüdyo testleri üretimle aynı sınırlara ve kotalara sahiptir. Kullanıcı sayısına dayalı olarak hesaplanan kotalar, Studio testlerindeki kullanıcı sadece kullanıcı için çok küçük olabilir, çünkü sadece Studio testlerindeki kullanıcı için üretimdeki kullanıcı sayısından daha düşük biraz

Hafıza depolarını canlı deneyimlerde veya stüdyoda test etmeye kullanırken nasıl debug yapacağınız hakkında bilgi için Geliştirici Konsolu kullanın.