I trying to get the cache statistics programmatically in infinispan without JMX.
I used Ehcache in the past, it has a nice way to get the statistics programmatically like cache.getHitCount().
Any ideas on how to do the same in infinispan?
Note: I'm using Infinispan 6.0.2 version which comes by default with Wildfly 8.2.0.Final.
You can access the stats via a AdvancedCache.getStats().
For example, from a Cache instance:
cache.getAdvancedCache().getStats().getHits()
Related
I have 2/3 Java/spring-boot application running in a system. I want to use common storage so that other java application can also use cache generated by any other Java/spring-boot application.
Can I create in memory ehcache with common diskstore
<!--diskStore path="D://cache//" /-->
or should I run a standalone ehcache in my machine & use it in all application
So, as far as I read, it looks like if we need to run in a server, it should be in Terracotta server & terracotta server helps in distribution
But, I rather want to centralize the cache, so other application can use common cache
So, I think I need to do without terracotta
Or is there any other cache vendor is there to support my usecase?
This is easily achieved using Hazelcast IMDG. Hazelcast IMDG can be run as seperate cluster or embedded with spring applications. To use hazelcast with Spring all you have to is to add the Spring-data-hazelcast dependency.
There are several code samples available online and it github.
Spring Data example: Click Here
Dependency project : Click here
I want to try Ehcache in distributed form. Can someone suggest me if EHcache (Not the BigMemoryMax) works in distributed mode.
I am looking for only open source product. I am not looking to buy a Bigmemory Max or Terracota server, which will give me a off heap access, which i dont need as of now.
If so, please provide the version, url and some guide/examples to implement distributed Ehcache.
Thanks...
Ehcache website is your best starting point:
Ehcache 2.10.x has open source clustering support with Terracotta 4.3.x
Ehcache 3.1.x has open source clustering support with Terracotta 5
I have a couple of entities for JBoss 7, where I set the caching as annotation like:
#Cache(usage = CacheConcurrencyStrategy.TRANSACTIONAL, region = "USERS")
and time to time I need to evict (flush) this cache region. Prior JBoss 7 (Infinispan) I used an MBean what did this flushing. But now JBoss 7 is not the case, so I need a solution based on something what can be elaborated programatically (ex. CLI)
Does anybody know how to evict manually an Infinispan local cache using CLI?
I am using JBoss 7 in standalone mode and in jboss-cli, for the eviction operation there is no way to specify the region's name.
Any hint?
SK
Infinispan doesn't have regions, you can only clear the entire cache.
On the other hand, Hibernate should create a separate Infinispan cache for each region.
I want to cluster EHCache in Play Framework 2.x web application in several node. Why everyone recommend to avoid to use EHCache as a distributed cache in Play 2.x clustered web application?
I use nginx proxy to serve request across Play node and i want to make default EHCache of each node share its content.
Well according to this EHCache page, using EHCache in distributed mode is a commercial product. So if you want to use a free distributed cache, you need something different like Memcached or Redis.
My experience deploying a (Java)Play 2.2.3 to Amazon EC2 was terrible with EHCache. It requires a few workarounds with the localhost resolve (going su for each of your nodes - hard work when you have a few dozens of servers) and regardless, being free only for standalone version without ostensively letting us know upfront is a big no-no for me. I'm done with EHCache.
Edit: moved to Redis in 2015 (thanks #Traveler)
I am not aware of any Play Framework issues here, but the use of ehcache 2.x should fine as you can set it up with JGroups (faster than RMI) and use invalidation mode (infinispan slang).
Invalidation is a clustered mode that does not actually share any data at all, but simply aims to remove data that may be stale from remote caches. This cache mode only makes sense if you have another, permanent store for your data.
In ehcache 2.x you can set up invalidation mode with replicatePuts=false in your jgroups config.
In ehcache 3.x they do not have such a mode. You have to set up a commercial Terracotta server which is a distributed cache. So all date is moved between nodes and the terracotta server.
We tried it once and failed terribly.
As ehcache2.x is no longer active we just switched to Infinispan which has all features of ehcache2.x and a lot more.
So my recommendation: Use ehcache 2.x or infinispan. Do not use ehcache 3.x
I am afraid I have got some pretty basic questions about ehcache. I would like to use caching mechanism on clustered Glassfish without any significant infrastrucure.
As I know using ditributed cache with ehcache means that I have to use the terracotta server array, don't?
I am not so experienced in caching so could I use the ehcache on clustered glassfish that I just put some JAR into the classpath of Glassfish or deploy a WAR or something onto Glassfish and that's it? Do I have to use an external cache server anyway?
The replicated cache in ehcache doesn't need the terracotta server array, do it?
I would like to store a java Map object in the store which is going to be changed quite often. In this case the replicated cache is not best choice, as I know. The Hazelcast distributed cache needs any external cache server?
Thank you very much for your help in advance!
Have a nice day, experts!
Hazelcast doesn't need any externel server if you are running Java.
Basically add hazelcast.jar into your classpath. And from your application creata an Hazelcast instance:
HazelcastInstance hazelcast = Hazelcast.newHazelcastInstance(new Config());
then to get a distributed map:
Map map = hazelcast.getMap("myMap");
that's it. In this example I provided the default config which uses Multicast to discovery of the nodes. You can update and change any parameter.
For more information see Quick Start Tutorial
The replication feature in Ehcache does not require any server. You simply add the Ehcache jar to your web application and configure Ehcache to replicate to all cluster nodes. You can choose whether to automatically discover all GlassFish nodes using multicast or you can manually tell Ehcache where to find the other nodes. You can find the Ehcache replication configuration instructions here: http://ehcache.org/documentation/replication/rmi-replicated-caching#configuring-the-peer-provider
Hazelcast works similarly. See here for documentation: http://hazelcast.org/docs/3.0/manual/html/ch12s02.html