Redis安裝以及ssm整合的簡單使用

最近在學後臺,學到這了,就看看吧~~因爲剛入門,可能很多地方存在誤解或者有更優雅的實現方式,望大佬們賜教~ 

Redis也是一個小型數據庫(存儲數據量不大),但是是存在內存當中的,因此讀寫速度非常快,所以通常適用於那種高併發的處理場景需求,畢竟頻繁交互的話,直接訪問緩存的效率肯定是要高於直接去訪問數據庫的,從而也到達了減輕數據庫訪問壓力的目的。

安裝

畢竟也是個數據庫,因此其實跟安裝mysql大同小異,首先下載安裝包:下載地址

下載後無腦Next即可,安裝過程中,有複選框的都勾一下,安裝完成後,默認就自動啓動了已經,查看方式:右鍵我的電腦--->管理:

沒完!還要修改一個配置文件:redis.windows-service.conf,主要是添加一個密碼,方便後期通過可視化工具RedisDesktopManager來連接Redis,可以方便的查看Redis中已經存儲的數據,添加密碼如下:

修改完成後,需要重啓一下Redis服務,配置才能生效,切記!我在這就踩坑了~

代碼測試

上面的步驟順利完成後,就可以寫點僞代碼測試一下了:

添加依賴

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>2.1.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.8.0</version>
        </dependency>

spring.xml添加配置

    <!--redis相關-->
    <!--redis設置連接池-->
    <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
        <property name="maxIdle" value="300"/>
        <property name="maxTotal" value="600"/>
        <property name="maxWaitMillis" value="30000"/>
    </bean>
    <!--redis設置鏈接屬性-->
    <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:hostName="localhost"
          p:port="6379"
          p:password="123456"
          p:pool-config-ref="poolConfig"
          p:timeout="100000"/>

編寫Controller測試方法 

可以看到,存進去之後,又成功返了回來~

可視化工具查看

上面提到了RedisDesktopManager,安裝過程省略,直接看使用:

打開工具後,左下角點擊連接Redis,出現彈窗,填寫連接Redis所需信息

填完後,在點擊OK之前,可以點擊Test Connection測試一下是否能正常連接

能成功連接之後,點擊OK,左上角就會出現,點擊展開即可查看

token時效以及刷新

redis在存儲數據的時候,可以設置時效性,過期後會自動刪除,在攔截器中進行判斷:

public class MyInterceptor implements HandlerInterceptor {

    @Autowired
    private TokenService tokenService;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        String token = request.getHeader("token");//獲取請求頭中攜帶的token信息
        if (StringUtils.isEmpty(token)) {
            returnResponse(response, "{\"code\":401,\"message\":\"未登錄,請重新登錄\"}");
            return false;
        }
        if (!tokenService.hasToken(token)) {
            returnResponse(response, "{\"code\":401,\"message\":\"token失效,請重新登錄\"}");
            return false;
        }
        tokenService.verifyToken(token);
        return true;
    }

    /**
     * 響應token驗證失敗
     */
    public void returnResponse(HttpServletResponse response, String responseData) throws IOException {
        response.setCharacterEncoding("UTF-8");
        response.setContentType("application/json;charset=utf-8");
        response.getWriter().write(responseData);
    }
}

需要依賴支持:

        <dependency>
            <groupId>io.jsonwebtoken</groupId>
            <artifactId>jjwt</artifactId>
            <version>0.9.1</version>
        </dependency>
        <!--未依賴的話編譯時報異常:java.lang.ClassNotFoundException: javax.xml.bind.DatatypeConverter-->
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.0</version>
        </dependency>

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章