请选择 进入手机版 | 继续访问电脑版

Redis中国用户组(CRUG)论坛

 找回密码
 立即注册

扫一扫,访问微社区

搜索
热搜: 活动 交友 discuz
查看: 5208|回复: 2

spring-data-redis整合

[复制链接]

该用户从未签到

1

主题

3

帖子

38

积分

版主

Rank: 7Rank: 7Rank: 7

积分
38
发表于 2016-7-22 10:48:09 | 显示全部楼层 |阅读模式
本帖最后由 lvchaohua 于 2016-7-22 10:47 编辑

前些天一直看到论坛有人问关于spring-data-redis整合的事情,今天研究了一下,发出来大家一起学习,发现有问题的及时指正。

版本信息:本人比较喜欢新的东西 所以版本用的都是最新的 jdk-1.8 redis-3.2 jedis-2.8 spring-data-redis-1.7.2

废话不多说,直接上代码

首先是spring配置文件
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3.         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
  4.         xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"
  5.         xsi:schemaLocation="http://www.springframework.org/schema/beans
  6.         http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  7.         http://www.springframework.org/schema/task
  8.         http://www.springframework.org/schema/task/spring-task-3.0.xsd
  9.         http://www.springframework.org/schema/context
  10.         http://www.springframework.org/schema/context/spring-context-3.0.xsd
  11.         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

  12.         <!-- 加载properties文件 -->
  13.         <bean
  14.                 class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  15.                 <property name="locations">
  16.                         <list>
  17.                                 <value>classpath*:conf/redis.properties</value>
  18.                         </list>
  19.                 </property>
  20.         </bean>

  21.         <!-- redis配置 -->
  22.         <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig">
  23.                 <property name="maxIdle" value="${redis.maxIdle}" />
  24.                 <property name="maxTotal" value="${redis.maxTotal}" />
  25.                 <property name="maxWaitMillis" value="${redis.maxWaitMillis}" />
  26.         </bean>

  27.         <bean id="connectionFactory"
  28.                 class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
  29.                 destroy-method="destroy">
  30.                 <property name="hostName" value="${redis.test.host}" />
  31.                 <property name="port" value="${redis.test.port}" />
  32.                 <property name="timeout" value="${redis.timeout}" />
  33.                 <property name="usePool" value="true" />
  34.                 <property name="poolConfig" ref="poolConfig" />
  35.         </bean>

  36. <!-- redis配置 -->
复制代码


redis.properties(放在工程的src目录下的conf文件夹下)  spring引用的是测试环境的值
  1. ###################正式坏境###############
  2. redis.host=
  3. redis.port=
  4. redis.auth=
  5. ###################测试坏境###############
  6. redis.test.host=localhost
  7. redis.test.port=6379
  8. redis.test.auth=
  9. ###################其他属性###############
  10. redis.maxTotal=1000
  11. redis.maxIdle=1000
  12. redis.maxWaitMillis=10000
  13. redis.timeout=10000
复制代码




然后是测试的main方法
  1. public static void main(String[] args) {
  2.                 ClassPathXmlApplicationContext cpx = new ClassPathXmlApplicationContext("/spring/applicationContext.xml");
  3.                 @SuppressWarnings("unchecked")
  4.                 RedisTemplate<Object, Object> redisTemplate = cpx.getBean("redisTemplate", RedisTemplate.class);
  5.                 // 存取普通字符串
  6.                 String arg0 = "ccc";
  7.                 String arg1 = "nnn";
  8.                 redisTemplate.opsForValue().set(arg0, arg1);
  9.                 System.out.println(redisTemplate.opsForValue().get(arg0));
  10.                 // 存取map或者java bean  (bean自己测试即可 和map一样   value是object 随便传值)
  11.                 String key = "userMap";
  12.                 Map<String, Object> map = new HashMap<>();
  13.                 map.put("id", 10010);
  14.                 map.put("name", "zahngsan");
  15.                 map.put("age", 19);
  16.                 redisTemplate.opsForValue().set(key, map);
  17.                 System.out.println(redisTemplate.opsForValue().get(key));
  18.                 // (以上只是简单的纯set(string,string)方式   存map或者java bean也是采用序列化之后存入)
  19.                 // 除以上操作之外 还提供几种jedis原生的hash list set的操作   (具体操作自己尝试)
  20.                 redisTemplate.opsForHash();
  21.                 redisTemplate.opsForList();
  22.                 redisTemplate.opsForSet();
  23.                 redisTemplate.opsForZSet();
  24.                 redisTemplate.opsForCluster(); // redis Cluster集群时使用
  25.                 redisTemplate.opsForHyperLogLog(); // redis存大数据  会调用压缩算法
  26.                 cpx.close();
  27.         }
复制代码


main方法运行结果:
nnn
{name=zahngsan, id=10010, age=19}


redis存入的数据结果和工程结构见附件(map是spring使用jackson序列化之后的结果)

redis存入数据结果

redis存入数据结果

工程结构

工程结构

所需jar包

所需jar包
  • TA的每日心情
    开心
    2016-9-7 09:37
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    23

    主题

    35

    帖子

    258

    积分

    中级会员

    Rank: 3Rank: 3

    积分
    258
    发表于 2016-7-25 19:12:16 | 显示全部楼层
    谢谢分享,请问有完整版的参考项目可以下载吗
  • TA的每日心情
    慵懒
    2016-7-28 13:14
  • 签到天数: 3 天

    [LV.2]偶尔看看I

    0

    主题

    5

    帖子

    75

    积分

    注册会员

    Rank: 2

    积分
    75
    发表于 2016-7-27 16:17:36 | 显示全部楼层
    感谢楼主分享~
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|Redis中国用户组 ( 京ICP备15003959号

    GMT+8, 2020-8-4 18:23 , Processed in 0.098395 second(s), 28 queries .

    Powered by Discuz! X3.2

    © 2001-2013 Comsenz Inc.

    快速回复 返回顶部 返回列表