欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis缓存

程序员文章站 2022-11-06 23:30:21
分布式项目的常见问题:对于首页每天有大量的人访问,对数据库造成很大的访问压力,甚至是瘫痪。那如何解决呢?我们通常的做法有两种:一种是数据缓存、一种是网页静态化。 redis是一款开源的Key-Value数据库,运行在内存中,由ANSIC编写。企业开发通常采用redis来实现缓存。同类的产品有Memc ......

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

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>

 

注意:

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