為什麼要做乙個訪問計數?之前的個人部落格用得是卜運算元做站點訪問計數,用起來挺好,但出現較多次的響應很慢,再其次就是個人部落格實在是訪問太少,資料不好看?...
前面一篇博文簡單介紹了spring中的redistemplate的配置與使用,那麼這篇算是乙個簡單的應用case了,主要基於redis的計數器來實現統計
乙個簡單的訪問計數器,主要利用redis的hash結構,對應的儲存結構如下:
主要就是利用redis的hash結構,然後實現資料統計,並沒有太多的難度,spring環境下搭建redis環境可以參考:
針對幾個常用的做了簡單的封裝,直接使用redistemplate的excute方法進行的操作,當然也是可以使用template.opsforvalue()
等便捷方式,這裡採用json方式進行物件的序列化和反序列化
public
class
quickredisclient
public
static
void
nullcheck
(object... args)}}
public
static
byte tobytes(string key)
public
static
byte tobytes(listkeys)
return bytes;
}public
static string getstr
(string key)
); }
public
static
void
putstr
(string key, string value)
); }
public
static long incr
(string key, long add)
); }
public
static long hincr
(string key, string field, long add)
); }
public
static
t hget
(string key, string field, classclz)
return json.parseobject(records, clz);
});}
public
static
maphmget
(string key, listfields, classclz)
mapresult = new hashmap<>();
for (int i = 0; i < fields.size(); i++)
result.put(fields.get(i), json.parseobject(list.get(i), clz));
}return result;
}}複製**
對應的配置類
package com.git.hui.story.cache.redis;
import com.git.hui.story.cache.redis.serializer.defaultstrserializer;
import org.springframework.cache.cachemanager;
import org.springframework.context.annotation.bean;
import org.springframework.context.annotation.configuration;
import org.springframework.context.annotation.propertysource;
import org.springframework.core.env.environment;
import org.springframework.data.redis.cache.rediscachemanager;
import org.springframework.data.redis.connection.redisconnectionfactory;
import org.springframework.data.redis.connection.redispassword;
import org.springframework.data.redis.connection.lettuce.lettuceconnectionfactory;
import org.springframework.data.redis.core.redistemplate;
/** * created by yihui in 18:45 18/6/11.
*/@configuration
public
class
redisconf
@bean
public cachemanager cachemanager
() @bean
public redistemplateredistemplate
(redisconnectionfactory redisconnectionfactory)
@bean
public redisconnectionfactory redisconnectionfactory()}
複製**
首先是定義請求引數:
@data
public
class
webcountreqdo
implements
serializable
複製**
其次是實現controller介面,稍稍注意下,根據path進行計數的邏輯:
@slf4j
@restcontroller
public
class
webcountcontroller
string referer = reqinfocontext.getreqinfo().getreferer();
if (stringutils.isblank(referer))
if (stringutils.isblank(referer))
}private countdto doupdatecnt
uri uri = new uri(referer);
string host = uri.gethost();
string path = uri.getpath();
return
new countdto(count, total);
} catch (exception e) , e: {}", referer, e);
return
new countdto(1l, 1l);}}
}複製**
針對這個簡單的redis計數,目前在個人的mweb和zweb兩個頁面已經接入,在頁尾處可以看到對應的計數,每次重新整理計數會+1
盡信書則不如,已上內容,純屬一家之言,因個人能力有限,難免有疏漏和錯誤之處,如發現bug或者有更好的建議,歡迎批評指正,不吝感激
Spring 借助Thymeleaf實現表單繫結
只要目標專一而不三心二意,持之以恆而不半途而廢,就一定能夠實現我們美好的理想。使用thymeleaf將乙個表單繫結到th object指定的物件上。html xmlns xmlns th head title register title head body form method post th ...
Redis之Spring常用註解整理
redis 是乙個key value 的儲存系統,value可以儲存string,list,map等各種型別的資料。多用於快取每次都要查詢的固定資料,降低對資料庫的訪問量,調高 效能。下面主要介紹spring的三個關於redis的註解,cacheable,cacheevict,cacheput。ca...
Apache mina 與Spring整合設計
其實很簡單,看了網上很多例子,但是發現還是apache自己寫的比較好,於是就抄下來了。先說配置檔案,color red 注意這裡不能使用延遲載入和 byname 的方式找bean color 再然後我們只需要實現myprotocolhandler就可以了,只在接收資料加了處理,資料傳輸用的是byte...