Diwali Deal : Flat 20% off + 2 free self-paced courses + $200 Voucher - SCHEDULE CALL
In this blog, you will learn about the core concepts of cache namespaces, different methods, syntax, and constants through a series of interview questions as a part of your salesforce learning.
Ans: Methods for controlling the platform cache are available in the Cache namespace.
The classes in the Cache namespace are listed below:
The above classes contain their respective methods, constructors, and enums used in various sections.
Ans: The CacheBuilder interface is an interface for safely retrieving and removing values from a session or org cache. Use the interface to generate a value you want to be stored in the cache. The interface checks for cache misses, so you no longer need to check for null cache values yourself. It has the namespace of Auth.
In this example, the CacheBuilder interface is implemented by a class called UserInfoCache. The class caches the SOQL query's results against the User object.
class UserinfoCache implements Cache. CacheBuilder { public Object doLoadString userid) { User u = (User [SELECT Id, IsActive, username FROM User WHERE id return u; ] ]
This example retrieves a cached user record based on a user ID. The value is returned if it is present in the org cache. The doLoad(String var) method is repeated if the value is missing, and the new value is cached and returned.
User batman = (User) Cache.Org.get(UserinfoCache.class, ‘00541000000ek4c');
Ans: The CacheBuilder interface has a single method:
Method |
Description |
Signature |
Parameters |
Return Value |
doLoad(var) |
It contains the reasoning behind creating a cached value. You don't directly call this method. Instead, it is indirectly invoked when the class that implements the CacheBuilder interface is referenced. |
public Object doLoad(String var) |
var Type: String |
Type: Object |
Ans: To add, retrieve, and manage values in the org cache, use the Cache.Org class. In contrast to the session cache, the organization cache is accessible to the organization across requests and to all users. It is also not associated with any session. It has the namespace of Cache.
Usage:
Cache Key Format
The format of the primary parameter that various methods in this class, like put, get, and contains, accept, are listed in the following table.
Key Format | Description |
Namespace. part tion. koy | Ful qalfied ey ame. |
Roy | tes 03 partion mahed as dealt when the namespace. paze tion pexisomited |
Local partieion. key |
Usethe Loca. prefix fer tothe g's ramespace when the |
Note:
Ans: The controller for a sample Visualforce page is the Org class (shown in the subsequent code sample). The init() method, which the Visualforce page calls when it loads using the action attribute, adds the cached settings for the first time—the namespace. The partition prefix does not appear in the cache keys. They all refer to the organization's default partition. Create a partition and set it as the default to run this sample.
public class OrgCacheController ( //Inner class. // Used as the data type of a cache value. class MyData ( public String value get; set; } public Integer counter { get; set; } public MyData String value) { this.value value; this.counter = 0; } public void inc(){ counter++; } override public String toString() { return this.value+":"+this.counter; // Apex List // Used as the data type of a cached value. private List numbers new List("ONE', 'TWO, 'THREE', 'FOUR', 'FIVE']; // Constructor of the controller for the Visualforce page. public OrgCacheController(){ } Adds various values to the cache. //This method is called when the Visualforce page loads. public void init(){
All key values are not qualified by the namespace.partition. // prefix because they use the default partition. // Add counter to the cache with initial value of 0 // or increment it if it's already there. if (ICache.Org.contains('counter')){ } } Cache.Org.put('counter', 0); else ( Cache.Org.put('counter', getCounter()+1); } // Add the datetime value to the cache only if it's not already there. if (!Cache.Org.contains('datetime']) { DateTime dt = DateTime.now(); Cache.Org.put('datetime', dt); // Add the custom data to the cache only if it's not already there. (Cache.Org.contains('data')){ Cache.Org.put('data', new MyData('Some custom value")); // Add a list of number to the cache if not already there. [Cache.Org.contains('list')){ Cache.Org.put('list', numbers); } // Add a string value to the cache if not already there. if (!Cache.Org.contains('output')){ Cache.Org.put('output', 'Cached text value'); }
// Return counter from the cache. public Integer getCounter() { return (Integer|Cache.Org.get('counter'); ] } } } Return datetime value from the cache. public String getCachedDatetime() { DateTime dt-(DateTime)Cache.Org.get('datetime"); return dt = null ? dt.format(): null; // Return cached value whose type is the inner class MyData. public String getCachedData(){ MyData mydata (MyData]Cache.Org.get('data'); return mydata != null ? mydata.toString(): null; // Return output from the cache. public String getOutput() { return (String)Cache.Org.get('output"); // Return list from the cache. public List getList() { return (List|Cache.Org.get('list'); } // Method invoked by the Rerender button on the Visualforce page. // Updates the values of various cached values. // Increases the values of counter and the MyData counter if those // cache values are still in the cache. public PageReference go() {
//Increase the cached counter value or set it to 0 J/if it's not cached. if (Cache.Org.contains('counter']} { Cache.Org.put('counter', getCounter() + 1); } else { Cache.Org.put('counter', 0); } // Get the custom data value from the cache. MyData d = (MyDataCache.Org.get('data'); // Only if the data is already in the cache, update it. if (Cache.Org.contains('data']) { d.inc(); Cache.Org.put('data', d); } } } return null; // Method invoked by the Remove button on the Visualforce page. // Removes the datetime cached value from the org cache. public Page Reference remove() { Cache.Org.remove('datetime'); return null; }
This is the OrgCacheController class's corresponding Visualforce page.
Cached datetime: Cached data: Cached counter: Repeat: 8nbsp; List size: gol” valu mmandButton “(Iremove]" value="Remove datetime Key" rerender="output'/>
This is the result of pressing twice the Rerender button on the website. If a key with the name counter was already in the cache when this sample was run, the counter value might be different in your situation.
Cached datetime:8/11/2015 1:58 PM Cached data:Some custom value:2 Cached counter:2 Output:Cached text value Repeat:ONE TWO THREE FOUR FIVE List size:5
Ans: You can use an Org class constant to set the time-to-live (TTL) value.
Constant | Description |
MAX TTL SECS |
Represents the maximum amount of time, in seconds, to keep the cached value in the org cache. |
Below are some of the methods of the Org class that are all static.
Methods |
Description |
Signature |
Parameters |
Return Value |
contains(key) |
It returns true if the supplied key corresponds to a cached value in the org cache. |
public static Boolean contains(String key) |
key Type: String |
Type: Boolean |
contains(keys) |
It returns true if the provided key items have values in the org cache. |
public static List |
keys Type: List |
Type: List |
contains(set OfKeys) |
It returns true if the supplied set of keys' values are in the org cache. |
public static Map |
setOfKeys Type: Set |
Type: Map |
get(key) |
It returns the cached value from the org cache corresponding to the given key. |
public static Object get(String key) |
key Type: String |
Type: Object |
get(cacheBuilder, key) |
It returns the cached value from the org cache corresponding to the given key. Use this method if the class representing your cached item implements the Cache Builder interface. |
public static Object get(System.Type cacheBuilder, String key) |
cacheBuilder Type: System.Type key Type: String |
Type: Object |
get(keys) |
It returns the cached values corresponding to the given set of keys from the org cache. |
public static Map |
keys Type: Set |
Type: Map |
getAvgGetSize() |
It gives back, in bytes, the average item size of all the keys retrieved from the org cache. |
public static Long getAvgGetSize() |
Type: Long |
|
getAvgGetTime() |
It gives the average amount of time, in nanoseconds, needed to retrieve a key from the org cache. |
public static Long getAvgGetTime () |
Type: Long |
|
getAvgValueSize() |
It is only supported in API versions 49.0 and earlier; it is deprecated. It gives the average item size, in bytes, for keys in the org cache. |
public static Long getAvgValueSize() |
Type: Long |
|
getCapacity() |
It returns the amount of the org cache capacity that has been utilized. |
public static Double getCapacity() |
Type: Double |
|
getKeys() |
It returns a list of all keys accessible to the calling namespace and kept in the org cache. |
public static Set |
Type: Set |
|
getMaxGet Size() |
It gets the largest item size, in bytes, for all the keys that were retrieved from the org cache. |
public static Long getMaxGetSize () |
Type: Long |
|
getMaxGetTime() |
It gives the maximum amount of time, in nanoseconds, needed to retrieve a key from the org cache. |
public static Long getMaxGetTime() |
Type: Long |
|
getMaxValue Size() |
It is only supported in API versions 49.0 and earlier; it is deprecated. The maximum item size for keys in the org cache is returned, expressed in bytes. |
public static Long getMaxValue Size() |
Type: Long |
|
getMissRate() |
The miss rate in the org cache is returned. |
public static Double getMissRate() |
Type: Double |
|
getName() |
It gives the default cache partition's name back. |
public String getName() |
Type: String |
|
getNumKeys() |
The entire number of keys in the org cache is returned. |
public static Long getNumKeys() |
Type: Long |
|
getPartition (partitionName) |
It returns the partition with the supplied partition name from the org cache. |
public static cache.Org Partition getPartition (String partitionName) |
partitionName Type: String |
Type: Cache.OrgPartition |
put(key, value) |
It creates a cached item for the given key/value pair in the organization cache. Only the cache in your org's namespace can be written to using the put method. |
public static void put(String key, Object value) |
key Type: String value Type: Object |
Type: void |
put(key, value, visibility) |
It sets the visibility of the cached value and stores the supplied key/value pair as a cached entry in the organization cache. |
public static void put(String key, Object value, Cache.Visibility visibility) |
key Type: String value Type: Object visibility Type: Cache.Visibility |
Type: void |
put(key, value, ttlSecs) |
It sets the lifespan of the cached value and stores the supplied key/value pair as a cached entry in the organization cache. |
public static void put(String key, Object value, Integer ttlSecs) |
key Type: String value Type: Object ttlSecs Type: Integer |
Type: void |
put(key, value, ttlSecs, visibility, immutable) |
It creates a cached item for the given key/value pair in the organization cache. Additionally, this approach modifies the lifetime, visibility, and whether another namespace has the ability to replace it. |
public static void put(String key, Object value, Integer ttlSecs, cache. Visibility visibility, Boolean immutable) |
key Type: String value Type: Object ttlSecs Type: Integer visibility Type: Cache.Visibility immutable Type: Boolean |
Type: void |
remove(key) |
It removes the cached value associated with the given key from the org cache. |
public static Boolean remove(String key) |
key Type: String |
Type: Boolean |
remove(cache Builder, key) |
It removes the cached value associated with the given key from the org cache. If the class representing your cached item implements the CacheBuilder interface, use this method. |
public static Boolean remove(System.Type cacheBuilder, String key) |
cacheBuilder Type: System. Type key Type: String |
Type: Boolean |
Ans: OrgPartition contains tools for managing the cache values in a particular partition's org cache. Unlike the session cache, the org cache is not connected to any session. It is accessible to all users and the organization across requests. It has the namespace "Cache."
Usage:
Learn more about Partition Methods for a list of Cache—partition methods by joining our online Salesforce training courses.
Ans: The Partition class is the base class for the partition types Cache.Org and Cache. Session. Use the subclasses to manage the cache partition for org and session caches.
Cache Key Format for Partition Methods:
The key name is required by the methods to add, retrieve, and manage cache values in a partition after obtaining the partition object (an instance of Cache.OrgPartition or Cache.SessionPartition)—the namespace. A partition prefix is not part of the critical name you pass to these methods (get(), put(), delete(), and contains()).
Ans: Below are some of the methods of the partition class.
Methods |
Description |
Signature |
Parameters |
Return Value |
contains(key) |
If the cache partition has a cached value matching the supplied key, then the function returns true. |
public Boolean contains(String key) |
key Type: String |
Type: Boolean |
contains(set OfKeys) |
It returns true if the supplied set of keys' values is present in the cache partition. |
public Map |
setOfKeys Type: Set |
Type: Map |
createFully QualifiedKey (namespace, partition, key) |
It creates a fully qualified key from the key components that have been handed in. namespace. partition. key is the format of the key string that is generated. |
public static String createFully QualifiedKey (String namespace, String partition, String key) |
namespace Type: String partition Type: String key Type: String |
Type: String |
createFully Qualified Partition( namespace, partition) |
It creates a fully qualified partition name using the namespace and partition supplied as arguments. The resulting partition string has the namespace. partition format. |
public static String createFully Qualified Partition(String namespace, String partition) |
namespace Type: String partition Type: String |
Type: String |
get(key) |
It returns the cached value from the cache partition that corresponds to the given key. |
public Object get(String key) |
key Type: String |
Type: Object |
get(keys) |
It returns from the cache partition the cached values corresponding to the given set of keys. |
public Map |
keys Type: Set |
Type: Map |
get(cacheBuilder, key) |
The partition cache's cached value that corresponds to the given key is returned. Use this method if the class representing your cached item implements the CacheBuilder interface. |
public Object get(System.Type cacheBuilder, String key) |
cacheBuilder Type: System. Type key Type: String |
Type: Object |
getAvgGetSize() |
It gives back, in bytes, the average item size of all the keys retrieved from the cache partition. |
public Long getAvgGetSize() |
Type: Long |
|
getAvgGetTime () |
It gives the average amount of time, in nanoseconds, needed to retrieve a key from the cache partition. |
public Long getAvgGetTime () |
Type: Long |
|
getAvgValueSize() |
It is only supported in API versions 49.0 and earlier; it is deprecated. It gives the average item size, in bytes, for keys in the cache partition. |
public Long getAvgValueSize() |
Type: Long |
|
getCapacity() |
It returns the percentage of the cache partition capacity that has been utilized. |
public Double getCapacity() |
Type: Double |
|
getKeys() |
It returns a list of all keys that are accessible to the calling namespace and kept in the cache partition. |
public Set |
Type: Set |
|
getMaxGet Size() |
It gets the largest item size, in bytes, for all the keys that were retrieved from the cache partition. |
public Long getMaxGetSize () |
Type: Long |
|
getMaxGetTime() |
It gives the maximum amount of time, in nanoseconds, needed to retrieve a key from the org cache. |
public Long getMaxGetTime() |
Type: Long |
|
getMaxValue Size() |
It is only supported in API versions 49.0 and earlier; it is deprecated. The maximum item size for keys in the cache partition is returned, expressed in bytes. |
public Long getMaxValue Size() |
Type: Long |
|
getMissRate() |
The miss rate in the cache partition is returned. |
public Double getMissRate() |
Type: Double |
|
getName() |
It gives the default cache partition's name back. |
public String getName() |
Type: String |
|
getNumKeys() |
The entire number of keys in the cache partition is returned. |
public Long getNumKeys() |
Type: Long |
|
isAvailable() |
If the Salesforce session is available, the return value is true. It applies only to Cache. SessionPartition. When an active session isn't present, such as in asynchronous Apex or code called by asynchronous Apex, the session cache isn't accessible. For instance, when an Apex trigger operates in an asynchronous context, the session cache is not accessible if batch Apex causes the trigger to fire. |
public Boolean isAvailable() |
Type: Boolean |
|
put(key, value) |
It creates a cached item for the given key/value pair in the cache partition. Only the cache in your org's namespace can be written to using the put method. |
public void put(String key, Object value) |
key Type: String value Type: Object |
Type: void |
put(key, value, visibility) |
It sets the visibility of the cached value and stores the supplied key/value pair as a cached entry in the cache partition. |
public void put(String key, Object value, Cache.Visibility visibility) |
key Type: String value Type: Object visibility Type: Cache.Visibility |
Type: void |
put(key, value, ttlSecs) |
It sets the lifespan of the cached value and stores the supplied key/value pair as a cached entry in the cache partition. |
public void put(String key, Object value, Integer ttlSecs) |
key Type: String value Type: Object ttlSecs Type: Integer |
Type: void |
put(key, value, ttlSecs, visibility, immutable) |
It creates a cached item for the given key/value pair in the cache partition. Additionally, this approach modifies the lifetime, visibility, and whether another namespace has the ability to replace it. |
public void put(String key, Object value, Integer ttlSecs, cache.Visibility visibility, Boolean immutable) |
key Type: String value Type: Object ttlSecs Type: Integer visibility Type: Cache.Visibility immutable Type: Boolean |
Type: void |
remove(key) |
It removes from the cache partition the cached value associated with the given key. |
public Boolean remove(String key) |
key Type: String |
Type: Boolean |
remove(cache Builder, key) |
It removes from the cache partition the cached value associated with the given key. Use this method if the class representing your cached item implements the CacheBuilder interface. |
public Boolean remove(System.Type cacheBuilder, String key) |
cacheBuilder Type: System.Type key Type: String |
Type: Boolean |
validate CacheBuilder (cacheBuilder) |
It determines whether the supplied class actually implements the CacheBuilder interface. |
public static void validateCache Builder(System.Type cacheBuilder) |
cacheBuilder Type: System.Type |
Type: void |
validateKey (isDefault, key) |
It verifies a cache key. The Cache throws a method.InvalidParamException procedure n if the key is invalid A valid key has alphanumeric characters and is not null. |
public static void validateKey(Boolean isDefault, String key) |
isDefault Type: Boolean key Type: String |
Type: void |
validateKey Value(isDefault, key, value) |
It checks to see if a cache key is valid and that the cache value is not null. A Cache. This procedure throws an invalid ParamException procedure. If the key or value is invalid, a InvalidParam Exception will be thrown. A valid key has alphanumeric characters and is not null. |
public static void validateKey Value(Boolean isDefault, String key, Object value) |
isDefault Type: Boolean key Type: String value Type: Object |
Type: void |
validateKeys(isDefault, keys) |
The supplied cache keys are verified. A Cache.Invalid ParamException has thrown if the key is invalid. A valid key has alphanumeric characters and is not null. |
public static void validateKeys (Boolean isDefault, Set |
isDefault Type: Boolean keys Type: Set |
Type: void |
validatePartitionName(name) |
It ensures, for instance, that the partition name is valid and not null. |
public static void validatePartitionName(String name) |
name Type: String |
Type: void |
Ans: Use the Cache- session class to store, access, and manage values in the session cache. As long as the user's Salesforce session is active, the session cache will be active (the user is logged in, and the session has not expired).
Cache Key Format for Session Methods:
The format of the primary parameters that various methods in this class, like put, get, and contains, accept, are listed in the following table.
Key Format | Description |
Namespace.partition.key | Fully qualified key name. |
Key | Refers to a partition marked as default when the namespace.partition prefix is omitted. |
Local.partition.key | Use the local prefix to refer to the org's namespace when the org doesn't have a namespace defined. If the org has a namespace defined, the local prefix also refers to that org's namespace. |
Note:
Ans: The controller for a sample Visualforce page is the Session class (shown in the subsequent code sample). The init() method, which the Visualforce page calls when it loads using the action attribute, adds the cached settings for the first time—the namespace. The partition prefix does not appear in the cache keys. They all refer to the organization's default partition. The myPartition partition is what the Visualforce page anticipates. Create a default partition in your organization called "myPartition" and execute this sample from there.
There are four output components on the Visualforce page.
Two buttons are also present on the Visualforce page.
public class SessionCacheController { //Inner class. // Used as the data type of a cache value. class MyData ( public String value get; set; } public Integer counter { get; set; } public MyData String value) { this.value value; this.counter = 0; } public void inc(){ counter++; } override public String toString() { return this.value+":"+this.counter; // Apex List // Used as the data type of a cached value. private List numbers- new List("ONE', 'TWO, 'THREE', 'FOUR', 'FIVE']; // Constructor of the controller for the Visualforce page. public SessionCacheController() { } Adds various values to the cache. //This method is called when the Visualforce page loads. public void init(){
// All key values are not qualified by the namespace.partition // prefix because they use the default partition. // Add counter to the cache with initial value of 0 // or increment it if it's already there. if (ICache.Session.contains('counter')){ } 1 } Cache.Session.put('counter', 0); else ( Cache.Session.put('counter', getCounter()+1); // Add the datetime value to the cache only if it's not already there. if (!Cache.Session.contains("datetime")){ DateTime dt = DateTime.now(); Cache.Session.put("datetime", dt); // Add the custom data to the cache only if it's not already there. (Cache.Session.contains('data')){ Cache.Session.put('data', new MyData("Some custom value')]: // Add a list of number to the cache if not already there. [Cache.Session.contains(list')){ Cache.Session.put('list', numbers); } // Add a string value to the cache if not already there. if (!Cache.Session.contains('output')){ Cache.Session.put('output', 'Cached text value'); // Return counter from the cache. public Integer getCounter() { return (Integer|Cache.Session.get('counter'); Return datetime value from the cache. public String getCachedDatetime() { DateTime dt-(DateTime)Cache.Session.get('datetime"); return dt != null ? dt.format(): null; // Return cached value whose type is the inner class MyData. public String getCachedData(){ MyData mydata (MyData)Cache.Session.get('data']; return mydata != null ? mydata.toString(): null; } // Method invoked by the Rerender button on the Visualforce page. // Updates the values of various cached values. // Increases the values of counter and the MyData counter if those // cache values are still in the cache. public PageReference go() //Increase the cached counter value or set it to 0 Jif it's not cached. if (Cache.Session.contains('counter')){ Cache.Session.put('counter', getCounter()+1): }else{ Cache Session.put('counter', 0); // Get the custom data value from the cache.
// Return counter from the cache. public Integer getCounter() { return (Integer|Cache.Session.get('counter'); Return datetime value from the cache. public String getCachedDatetime() { DateTime dt-(DateTime)Cache.Session.get('datetime"); return dt != null ? dt.format(): null; // Return cached value whose type is the inner class MyData. public String getCachedData(){ MyData mydata (MyData)Cache.Session.get('data']; return mydata != null ? mydata.toString(): null; } // Method invoked by the Rerender button on the Visualforce page. // Updates the values of various cached values. // Increases the values of counter and the MyData counter if those // cache values are still in the cache. public PageReference go() //Increase the cached counter value or set it to 0 Jif it's not cached. if (Cache.Session.contains('counter')){ Cache.Session.put('counter', getCounter()+1): }else{ Cache Session.put('counter', 0); // Get the custom data value from the cache.
This is the Visualforce page that corresponds to the SessionCacheController class.
Cached datetime: Cached data: Cached counter: Output: Repeat: List size:
This is the output of the page after clicking the Rerender button twice. The counter value could differ in your case if a key named counter was already in the cache before running this sample.
Cached datetime:8/11/2015 1:58 PM Cached data:Some custom value:2 Cached counter:2 Output:Cached text value Repeat:ONE TWO THREE FOUR FIVE List size:5
Propel your Salesforce training certification to new heights with JanBask Training's industry-leading certification tracks.
Ans: You can use a Session class constant to set the time-to-live (TTL) value.
Constant | Description |
MAX_TTL_SECS | Represents the maximum amount of time, in seconds, to keep the cached value in the session cache. |
Below are some of the methods of the Session class that are all static.
Methods |
Description |
Signature |
Parameters |
Return Value |
contains(key) |
It returns true if the supplied key corresponds to a cached value in the session cache. |
public static Boolean contains(String key) |
key Type: String |
Type: Boolean |
contains(set OfKeys) |
It returns true if the supplied set of keys' values are present in the cache. |
public static Map |
setOfKeys Type: Set |
Type: Map |
get(key) |
It returns the cached value from the session cache that corresponds to the given key. |
public static Object gets (String key) |
key Type: String |
Type: Object |
get(cacheBuilder, key) |
It returns the cached value from the session cache corresponding to the given key. Use this method if the class representing your cached item implements the Cache Builder interface. |
public static Object get(System.Type cacheBuilder, String key) |
cacheBuilder Type: System.Type key Type: String |
Type: Object |
get(keys) |
It returns the cached values corresponding to the given set of keys from the session cache. |
public static Map |
keys Type: Set |
Type: Map |
getAvgGetSize() |
It gives back, in bytes, the average item size of all the keys retrieved from the session cache. |
public static Long getAvgGetSize() |
Type: Long |
|
getAvgGetTime () |
It gives the average amount of time, in nanoseconds, needed to retrieve a key from the session cache. |
public static Long getAvgGetTime () |
Type: Long |
|
getAvgValueSize() |
It is only supported in API versions 49.0 and earlier; it is deprecated. It gives the average item size, in bytes, for keys in the session cache. |
public static Long getAvgValueSize() |
Type: Long |
|
getCapacity() |
It returns the percentage of the session cache capacity that has been utilized. |
public static Double getCapacity() |
Type: Double |
|
getKeys() |
It returns a list of all keys that are accessible to the calling namespace and kept in the session cache. |
public static Set |
Type: Set |
|
getMaxGet Size() |
It gets the largest item size, in bytes, for all the keys that were retrieved from the session cache. |
public static Long getMaxGetSize () |
Type: Long |
|
getMaxGetTime() |
It gives the maximum amount of time, in nanoseconds, needed to retrieve a key from the session cache. |
public static Long getMaxGetTime() |
Type: Long |
|
getMaxValue Size() |
It is only supported in API versions 49.0 and earlier; it is deprecated. The maximum item size for keys in the session cache is returned, expressed in bytes. |
public static Long getMaxValue Size() |
Type: Long |
|
getMissRate() |
The miss rate in the session cache is returned. |
public static Double getMissRate() |
Type: Double |
|
getName() |
It gives the default cache partition's name back. |
public String getName() |
Type: String |
|
getNumKeys() |
The entire number of keys in the session cache is returned. |
public static Long getNumKeys() |
Type: Long |
|
getPartition (partitionName) |
It returns the partition with the supplied partition name from the session cache. |
public static cache.Org Partition getPartition (String partitionName) |
partitionName Type: String |
Type: Cache.OrgPartition |
isAvailable() |
If the session cache is accessible, it will return true. When there isn't an active session present, as in situations like code called by asynchronous Apex or asynchronous Apex. For instance, if batch Apex triggers an Apex execution, the session Considering that the trigger operates in an asynchronous environment, the cache is not accessible in the trigger. |
public static Boolean isAvailable() |
Type: Boolean |
|
put(key, value) |
It creates a cached item for the given key/value pair in the session cache. Only the cache in your org's namespace can be written to using the put method. |
public static void put(String key, Object value) |
key Type: String value Type: Object |
Type: void |
put(key, value, visibility) |
It sets the visibility of the cached value and stores the supplied key/value pair as a cached entry in the session cache. |
public static void put(String key, Object value, Cache. Visibility visibility) |
key Type: String value Type: Object visibility Type: Cache.Visibility |
Type: void |
put(key, value, ttlSecs) |
It sets the lifespan of the cached value and stores the supplied key/value pair as a cached entry in the organization cache. |
public static void put(String key, Object value, Integer ttlSecs) |
key Type: String value Type: Object ttlSecs Type: Integer |
Type: void |
put(key, value, ttlSecs, visibility, immutable) |
It creates a cached item for the given key/value pair in the session cache. Additionally, this approach modifies the lifetime, visibility, and whether another namespace has the ability to replace it. |
public static void put(String key, Object value, Integer ttlSecs, cache.Visibility visibility, Boolean immutable) |
key Type: String value Type: Object ttlSecs Type: Integer visibility Type: Cache.Visibility immutable Type: Boolean |
Type: void |
remove(key) |
It removes from the session cache the cached value associated with the given key. |
public static Boolean remove(String key) |
key Type: String |
Type: Boolean |
remove(cache Builder, key) |
It removes from the session cache the cached value associated with the given key. Use this method if the class representing your cached item implements the CacheBuilder interface. |
public static Boolean remove(System.Type cacheBuilder, String key) |
cacheBuilder Type: System.Type key Type: String |
Type: Boolean |
Ans: Session Partition class contains tools for managing the cache values in a partition's session cache. It has the namespace of Cache.
Usage:
Cache.SessionPartition sessionPartition = Cache.Session.getPartition ('namespace.myPartition');
Ans: The controller for a sample Visualforce page is contained in this class (shown in the subsequent code sample). The controller provides instructions for using the Cache.SessionPartition methods control a cache value on a specific partition. The controller receives the partition name, counter key name, and initial counter value inputs from the Visualforce page. For these, the controller contains default inputs. The go() method is called, and the counter is increased by one when you click Rerender on the Visualforce page. The counter Key is removed from the Cache when you click Remove Key. When it is added again to the Cache, the counter value is reset to its initial value.
public class SessionPartitionController ( Name of a partition in the local namespace String partitioninput 'localmyPartition'; // Name of the key String counterKeyInput = 'counter'; // Key initial value Integer counterinitValue = 0; Session partition object Cache SessionPartition sessionPartition //Constructor of the controller for the Visualforce page. public SessionPartitionController() { } // Adds counter value to the cache. // This method is called when the Visualforce page loads. public void init(){ // Create the partition instance based on the partition name sessionPartition = getPartition[]: // Add counter to the cache with an initial value // or increment it if it's already there. if (IsessionPartition.contains(counterKeyInput)){ sessionPartition.put(counterKeyInput, counterinitValue); } else { sessionPartition.put(counterKeyInput, getCounter() + 1); } // Returns the session partition based on the partition name // given in the Visualforce page or the default value.
private Cache.SessionPartition getPartition(){ if (sessionPartition == null) { sessionPartition Cache Session.getPartition(partitionInput); ] return sessionPartition: 1 // Return counter from the cache. public Integer getCounter() { return (Integer getPartition().get(counterKeyinput); //Invoked by the Submit button to save input values // supplied by the user. public PageReference save() { // Reset the initial key value in the cache getPartition().put(counterKeyInput, counterInitValue); return null; // Method invoked by the Rerender button on the Visualforce page. // Updates the values of various cached values. // Increases the values of counter and the MyData counter if those // cache values are still in the cache. public PageReference go() { Get the partition object sessionPartition = getPartition(); //Increase the cached counter value or set it to 0 // if it's not cached. if (sessionPartition.contains(counterKeyInput)) {
sessionPartition.put(counterKeyInput, getCounter() + 1); else { sessionPartition.put(counterKeyInput, counterinitValue); 1 ] return null; Method invoked by the Remove button on the Visualforce page. // Removes the datetime cached value from the session cache. public PageReference remove() { getPartition().remove(counterKeyinput); return null; } } // Get and set methods for accessing variables // that correspond to the input text fields on the Visualforce page. public String getPartitioninput[] [ return partitioninput; public String getCounterKeyinput[] { return counterKeyInput: } public Integer getCounterInitValue(){ return counterinitValue; } public void setPartitionInput(String partition){ this.partitionInput = partition; }
sessionPartition.put(counterKeyInput, getCounter() + 1); else { sessionPartition.put(counterKeyInput, counterinitValue); 1 ] return null; Method invoked by the Remove button on the Visualforce page. // Removes the datetime cached value from the session cache. public PageReference remove() { getPartition().remove(counterKeyinput); return null; } } // Get and set methods for accessing variables // that correspond to the input text fields on the Visualforce page. public String getPartitioninput[] [ return partitioninput; public String getCounterKeyinput[] { return counterKeyInput: } public Integer getCounterInitValue(){ return counterinitValue; } public void setPartitionInput(String partition){ this.partitionInput = partition; }
This is the Visualforce page that corresponds to the SessionPartitionController class.
Partition with Namespace Prefix: Counter Key Name: Counter Initial Value: Cached Counter:
Ans: Exception classes can be found in the Cache namespace.
All exception classes include built-in methods to return the exception type and error message. These exceptions in the table below are present in the Cache namespace.
Exception | Thrown When |
Cache.Session. | An error occurred while adding or retrieving a value in the session cache. |
SessionCacheException | Cache.session.SessionCacheNoSessionException An attempt is made to access the cache when the session cache isn't available. |
Ans: To specify whether a cached item is visible across all namespaces or just the value's namespace, use the Cache. Visibility enumeration in the Cache.Session or Cache.Org methods.
The values of the Cache. The visibility enum is as follows:
Value | Description |
ALL | The cached value is available to Apex code executing from any namespace. This is the default state. |
NAMESPACE | The cached value is available to Apex code executing from the same namespace. If a key has the visibility.NAMESPACE attribute, a get method initiated from a different namespace returns null. |
Cache Namespace Management in the context of Salesforce generally refers to the management of cached data within a specific namespace or for a managed package. Hope these interview questions and answers related to Cache Namespace Management have helped you learn about the concept.
Must-Know Salesforce Apex Interview Questions and Answers
Interview Questions Based On Login Issues & Passwords
Top JWS and JWT Interview Questions and Answers
Cyber Security
QA
Salesforce
Business Analyst
MS SQL Server
Data Science
DevOps
Hadoop
Python
Artificial Intelligence
Machine Learning
Tableau
Download Syllabus
Get Complete Course Syllabus
Enroll For Demo Class
It will take less than a minute
Tutorials
Interviews
You must be logged in to post a comment