• Products
  • Solutions
  • Customers
  • Resources
  • Company
  • Pricing
  • Download
Try Playground
  • NCache Architecture
  • Eviction
Show / Hide Table of Contents
  • Administrator's Guide
  • NCache Architecture
    • Cache Topologies
      • Partitioned Topologies
      • Replicated Topology
      • Mirrored Topology
      • Scalability in Topologies
    • Dynamic Clustering
    • Local Cache
    • Cache Client
    • Client Cache
    • Bridge for WAN Replication
    • Connectivity with Load Balancer
    • Serialization Format
    • Data Encryption
    • Data Compression
    • Data Load Balancing
    • Pipelining
    • Cache Server Backward Compatibility
    • Client Backward Compatibility
    • Eviction
    • Indexing
    • Split-Brain
    • Maintenance Mode
    • Runtime Data Sharing
    • Portable Data Types
    • Class Versioning
    • IP Binding with Multiple NICs
    • Graceful Node Down
    • Separate Cache Host Process
    • Self Healing Dynamic Clustering
    • Distributed Cache with Persistence
  • NCache Management Center
  • Configure Caches
    • Create a Cache
      • Local Cache Overview
        • Local Cache
        • Local Cache with Persistence
        • Pub/Sub Messaging Cache
        • Add Existing Cache
      • Clustered Cache Overview
        • Distributed Cache
        • Persistent Distributed Cache
        • Pub/Sub Messaging Cache
        • Add Existing Clustered Cache
        • Troubleshooting
    • Remove Cache
    • Clear Cache
    • Add Server Node
    • Remove Server Node
    • Add Test Data
    • Configure Query Indexes
    • Configure JSON Query Indexes
    • Compact Serialization
      • Non-Generic Registration
      • Non-Generic Unregistration
      • Generic Registration
      • Using Type Handler
    • Deploy Providers
    • Configure Custom Dependency
    • Add Data Source Providers
      • Read-Through Provider
      • Write-Through Provider
      • Write-Behind Provider
    • Loader and Refresher
    • Configure Maintenance Mode
      • Stop for Maintenance Mode
      • Exit Maintenance Mode
    • Configure LINQPad
      • Configure LinqPad for NCache
      • Querying Data in LinqPad
  • Configure Clients
    • Add Client Node
    • Remove Client Node
  • Configure Client Cache
    • Create Client Cache
    • Create Client Cache with NuGet
    • Enable Client Cache on Client Nodes
    • Disable Client Cache on Client Nodes
    • Remove Client Cache
  • Management Operations
    • Start Cache
    • Stop Cache
    • Restart Cache
    • Manage Cache Service on a Server Node
    • Memory Dumps
    • Data Load Balancing
    • Invoke Refresher Dataset
    • Import/Export Cache Data
    • Import Lucene Indexes
    • Suspend/Resume NCache Data Persistence
    • Backup and Restore NCache Persisted Data
  • Cache Settings
    • General Cache Settings
      • Cache Size
      • Cache Isolation Levels
      • Cache Serialization Format
      • Cache Data Expiration
    • Cache Cluster Settings
      • Ports
      • Operation Timeout
      • Configure Pipelining
      • Static Replication Interval
      • Connection Retries
      • Retry Interval
      • Split-Brain Auto Recovery
    • NCache Persistence Settings
      • Store Information
      • Persistence Interval
    • Error Logging
    • Cache Level Events
    • Client Activity Events
    • Eviction Policy
    • MapReduce
    • Register Classes for Portable Data Sharing
    • Compression
    • Email Notifications
    • Bind IP with Multiple NICs
      • Bind Cluster with a Dedicated IP
      • Bind Client/Server with a Dedicated IP
    • Heartbeat
    • Keep Alive
    • Client Death Detection
    • Communication Reliability
    • Auto Start Cache on Boot
    • Nagle's Algorithm
    • Dual Socket
    • Configuration Files
      • Client Side Configurations
        • Client Config
        • EFCaching Config
      • Server Side Configurations
        • Cache Config
        • Bridge Config
        • Modules Config
        • Security Config
        • TLS Config
        • Monitoring Config
        • Emails Template
  • Cache Server Settings
    • Server Connectivity
    • Bind to Multiple NICs
    • Server Ports
    • Memory
    • Custom Dependency
    • Request Inquiry
    • Windows Events
    • Message Events
    • Expiration & Eviction
    • SQL Server
    • Logging
    • Monitoring
    • Persistence Data Loading Retries
    • Miscellaneous Configurations
  • Bridge Server Settings
  • Cache Client Settings
  • Client Cache Settings
  • Configure Security
    • Configure Authentication and Authorization
    • Configure Encryption for Cache
    • Configure TLS Encryption
    • Configure HTTPS for NCache Management Center
  • Configure Bridge for WAN Replication
    • Create Bridge
    • Add Clustered Caches to Bridge
    • Configure Bridge Settings
    • Change Cache Synchronization Modes
    • Bridge Management
    • Synchronize Caches in Bridge
    • Leave Bridge
    • Remove Cache from Bridge
    • Configure Conflict Resolver
  • Setup Database for Cache Synchronization
    • Setup SQL Server Environment
    • Setup Oracle Database Environment
    • Setup OleDb Environment
    • Setup SQL Server for CLR Procedures
  • Simulate NCache Usage
  • Monitor Caches
    • Counters
      • Distributed Cache Counters
      • Distributed Cache with Persistence Counters
      • Pub/Sub Messaging Cache Counters
      • Distributed Lucene Cache Counters
      • Cache Client Counters
      • Bridge Counters
    • Monitor NCache using the NCache Management Center
      • Using Tabular Statistics
        • Configure Counters to Display Caching Statistics
        • Configure Counters to Display Pub/Sub Statistics
        • Configure Counters to Display Lucene Statistics
        • Configure Counters to Display Bridge Statistics
        • Browse Cache Statistics
        • Monitor Bridge
      • Using Monitoring Dashboards
        • Configure Monitor Settings
        • Configure Event Logging
        • Configure API Logging
        • Monitor with a Built-In NCache Monitor Dashboard
        • Monitor with the NCache Monitor Custom Dashboard
        • Monitor Cluster Connectivity
        • Monitor Cache Clusters using NCache Email Alerts
    • Monitor Cache Using Command Line Tools
      • Monitor Cache Server Statistics with Command Line Tools
      • Monitor Cache Client Statistics with Command Line Tools
    • Monitor NCache Using Windows PerfMon Tool
      • Monitoring Cache Server Counters using PerfMon
      • Monitoring Cache Client Counters using PerfMon
      • Monitor Bridge Counters Using PerfMon Tool
    • Monitor NCache using Prometheus
    • Monitor NCache using Grafana
    • Monitor NCache Using SNMP Counters
    • Monitor NCache Using JMX Counters
    • Logging
      • NCache Log Viewer
      • Performance Counters Logging
      • Windows Event Logging
      • Cache Health Alerts
      • Email Notifications on NCache Events
      • Cache Server Logging
      • Client Side API Logging
      • Cache Event IDs
      • Feature Usage Logging
    • Troubleshooting NCache Monitoring
      • Computer Name Not Found
      • Diskperf Not Installed
      • No READ Access to Perflib Subkeys
      • Unable to Connect to Remote Server
    • IPV6 Support

