由于項目需要簡單的理解了一些memcached的運行,現在比較流行的緩存框架是Redis,本文不介紹了。
Memcached 是一個高性能的分布式內存對象緩存系統,用于動態Web應用以減輕數據庫負載。它通過在內存中緩存數據和對象來減少讀取數據庫的次數,從而提高動態、數據庫驅動網站的速度。Memcached基于一個存儲鍵/值對的hashmap。其守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。
memcached作為高速運行的分布式緩存服務器,具有以下的特點。· 協議簡單· 基于libevent的事件處理· 內置內存存儲方式· memcached不互相通信的分布式不多說理論了,直接上干貨第一種方式不通過sPRingMyMemcachedUtil工具類測試第二種方式通過spring集成配置applicationContext.xml<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="order" value="1"/> <property name="ignoreUnresolvablePlaceholders" value="true"/> <property name="locations"> <list> <!--<value>classpath:/com/springmvc/config/memcached.properties</value>--> <value>/WEB-INF/config/memcached.properties</value> </list> </property> </bean> <!-- 客戶端:java_memcached-release_2.6.3 --> <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance" init-method="initialize" lazy-init="false" destroy-method="shutDown"> <constructor-arg> <value>memcachedPool</value> </constructor-arg> <!-- 可以設置多個memcached服務器 --> <property name="servers"> <list> <value>${memcached.server1}:${memcached.port1}</value> </list> </property> <!-- 每個服務器初始連接數 --> <property name="initConn"> <value>${memcached.initConn}</value> </property> <!-- 每個服務器最小連接數 --> <property name="minConn"> <value>${memcached.minConn}</value> </property> <!-- 每個服務器最大連接數 --> <property name="maxConn"> <value>${memcached.maxConn}</value> </property> <!-- 主線程睡眠時間 --> <property name="maintSleep"> <value>${memcached.maintSleep}</value> </property> <!-- TCP/Socket的參數,如果是true在寫數據時不緩沖,立即發送出去參數 --> <property name="nagle"> <value>${memcached.nagle}</value> </property> <!-- 連接超時/阻塞讀取數據的超時間是 --> <property name="socketTO"> <value>${memcached.socketTO}</value> </property> </bean> <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient" > <constructor-arg> <value>memcachedPool</value> </constructor-arg> </bean>配置memcached.properties文件#服務器地址 memcached.server1=127.0.0.1memcached.port1=11211#memcached.server=127.0.0.1:11211#初始化時對每個服務器建立的連接數目 memcached.initConn=20 #每個服務器建立最小的連接數 memcached.minConn=10 #每個服務器建立最大的連接數 memcached.maxConn=50 #自查線程周期進行工作,其每次休眠時間 memcached.maintSleep=3000 #Socket的參數,如果是true在寫數據時不緩沖,立即發送出去 memcached.nagle=false #Socket阻塞讀取數據的超時時間 memcached.socketTO=3000配置spring-servlet-config.xml<!-- 使用@Controllers前配置 --> <mvc:annotation-driven /> <!-- 容器加載時 自動掃描所有注解 --> <context:component-scan base-package="com.test" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" /> <context:include-filter type="annotation" expression="org.springframework.stereotype.Service" /> <context:include-filter type="annotation" expression="org.springframework.stereotype.Repository" /> <context:include-filter type="annotation" expression="org.springframework.stereotype.Component" /> </context:component-scan> <!-- 配置靜態資源 --> <mvc:resources mapping="/js/**" location="/js/" /> <mvc:resources mapping="/image/**" location="/image/" /> <mvc:resources mapping="/CSS/**" location="/css/" /> <!-- 使用jsp作為視圖 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <!-- 目標路徑返回到pages下 使用jsp作為視圖 --> <property name="prefix" value="/pages/"></property> <property name="suffix" value=".jsp"></property> </bean> <!-- 異常處理 --> <bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver"> <property name="exceptionMappings"> <props> <prop key="org.apache.shiro.authz.UnauthorizedException">error/403</prop> </props> </property> </bean>配置web.xml<!-- 引入 spring --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/applicationContext..xml</param-value> </context-param> <!-- 引入 springMVC --> <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:/spring-servlet-config.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <!-- 編碼 UTF-8 --> <filter> <filter-name>SpringMVC-Memcached-Encoding</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter> <filter-mapping> <filter-name>SpringMVC-Memcached-Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>測試類contoller@RequestMapping("/login") public ModelAndView login( @RequestParam(value = "username") String username, @RequestParam(value = "passWord") String password, Httpsession session){ ModelAndView m = new ModelAndView(); m.setViewName("index");//成功返回/pages/index.jsp Memcached.set("wasd", "12ab",new Date(1000 * 60)); Object ss = Memcached.get("wasd"); System.out.println(ss.toString()); m.addObject("returnMsg","好的!"); return m; }效果圖相關jar
新聞熱點
疑難解答