private static Map<String, GeodeCache> buildTicketCaches(final GeodeProperties properties,
                                                             final TicketCatalog ticketCatalog) {
        val cacheFactory = new CacheFactory()
            .set("name", "CasGeodeCache")
            .set("mcast-port", String.valueOf(properties.getMulticastPort()))
            .set("log-level", LOGGER.isDebugEnabled() ? "DEBUG" : "WARN")
            .setPdxReadSerialized(true)
            .setPdxSerializer(new ReflectionBasedAutoSerializer(GeodeTicketDocument.class.getName()));
        
        if (StringUtils.isNotBlank(properties.getLocators()) && !StringUtils.equalsIgnoreCase("none", properties.getLocators())) {
            cacheFactory.set("locators", properties.getLocators());
        }
        val cache = cacheFactory.create();
        val definitions = ticketCatalog.findAll();
        return definitions
            .stream()
            .map(Unchecked.function(definition -> {
                val storageName = definition.getProperties().getStorageName();
                val timeToLive = new ExpirationAttributes((int) definition.getProperties().getStorageTimeout(), ExpirationAction.DESTROY);
                val regionFactory = cache.<String, GeodeTicketDocument>createRegionFactory(RegionShortcut.REPLICATE);
                regionFactory.setStatisticsEnabled(true);
                regionFactory.setEntryTimeToLive(timeToLive);
                val region = regionFactory.create(storageName + "Region");
                
                val queryService = cache.getQueryService();
                val indexSource = "/%s t".formatted(region.getName());
                List.of("id", "kind", "principal", "prefix", "attributes").forEach(Unchecked.consumer(field ->
                    queryService.createIndex(field + "Index", "t." + field, indexSource)));
                return Pair.of(storageName, new GeodeCache(cache, region));
            }))
            .collect(Collectors.toMap(Pair::getKey, Pair::getValue));
    }
This is {@link CasGeodeTicketRegistryAutoConfiguration}.

@author Misagh Moayyed
@since 7.3.0
support/cas-server-support-geode-ticket-registry/src/main/java/org/apereo/cas/config/CasGeodeTicketRegistryAutoConfiguration.java