Cache Eviction

For every cache, the cache size should be estimated in advance with careful consideration of data usage by your application. However, your cache has storage limitations and if data will reside in the cache forever, it will eventually become full. To handle this, NCache's Cache Eviction feature can be utilized.

In Eviction, when your cache is full, NCache decides to evict its existing data on the basis of usage or priority to accommodate fresh incoming data. Eviction will smooth cache operations while keeping the cache size limited by removing a configured percentage of data.

NCache provides different policies for Eviction. These policies decide which data will be evicted when the cache is full.

Priority Based Cache Eviction

Note

This feature is also available in NCache Professional.

This Cache Eviction policy lets the cache evict less important data first. This eviction policy is your obvious choice if you can classify the cache data into different priorities. The priority is specified with the cache item while adding it to the cache. You can specify any of the priorities from the following 6 levels of priorities:

  • Low
  • Below Normal
  • Normal
  • Above Normal
  • High
  • Not Removable - This priority level specifies that the cache item should not be evicted and can only be configured using the NCache API.

Least Recently Used (LRU)

This eviction policy lets caches evict data that is no longer in use. Data is evicted based on its last access time. The data that was accessed a long time ago is the most suitable candidate for eviction as compared to the data that has been accessed recently. Access time is updated when data is fetched/updated from the cache.

Least Frequently Used (LFU)

