Spring-Data-Redis之功能讲解

来源:互联网 发布:贵族精神 知乎 编辑:程序博客网 时间:2024/06/08 11:55

        最近项目要用Spring集成Redis,发现好多人都在用Spring-data-redis,于是也在官网上学习了一下。国内的一些博客配置也很详细,但是各有千秋,还是参照官网的感觉简单一点,下面是官网地址:http://projects.spring.io/spring-data-redis/。一开始的版本是不支持Redis Cluster的,不过在1.7.x版本以上就开始可以支持集群了。


Spring Data Redis


        Spring Data Redis是Spring Data大家族的一部分,它提供了通过简单的配置就可以使Spring应用程序操作Redis。也提供了和仓库交互的低级和高级的抽象,以便用户不考虑基础设备的影响。


功能


        1、连接包作为多个Redis驱动程序/连接器的低级抽象(Jedis和Lettuce,不支持JRedis和SRP)

        2、对于驱动异常,会转化为Spring的数据访问异常层次结构

        3、RedisTemplate给多种Redis操作、异常转换和序列化方式提供了高级抽象

        4、支持Pubsub(比如作为消息驱动的POJO对象的消息监听容器)

        5、支持Redis Sentinel和Redis Cluster

        6、提供了JDK、String、JSON和Spring Object/XML的序列化方式

        7、Redis实现了JDK集合

        8、原子计数器支持类

        9、排序和管道功能

        10、支持SORT,SORT/GET模式返回的批量值

        11、Redis实现了Spring3.1缓存抽象

        12、实现Repository接口,包括使用@EnableRedisRepositories支持自定义查找器方法

        13、CDI支持存储库


快速开始


        推荐开始在项目中使用spring-data-redis的方式是用依赖管理系统—下面的代码片段可以复制粘贴进您的构建中。如果需要帮助,请看我们的利用Maven和Gradle构建的开始指南。

<dependencies>    <dependency>        <groupId>org.springframework.data</groupId>        <artifactId>spring-data-redis</artifactId>        <version>1.8.3.RELEASE</version>    </dependency></dependencies>


配置RedisTemplate


<bean id="jedisConnFactory"     class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"     p:use-pool="true"/><!-- redis template definition --><bean id="redisTemplate"     class="org.springframework.data.redis.core.RedisTemplate"     p:connection-factory-ref="jedisConnFactory"/>


注入并使用RedisTemplate或它的任何操作实例


public class Example {    // inject the actual template    @Autowired    private RedisTemplate<String, String> template;    // inject the template as ListOperations    // can also inject as Value, Set, ZSet, and HashOperations    @Resource(name="redisTemplate")    private ListOperations<String, String> listOps;    public void addLink(String userId, URL url) {        listOps.leftPush(userId, url.toExternalForm());        // or use template directly        redisTemplate.boundListOps(userId).leftPush(url.toExternalForm());    }}

0 0