<prompt> Tekeleza programu ya Java ambayo inasoma faili kubwa ya maandishi na kuhesabu mzunguko wa kila neno kwenye faili. Programu inapaswa kuhifadhi matokeo katika hifadhidata ya Redis, na maneno kama funguo na masafa yao kama maadili. Zaidi ya hayo, toa chaguo la kurejesha maneno ya juu ya N ya mara kwa mara kutoka kwa hifadhidata.PLINFORMAT  <response>: agiza java.io.BufferedReader;agiza java.io.FileReader;agiza java.io.IOException;agiza java.util.HashMap;agiza java.util.Map;agiza java.util.Foleni ya Kipaumbele;agiza java.util.Comparator;agiza redis.clients.jedis.Jedis;darasa la umma WordFrequency utupu tuli wa umma String args String filePath large_text_file.txt; int topN 10; Soma faili ya maandishi na uhesabu masafa ya maneno Ramani wordFrequencies countWordFrequenciesfilePath; Hifadhi matokeo kwenye hifadhidata ya Redis storeInRediswordFrequencies; Rejesha maneno ya juu N ya mara kwa mara Foleni ya Kipaumbele topWords getTopNWordstopN; System.out.printlnJuu topN maneno ya mara kwa mara:; wakati !topWords.isEmpty Map.Entry entry topWords.poll; System.out.printlnentry.getKey : entry.getValue; Ramani tuli ya faragha countWordFrequenciesString filePath Ramani wordFrequencies new HashMap; jaribu BufferedReader br new BufferedReadermpya FileReaderfilePath Mstari wa kamba; wakati line br.readLine ! null Kamba maneno line.splits; kwa Neno la mfuatano: maneno neno neno.toLowerCase.replaceAlla-z0-9, ; ikiwa !word.isEmpty wordFrequencies.putneno, wordFrequencies.getOrDefaultneno, 0 1; kukamata IOException e System.err.printlnHitilafu ya kusoma faili: e.getMessage; kurudi nenoFrequencies; store ya faragha tuli ya utupuInRedisRamani wordFrequencies Jedis jedis Jedi mpya ; kwa Map.Entry ingizo : wordFrequencies.entrySet jedis.setentry.getKey, String.valueOfentry.getValue; Private tuli PriorityQueue getTopNWordsint topN Jedis jedis Jedi mpya ; Kilinganishi comparator e1, e2 - e2.getValue.compareToe1.getValue; Foleni ya Kipaumbele topWords new PriorityQueuetopN, comparator; kwa ufunguo wa kamba: jedis.keys thamani ya int Integer.parseIntjedis.getkey; Map.Entry entry new HashMap.SimpleEntryufunguo, thamani; ikiwa topWords.size topN topWords.ongezakuingia; vinginevyo ikiwa thamani topWords.peek.getValue topWords.poll; topWords.ongezakuingia; kurudi Maneno ya juu; 