Redis是一种nosql数据库,在开发中常用做缓存。Jedis是Redis在Java中的redis- client.在此之前,希望已经了解redis的基本使用和Maven的使用。建立Maven Project之后,在POM.xml中添加jedis和spring-data-redis的依赖如下:

<dependency>  <groupId>redis.clients</groupId>  <artifactId>jedis</artifactId>  <version>2.0.0</version>  <type>jar</type>  <scope>compile</scope>
</dependency>
<!-- spring-redis -->
<dependency>  <groupId>org.springframework.data</groupId>  <artifactId>spring-data-redis</artifactId>  <version>1.0.0.RELEASE</version>
</dependency>  

Redis连接数据库参数如下:applicationContext-redis.properties

#redis config
redis.pool.maxActive=100
redis.pool.maxIdle=20
redis.pool.maxWait=1000
redis.pool.testOnBorrow=true
redis.hostname=localhost
redis.port=6379
redis.password= 

在上下文配置中使用key-value读取方式读取properties中的值:

<!-- Jedis 连接池配置-->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">  <property name="maxActive" value="${redis.pool.maxActive}" />  <property name="maxIdle" value="${redis.pool.maxIdle}" />  <property name="maxWait" value="${redis.pool.maxWait}" />  <property name="testOnBorrow" value="${redis.pool.testOnBorrow}" />
</bean>
<!-- Jedis ConnectionFactory 数据库连接配置-->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">  <property name="hostName" value="${redis.hostname}" />  <property name="port" value="${redis.port}" />  <property name="password" value="${redis.password}" />  <property name="poolConfig" ref="jedisPoolConfig" />
</bean>
<!—- redisTemplate配置,redisTemplate是对Jedis的对redis操作的扩展,有更多的操作,封装使操作更便捷 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"                                   p:connection-factory-ref="jedisConnectionFactory" />  

上面redisTemplate已经基本配置完成。

接下来创建User类,必须实现或者间接实现Serializable接口:

Redis存储对象是使用序列化,spring-data-redis已经将序列化的功能内置,不需要我们去管,我们只需要调用api就可以使用。SerialVersionUID字段对序列化扩展有用,为了以后扩展或者缩减字段时不会造成反序列化出错。

public class User implements Serializable {  private static final long serialVersionUID = -7898194272883238670L;  public static final String OBJECT_KEY = "USER";  public User() {  }  public User(String id) {  }  public User(String id, String name) {  this.id = id;  this.name = name;  }  private String id;  private String name;  public String getId() {  return id;  }  public void setId(String id) {  this.id = id;  }  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public String toString() {  return "User [id=" + id + ", name=" + name + "]";  }  public String getKey() {  return getId();  }  public String getObjectKey() {  return OBJECT_KEY;  }
}  

创建userService类来操作redis增删查改缓存对象。

public class UserService {  RedisTemplate<String, User> redisTemplate;  public RedisTemplate<String, User> getRedisTemplate() {  return redisTemplate;  }  public void setRedisTemplate(RedisTemplate<String, User> redisTemplate) {  this.redisTemplate = redisTemplate;  }  public void put(User user) {  redisTemplate.opsForHash().put(user.getObjectKey(), user.getKey(), user);  }  public void delete(User key) {  redisTemplate.opsForHash().delete(key.getObjectKey(), key.getKey());  }  public User get(User key) {  return (User) redisTemplate.opsForHash().get(key.getObjectKey(), key.getKey());  }
}  

使用注解方式自动注入, 在UserService注解@Service(“userService”),也可以在Service里写名字,默认是第一字母小写。

@Service("userService")
public class UserService {  @Autowired  RedisTemplate<String, User> redisTemplate;  ……  ……
}  

在上下文配置文件中,添加自动扫描包的context节点, Base-package的路径要覆盖包含注解的类文件 :

<context:component-scan base-package="*" />  

在main中来简单操作一下:

public class Main {  public static void main( String[] args )  {  ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath*:/conf/applicationContext.xml"        );  UserService userService =  (UserService) applicationContext.getBean("userService");  User user1 = new User("user1ID", "User 1");  User user2 = new User("user2ID", "User 2");  System.out.println("==== getting objects from redis ====");  System.out.println("User is not in redis yet: " + userService.get(user1));  System.out.println("User is not in redis yet: " + userService.get(user2));  System.out.println("==== putting objects into redis ====");  userService.put(user1);  userService.put(user2);  System.out.println("==== getting objects from redis ====");  System.out.println("User should be in redis yet: " + userService.get(user1));  System.out.println("User should be in redis yet: " + userService.get(user2));  System.out.println("==== deleting objects from redis ====");  userService.delete(user1);  userService.delete(user2);  System.out.println("==== getting objects from redis ====");  System.out.println("User is not in redis yet: " + userService.get(user1));  System.out.println("User is not in redis yet: " + userService.get(user2));  }
}  

确保redis服务器是开启状态之后就可以运行程序。运行结果如下:

转载自:点击打开链接

Maven中Spring-Data-Redis存储对象(redisTemplate)相关推荐

