• Webinars
  • Docs
  • Download
  • Blogs
  • Contact Us
Show / Hide Table of Contents
  • Administrator's Guide
  • NCache Architecture
    • Cache Topologies
    • Cache Cluster
    • Local Cache
    • Cache Client
    • Client Cache
    • Data Load Balancing
    • Cache Server Backward Compatibility
    • Client Backward Compatibility
    • Eviction
    • Indexing
    • Runtime Data Sharing
    • Portable Data Types
    • Class Versioning
    • IP Binding with Multiple NICs
    • Graceful Node Down
    • Separate Cache Host Process
    • Self Healing Dynamic Clustering
  • Configuring Caches
    • Create Cache
      • Creating Local Cache
        • Create New Cache
        • Add Existing Cache
      • Creating Clustered Cache
        • Create New Cache Cluster
        • Add Existing Cache Cluster
    • Remove Cache
    • Clear Cache Contents
    • Adding Server Node in Cache Cluster
    • Removing Server Node from Cache Cluster
    • Configuring Basic Cache Settings
      • Cache Size
      • Cache Isolation Levels
      • Cache Data Expiration
      • Cache Data Format
    • Configuring Cache Cluster Settings
      • Ports
      • Operation Timeout
      • Static Replication Interval
      • Connection Retries
      • Retry Interval
    • Add Test Data to Cache
    • Deploy Providers
    • Configuring Query Indexes
    • Registering Classes for Compact Serialization
      • Registering Non-Generic Classes
      • Unregistering Non-Generic Classes
      • Registering Generic Classes
      • Registering Generic Classes Using Generic Type Handler
    • Registering Classes for Portable Data Sharing
    • Configuring Data Source Providers
      • Read-Through Provider
      • Write-Through Provider
      • Write-Through Provider for Write-Behind Operations
    • Configuring Cache Startup Loader
    • Configuring Cache Level Events
    • Configuring Cache Activity Events
    • Configuring Eviction Policy
    • Configuring Compression
    • Configuring Email Notifications
    • Binding Cluster and Client/Server IP with Multiple NICs
      • Binding Cluster with a Dedicated IP
      • Binding Client/Server with a Dedicated IP
    • Configuring Heartbeat
    • Configuring MapReduce
    • Configuring Communication Reliability
    • Auto Start Cache on Boot
    • Nagling
    • Dual Socket
    • Error Logging
    • Configuration Files
      • Client Side Configurations
        • Client Config
        • EFCaching Config
      • Server Side Configurations
        • Cache Config
        • Bridge Config
        • Security Config
      • Cache Server Configuration
  • Management Operations
    • Start Cache
    • Stop Cache
    • Restart Cache
    • Manage Cache Service on a Server Node
    • Apply Configuration
    • Hot Apply Configuration
    • Reset Configuration
    • Data Load Balancing
  • Configuring Cache Clients
    • Adding Client Node in Cluster
    • Removing Client Node from Cluster
    • Configuring Client Node Settings
    • Creating Client Cache
    • Enable Client Cache on Client Nodes
    • Disable Client Cache on Client Nodes
    • Removing Client Cache
    • Configuring Client Cache Settings
  • Configuring Security
    • Configuring Security for Cache Management
    • Configuring Security for Cache
    • Configuring Security for Client Nodes
    • Configuring Encryption for Cache
    • Configure SSL/TLS Encryption in NCache
  • Configuring Bridge for WAN Replication
    • Creating Clustered Bridge
    • Adding Clustered Caches to Bridge
    • Configuring Bridge Settings
    • Configuring Conflict Resolver
    • Changing Cache Syncronization Modes
    • Configuring Master Cache
    • Force State Transfer
    • Connect/Disconnect Cache in Bridge
    • Remove Cache from Bridge
    • Bridge Management
  • NCache on Docker
    • Using NCache Docker Images
    • Customize NCache Dockerfile
  • Monitoring NCache
    • Cache Counters
    • Monitoring Caches using NCache Manager
      • Changing Management Port of Cache Node
      • Configuring Counters to Display
      • Browse Cache Statistics
      • Cluster Health
      • Monitoring Cache Clusters using NCache Email Alerts
    • Monitoring Caches using NCache Monitor
      • Monitoring with Built-In Dashboard
      • Monitoring with Custom Dashboard
    • Monitoring Bridge using NCache Manager
    • Monitoring NCache using Windows PerfMon Tool
      • Monitoring Cache Server Counters Using PerfMon
      • Monitoring Cache Client Counters Using PerfMon
      • Monitoring Bridge Counters Using PerfMon
    • Logging in NCache
      • NCache Log Viewer
      • NCache Monitor Logging
      • Performance Counters Logging
      • Windows Event Logging
      • Email Notifications on NCache Events
      • Cache Server Logging
      • Client Side API Logging
      • Cache Event IDs
    • Troubleshooting NCache Monitoring
      • Computer Name Not Found
      • Diskperf Not Installed
      • No READ Access to the Perflib Subkeys
      • Unable to Connect to Remote Server
    • IPV6 Support
  • Upgrading NCache Versions
    • Live Upgrade NCache Version
    • Upgrade NCache Version Offline
  • Apply Windows Patches on NCache Server

Eviction

For every cache, cache size should be estimated in advance with careful consideration of data usage by your application. However, your cache has storage limitation and if data will reside in the cache forever, it will eventually become full. To handle this, NCache's 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 fresher incoming data. Eviction will smooth cache operations while keeping the cache size limited by removing a configured percentage of data.

NCache provides different polices for eviction. These policies decide which data would be evicted when cache is full:

Priority Based Eviction

This eviction policy lets the cache evict lesser 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 priority 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.

Least Recently Used (LRU)

This eviction policy lets caches evict data which 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 than the data which 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 which is accessed 20 times.

Do not Evict

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 eviction ratio i.e. by what percentage data should be evicted from cache. Eviction removes only the configured percentage of data from cache once eviction is triggered.

Warn user when cache is near full

When cache is about 80% full and needs eviction, NCache logs events to both Event Viewer in Windows and also in 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 bulks. Size of the bulk operation is configurable through Alachisoft.NCache.Service.exe.config file. Similarly, you can also configure the delay between two bulk removal operations with the help of Alachisoft.NCache.Service.exe.config file.

Eviction in Clustered Environment

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

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

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

Back to top Copyright © 2017 Alachisoft