当前位置: 移动技术网 > IT编程>数据库>MongoDB > redis缓存

redis缓存

2019年11月21日  | 移动技术网IT编程  | 我要评论

分布式项目的常见问题:对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。

redis是一款开源的key-value数据库,运行在内存中,由ansic编写。企业开发通常采用redis来实现缓存。同类的产品有memcache、mongodb等

jedis是redis官方推出的一卷面向java的客户端,提供了很多接口供java语言调用。可以在redis官网下载,当然还有一些开源爱好者提供的客户端,如jredis、srp等等,推荐使用jedis

springdataredis是spring大家族的一部分,提供了在spring应用中通过简单的配置访问redis服务,对redis底层开发包

(jedis,  jredis, and rjc)进行了高度封装,redistemplate提供了redis各种操作、异常处理及序列化,支持发布订阅,并对spring 3.1 cache进行了实现。

spring-data-redis针对jedis提供了如下功能:
1.连接池自动管理,提供了一个高度封装的“redistemplate”
2.针对jedis客户端中大量api进行了归类封装,将同一类型操作封装为operation接口
valueoperations:简单k-v操作
setoperations:set类型数据操作
zsetoperations:zset类型数据操作
hashoperations:针对map类型的数据操作
listoperations:针对list类型的数据操作

spring data redis入门小demo:

1. 创建maven工程

2. 引入spring、redis依赖

<!--spring依赖-->
    <dependencies>
        <dependency>
            <groupid>junit</groupid>
            <artifactid>junit</artifactid>
            <version>4.9</version>
        </dependency>
        <dependency>
            <groupid>org.springframework</groupid>
            <artifactid>spring-context</artifactid>
            <version>4.2.4.release</version>
        </dependency>
        <dependency>
            <groupid>org.springframework</groupid>
            <artifactid>spring-beans</artifactid>
            <version>4.2.4.release</version>
        </dependency>
        <dependency>
            <groupid>org.springframework</groupid>
            <artifactid>spring-context-support</artifactid>
            <version>4.2.4.release</version>
        </dependency>
        <dependency>
            <groupid>org.springframework</groupid>
            <artifactid>spring-test</artifactid>
            <version>4.2.4.release</version>
        </dependency>
        <!--springdataredis依赖-->
        <dependency>
            <groupid>redis.clients</groupid>
            <artifactid>jedis</artifactid>
            <version>2.8.1</version>
        </dependency>
        <dependency>
            <groupid>org.springframework.data</groupid>
            <artifactid>spring-data-redis</artifactid>
            <version>1.7.2.release</version>
        </dependency>
    </dependencies>

3. 在src/main/resources下创建properties文件夹,建立redis-config.properties

redis.host=127.0.0.1 
redis.port=6379 
redis.pass=     
redis.database=0 
redis.maxidle=300 
redis.maxwait=3000 
redis.testonborrow=true 

maxidle :最大空闲数

maxwaitmillis:连接时的最大等待毫秒数

testonborrow:在提取一个jedis实例时,是否提前进行验证操作;如果为true,则得到的jedis实例均是可用的

4. 在src/main/resources下创建spring文件夹 ,创建applicationcontext-redis.xml

 

<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:p="http://www.springframework.org/schema/p"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemalocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:property-placeholder location="classpath*:*.properties" />
    <!-- redis 相关配置 -->
    <bean id="poolconfig" class="redis.clients.jedis.jedispoolconfig">
        <property name="maxidle" value="${redis.maxidle}" />
        <property name="maxwaitmillis" value="${redis.maxwait}" />
        <property name="testonborrow" value="${redis.testonborrow}" />
    </bean>
    <bean id="jedisconnectionfactory" class="org.springframework.data.redis.connection.jedis.jedisconnectionfactory"
          p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolconfig"/>

    <bean id="redistemplate" class="org.springframework.data.redis.core.redistemplate">
        <property name="connectionfactory" ref="jedisconnectionfactory" />
    </bean>
</beans>

 

注意:

在数据发生变化时,需要将缓存数据清空,这样再次查询时才能获取最新的数据

 

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网