This eviction policy lets cache evict the data which is less frequently used. The data is evicted based on the frequency of its usage. For example, if an item is accessed 5 times, then it is a more suitable candidate for eviction than an item that is accessed 20 times.

Do not Evict

Note

This feature is only available in NCache Enterprise.

Along with different policies, there is another option to turn off eviction. In this case, when the cache gets full, the cache does not evict any data while all incoming data addition requests are rejected.

Eviction Ratio

You can also specify the eviction ratio, i.e., by what percentage the data should be evicted from the cache. Eviction removes only the configured percentage of data from the cache, once eviction is triggered.

Cache Nearly Full Warning

When the cache is about 80% full and needs eviction, NCache logs events to both the Event Viewer in Windows and cache log files.

Bulk Removal of Data

The number of cache items to be removed during eviction can be huge depending on cache size and eviction ratio. That is why eviction removes data in bulk. The size of the bulk operation is configurable through the cache server configuration file found in the NCache installation as follows:

  • .NET: Alachisoft.NCache.Service.exe.config located in %NCHOME%/bin/service.
  • .NET Core Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • .NET Core Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.
  • Java Windows: Alachisoft.NCache.Service.dll.config located in %NCHOME%\bin\service.
  • Java Linux: Alachisoft.NCache.Daemon.dll.config located in /opt/ncache/bin/service.

Similarly, you can also configure the delay between two bulk removal operations with the help of a service configuration file.

Configure Cache Eviction

Specify the size of the bulk operation, i.e., how many items should be removed in one bulk operation. The EvictionBulkRemoveSize has the default value of 10.

<add key="NCacheServer.EvictionBulkRemoveSize" value="10"/>

As items are removed in bulk during Eviction, this may affect the performance of user operations during Expirations. This delay specified (in seconds) causes a delay between two consecutive bulk remove operations.

<add key="NCacheServer.EvictionBulkRemoveDelay" value="0"/>

Eviction in Clustered Environment

  • In the Partitioned and Partition-Replica topologies, data distribution is based on a hashing algorithm. Each node has divided data, thus each node is responsible for evicting its data. However, the replica node in Partition-Replica does not evict the data themselves - data is automatically removed from the replica when it is removed from the active node.

  • In the Replicated topology, every node has the same set of data, so only the cluster coordinator is responsible for eviction.

  • The Mirror topology has only two nodes, one active other passive. Thus, the active node is responsible for carrying out eviction on the entire cache.

See Also

Eviction Policy
Indexing
Class Versioning
Runtime Data Sharing

In This Article
  • Priority Based Cache Eviction
  • Least Recently Used (LRU)
  • Least Frequently Used (LFU)
  • Do not Evict
  • Eviction Ratio
  • Cache Nearly Full Warning
  • Bulk Removal of Data
  • Configure Cache Eviction
  • Eviction in Clustered Environment
  • See Also

Contact Us

PHONE

+1 (214) 764-6933   (US)

+44 20 7993 8327   (UK)

 
EMAIL

sales@alachisoft.com

support@alachisoft.com

NCache
  • NCache Enterprise
  • NCache Professional
  • Edition Comparison
  • NCache Architecture
  • Benchmarks
Download
Pricing
Try Playground

Deployments
  • Cloud (SaaS & Software)
  • On-Premises
  • Kubernetes
  • Docker
Technical Use Cases
  • ASP.NET Sessions
  • ASP.NET Core Sessions
  • Pub/Sub Messaging
  • Real-Time ASP.NET SignalR
  • Internet of Things (IoT)
  • NoSQL Database
  • Stream Processing
  • Microservices
Resources
  • Magazine Articles
  • Third-Party Articles
  • Articles
  • Videos
  • Whitepapers
  • Shows
  • Talks
  • Blogs
  • Docs
Customer Case Studies
  • Testimonials
  • Customers
Support
  • Schedule a Demo
  • Forum (Google Groups)
  • Tips
Company
  • Leadership
  • Partners
  • News
  • Events
  • Careers
Contact Us

  • EnglishChinese (Simplified)FrenchGermanItalianJapaneseKoreanPortugueseSpanish

  • Contact Us
  •  
  • Sitemap
  •  
  • Terms of Use
  •  
  • Privacy Policy
© Copyright Alachisoft 2002 - 2025. All rights reserved. NCache is a registered trademark of Diyatech Corp.
Back to top