1つの パブリック クラスMapCacheに{ 2 3。 / ** 4。 * 1024、デフォルトのキャッシュメモリ 5。 * / 6。 プライベート 静的 最終 int型 DEFAULT_CACHES = 1024 ; 7 。8 プライベート 静的 最終 MapCacheにINS = 新しい新しいMapCacheに(); 9 10 パブリック 静的MapCacheにSINGLE() { 11 リターンINS; 12である } 13である 14 / ** 15 *バッファ容器は、 16 * / 17 プライベート 静的マップは、<文字列は、CacheObject> cachePool; 18である 19。 公衆MapCacheに(){ 20は 、この(DEFAULT_CACHES); 21である } 22が 23である 公共 MapCacheに(int型cacheCount){ 24 cachePool = 新しい新規のConcurrentHashMapの(cacheCount); 25 } 26である 27 / ** 28 *バッファリード 29 * 30 * @param キーキャッシュのキー 31である * @param <T> 32 * @return 33 * / 34 公共の 静的 <T> T得る(文字列キー){ 35 CacheObject cacheObject = cachePool.get(キー)。 36 であれば(NULL!= cacheObject){ 37 長い CUR =にSystem.currentTimeMillis()/ 1000 。 38 であれば(cacheObject.getExpired()<= 0 || cacheObject.getExpired()> CUR){ 39 オブジェクト結果= cacheObject.getValue()。 40 リターン(T)をもたらします。 41 } 42 } 43 リターン NULL ; 44である } 45 46である / ** 47 キャッシュ・ハッシュ・タイプ読み取る* 48 * 49 * @param キーキャッシュキー 50 * @param フィールドキャッシュフィールド 51である * @param <T> 52である * @return 53である * / 54である 公共 < T> T hget(文字キー、文字列フィールド){ 55 キー=キー+ ":" + フィールド、 56は 戻り 、このに.get(キー) 57である } 58 59 / ** 60 *バッファ提供さ 61である * 62である * @param 主キーキャッシュ 63である * @paramの値バッファ値 64 * / 65 公共 静的 ボイドSET(文字列キー、オブジェクト値){ 66 INS.set(キー、値、-1 )。 67 } 68 69 / * 70 *キャッシュと有効期限を設定し、 71である * 72 * @param キーキャッシュのキー 73である * @paramの値バッファ値 74 * @param期限切れの有効期限、秒 75 * / 76 公共 のボイド SET(文字列のキーは、オブジェクトの値は、ロング{期限切れ) 77 => 0にSystem.currentTimeMillisを(期限切れ期限切れ)/ 1000 +?期限切れ:有効期限が切れ; 78 CacheObject cacheObject = 新しい新しいCacheObject (キー、値、期限切れ); 79 cachePool.put(キー、cacheObject); 80 } 81 82 / ** 83 *ハッシュバッファ設け 84 * 85 * @param キーキャッシュキー 86の * @paramのフィールドバッファフィールド 87 * @paramの値バッファ値 88 * / 89 公共 ボイドHSET(文字列キー、フィールド文字列オブジェクトの値){ 90 この .hset(キー、フィールド、値、-1 ); 91である } 92 93 / ** 94 *セットとを有するハッシュ・キャッシュの有効期限 95 * 96 * @param キーキャッシュキー 97 * @param フィールドキャッシュ項目 98 * @paramの値バッファ値 99 * @paramが有効期限を満了し、秒間 100 * / 101 公衆 ボイド HSET(文字列キー、文字列フィールド、オブジェクトの値は、長い期限切れ){ 102 キー=キー+「:」+ フィールド。 103 期限切れ=>は0の期限が切れ?System.currentTimeMillis()/ 1000 + 期限切れ:有効期限が切れ; 104は CacheObject cacheObject = 新しいCacheObject(キー、値、期限切れ)。 105 cachePool.put(キー、cacheObject)。 106 } 107 108 / ** 109 *根据キー删除缓存 110 * 111 * @paramのキー缓存キー 112 * / 113 パブリック 静的 ボイドデル(文字列キー){ 114 cachePool.remove(キー); 115 } 116 117 / ** 1 18 *キーフィールドとキャッシュ削除 119 * 120 * @param キーキャッシュキー 121 * @paramのフィールドバッファフィールド 122 * / 123 公共 ボイドHDEL(文字キー、文字列フィールド){ 124 キー+キー= ":" + フィールドと、 125 本れる.del(KEY); 126 } 127 128 / ** 129 *清空缓存 130 * / 131 公共 ボイドクリーン(){ 132 cachePool.clear()。 133 } 134 135 静的 クラスCacheObject { 136 プライベート文字列キー。 137 プライベートオブジェクトの値。 138 プライベート ロングは有効期限が切れ; 139 140 公共 CacheObject(文字列キー、オブジェクトの値は、長い期限切れ){ 141 この .KEY = キー。 142 この .VALUE = 値。 143 本.expired = 有効期限が切れ; 144 } 145 146 公共の文字列のgetKey(){ 147 リターンキー。 148 } 149 150 パブリックオブジェクトのgetValue(){ 151 戻り値; 152 } 153 154 公衆 ロングgetExpired(){ 155 リターンが期限切れ。 156 } 157 } 158 }
します。https://blog.csdn.net/xsj_blog/article/details/83056143で転載