  1. spring mvc Spring Data Redis RedisTemplate [转]

    http://maven.springframework.org/release/org/springframework/data/spring-data-redis/(spring-data包下载) ...

  2. Spring Data Redis 实践

    前言 Spring Data Redis是Spring Data大家族的一部分,提供了基于spring应用的简易配置与redis服务访问,它为存储与交互提供了低级(low-level)和高级的(hig ...

  3. 一文搞定 Spring Data Redis 详解及实战

    转载自  一文搞定 Spring Data Redis 详解及实战 SDR - Spring Data Redis的简称. Spring Data Redis提供了从Spring应用程序轻松配置和访问 ...

  4. Spring Data Redis存储库

    8. Redis存储库 使用Redis存储库允许在Redis哈希中无缝地转换和存储域对象,应用自定义映射策略并利用二级索引. Redis存储库至少需要Redis Server 2.8.0版. 8.1. ...

  5. Spring认证中国教育管理中心-Spring Data Redis框架教程三

    原标题:Spring认证中国教育管理中心-Spring Data Redis框架教程三 10.15.支持类 Packageorg.springframework.data.redis.support提 ...

  6. Spring Boot使用Spring Data Redis操作Redis(单机/集群)

    说明:Spring Boot简化了Spring Data Redis的引入,只要引入spring-boot-starter-data-redis之后会自动下载相应的Spring Data Redis和 ...

  7. 使用Spring Data Redis进行缓存

    在下面的示例中,我将向您展示如何使用Spring Data – Redis项目作为Spring 3.1中引入的Spring Cache Abstraction的缓存提供程序. 我对如何使用Spring ...

  8. Spring Data Redis 让 NoSQL 快如闪电(2)

    2019独角兽企业重金招聘Python工程师标准>>> 把 Redis 当作数据库的用例 现在我们来看看在服务器端 Java 企业版系统中把 Redis 当作数据库的各种用法吧.无论 ...

  9. Spring Data Redis学海拾贝

    简介: Redis redis是一款开源的Key-Value数据库,运行在内存中,由ANSI C编写.企业开发通常采用Redis来实现缓存.同类的产品还有memcache .memcached .Mo ...

  10. Spring Data Redis 多源

    完整代码:Ciiiiing/springboot_multi_redis 最近需要在同一个项目中访问多个 redis 而 spring data redis 默认是只支持一个数据源的,那就需要我们自己 ...

最新文章

  1. (基础篇)PHP字符串函数
  2. Pat甲级 1001 A+B Format
  3. html超链接打开共享文件夹,教你如何访问共享文件夹
  4. html解释json,json 解析
  5. jenkins与SonarQube集成
  6. 内存问题分析工具_valgrind之memcheck基本使用
  7. 派生类构造的时候一定要调用_分手的时候,一定要好好说再见
  8. android+显示ui布局,[Android ]UI布局 (线性布局+相对布局)
  9. H.264视频压缩标准
  10. 光环PMP一模知识点解析
  11. 怎么设置creative cloud的应用禁止自动更新
  12. negative和passive的反义词_消极的近义词和反义词
  13. 跟着Cell学作图| 11.Ingenuity Pathway Analysis(IPA)
  14. 2017,那些引发关注的新建展馆
  15. 微信小程序:获取用户手机号
  16. 【扩展】电机驱动(DRV8870)
  17. Python提取图片二维码Python
  18. 游戏开发校招面试全记录(大四篇)
  19. 微博生态圈盈利模式分析
  20. 【Linux】Linux多线程(上)

热门文章

  1. 前端学习(1452):表格案例--效果演示
  2. 前端学习(753):js没有块级作用域
  3. 前端学习(599):模拟移动设备
  4. 第七十二期:Visual Studio Online 终于公开上线了
  5. 第三十三期:使用wireshark抓包分析-抓包实用技巧
  6. stylus之方法(Functions)
  7. Vue基础之Vue列表渲染
  8. maven 修改文件名_Maven 构建配置文件
  9. Java官方操纵byte数组的方式
  10. 碎片脚本注解(后续整理)