spring 结合 redis 例子 (转)

好了费话不多说了,介绍下spring 结合redis是怎么操作数据的 这里我用了maven管理,由于简单嘛,依赖下包就行了..不用单独去依赖包,成了我的习惯



好了,下面是pom的代码

[xml] view plaincopy

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>redis</groupId>
  5. <artifactId>redis</artifactId>
  6. <version>0.0.1-SNAPSHOT</version>
  7. <build>
  8. </build>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.springframework.data</groupId>
  12. <artifactId>spring-data-redis</artifactId>
  13. <version>1.0.2.RELEASE</version>
  14. </dependency>
  15. </dependencies>
  16. </project>

在pom里添加了redis spring客户端的依赖,那么所有的jar包都会帮你自动下载下来,是不是很方便啊,哈



下面是spring-context.xml代码

[xml] view plaincopy

  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:p="http://www.springframework.org/schema/p"
  4. xmlns:context="http://www.springframework.org/schema/context"
  5. xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
  7. http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
  8. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
  9. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">
  10. <!--注解说明 -->
  11. <context:annotation-config />
  12. <!-- 把标记了@Controller注解的类转换为bean -->
  13. <context:component-scan base-package="com.mkfree.**" />
  14. <!-- redis工厂 -->
  15. <bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
  16. p:host-name="192.168.9.140" p:port="6379" p:password="87980879" />
  17. <!-- redis服务封装 -->
  18. <bean id="redisService" class="com.mkfree.redis.test.RedisService">
  19. </bean>

这里配置了一个跟spring 集成的redis客户端,ip port password自己定哦,这里我在redis配置文件了定义了需求密码认证,你们先不要用吧,为了简单起见



下面是RedisService,里面包含了对redis的方法,还有更多的方法没有去使用,这里当一个入门的小例子吧

[java] view plaincopy

  1. package com.mkfree.redis.test;
  2. import java.util.Set;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.beans.factory.annotation.Qualifier;
  5. import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
  6. import redis.clients.jedis.Jedis;
  7. /**
  8. * 封装redis 缓存服务器服务接口
  9. * @author hk
  10. *
  11. * 2012-12-16 上午3:09:18
  12. */
  13. public class RedisService {
  14. /**
  15. * 通过key删除(字节)
  16. * @param key
  17. */
  18. public void del(byte [] key){
  19. this.getJedis().del(key);
  20. }
  21. /**
  22. * 通过key删除
  23. * @param key
  24. */
  25. public void del(String key){
  26. this.getJedis().del(key);
  27. }
  28. /**
  29. * 添加key value 并且设置存活时间(byte)
  30. * @param key
  31. * @param value
  32. * @param liveTime
  33. */
  34. public void set(byte [] key,byte [] value,int liveTime){
  35. this.set(key, value);
  36. this.getJedis().expire(key, liveTime);
  37. }
  38. /**
  39. * 添加key value 并且设置存活时间
  40. * @param key
  41. * @param value
  42. * @param liveTime
  43. */
  44. public void set(String key,String value,int liveTime){
  45. this.set(key, value);
  46. this.getJedis().expire(key, liveTime);
  47. }
  48. /**
  49. * 添加key value
  50. * @param key
  51. * @param value
  52. */
  53. public void set(String key,String value){
  54. this.getJedis().set(key, value);
  55. }
  56. /**添加key value (字节)(序列化)
  57. * @param key
  58. * @param value
  59. */
  60. public void set(byte [] key,byte [] value){
  61. this.getJedis().set(key, value);
  62. }
  63. /**
  64. * 获取redis value (String)
  65. * @param key
  66. * @return
  67. */
  68. public String get(String key){
  69. String value = this.getJedis().get(key);
  70. return value;
  71. }
  72. /**
  73. * 获取redis value (byte [] )(反序列化)
  74. * @param key
  75. * @return
  76. */
  77. public byte[] get(byte [] key){
  78. return this.getJedis().get(key);
  79. }
  80. /**
  81. * 通过正则匹配keys
  82. * @param pattern
  83. * @return
  84. */
  85. public Set<String> keys(String pattern){
  86. return this.getJedis().keys(pattern);
  87. }
  88. /**
  89. * 检查key是否已经存在
  90. * @param key
  91. * @return
  92. */
  93. public boolean exists(String key){
  94. return this.getJedis().exists(key);
  95. }
  96. /**
  97. * 清空redis 所有数据
  98. * @return
  99. */
  100. public String flushDB(){
  101. return this.getJedis().flushDB();
  102. }
  103. /**
  104. * 查看redis里有多少数据
  105. */
  106. public long dbSize(){
  107. return this.getJedis().dbSize();
  108. }
  109. /**
  110. * 检查是否连接成功
  111. * @return
  112. */
  113. public String ping(){
  114. return this.getJedis().ping();
  115. }
  116. /**
  117. * 获取一个jedis 客户端
  118. * @return
  119. */
  120. private Jedis getJedis(){
  121. if(jedis == null){
  122. return jedisConnectionFactory.getShardInfo().createResource();
  123. }
  124. return jedis;
  125. }
  126. private RedisService (){
  127. }
  128. //操作redis客户端
  129. private static Jedis jedis;
  130. @Autowired
  131. @Qualifier("jedisConnectionFactory")
  132. private JedisConnectionFactory jedisConnectionFactory;
  133. }

下面是测试代码TestRedis.java

[java] view plaincopy

    1. package com.mkfree.redis.test;
    2. import java.util.Set;
    3. import org.springframework.context.ApplicationContext;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. /**
    6. * redis spring 简单例子
    7. * @author hk
    8. *
    9. * 2012-12-22 上午10:40:15
    10. */
    11. public class TestRedis {
    12. public static void main(String[] args) throws InterruptedException {
    13. ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
    14. //这里已经配置好,属于一个redis的服务接口
    15. RedisService redisService = (RedisService) app.getBean("redisService");
    16. String ping = redisService.ping();//测试是否连接成功,连接成功输出PONG
    17. System.out.println(ping);
    18. //首先,我们看下redis服务里是否有数据
    19. long dbSizeStart = redisService.dbSize();
    20. System.out.println(dbSizeStart);
    21. redisService.set("username", "oyhk");//设值(查看了源代码,默认存活时间30分钟)
    22. String username = redisService.get("username");//取值
    23. System.out.println(username);
    24. redisService.set("username1", "oyhk1", 1);//设值,并且设置数据的存活时间(这里以秒为单位)
    25. String username1 = redisService.get("username1");
    26. System.out.println(username1);
    27. Thread.sleep(2000);//我睡眠一会,再去取,这个时间超过了,他的存活时间
    28. String liveUsername1 = redisService.get("username1");
    29. System.out.println(liveUsername1);//输出null
    30. //是否存在
    31. boolean exist = redisService.exists("username");
    32. System.out.println(exist);
    33. //查看keys
    34. Set<String> keys = redisService.keys("*");//这里查看所有的keys
    35. System.out.println(keys);//只有username username1(已经清空了)
    36. //删除
    37. redisService.set("username2", "oyhk2");
    38. String username2 = redisService.get("username2");
    39. System.out.println(username2);
    40. redisService.del("username2");
    41. String username2_2 = redisService.get("username2");
    42. System.out.println(username2_2);//如果为null,那么就是删除数据了
    43. //dbsize
    44. long dbSizeEnd = redisService.dbSize();
    45. System.out.println(dbSizeEnd);
    46. //清空reids所有数据
    47. //redisService.flushDB();
    48. }
    49. }
时间: 2024-10-12 08:04:46

spring 结合 redis 例子 (转)的相关文章

Spring Data JPA例子[基于Spring Boot、Mysql]

关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如编写数据查询语句.DAO类等,我们仅需要编写一些抽象接口并定义相关操作即可,Spring会在运行期间的时候创建代理实例来实现我们接口中定义的操作. 关于Spring Data子项目 Spring Data拥有很多子项目,除了Spring Data Jpa外,还有如下子项目. Spring Data Comm

Spring Data Redis学习

本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 1.新功能 1.1.Spring Data Redis 1.8 新特性 1.2.Spring Data Redis 1.7 新特性 1.3.Spring Data Redis 1.6 新特性 1.4.Spring Data Redis 1.5 新特性 介绍 2.为什么选择Spring Data Redis? 3.要

使用maven简单搭建Spring mvc + redis缓存

注:此文参考并整合了网上的文章 <spring缓存机制>:http://blog.csdn.net/sidongxue2/article/details/30516141 <配置 Spring4.0 注解Cache+Redis缓存>:http://blog.csdn.net/ouyhong123/article/details/52162951 <spring整合redis缓存,以注解(@Cacheable.@CachePut.@CacheEvict)形式使用>: ht

spring 结合 redis 正确从jedisConnectionFactory获取Jedis实例

网上流传着这样一种spring结合redis的例子,从jedisConnectionFactory获取Jedis实例.其他部分忽略只看RedisService,这样获取jedis实例存在很多问题. 这样每次创新新的连接而没有关闭连接.在有大量操作的时候很快就会将redis的连接都占满.报redis连接错误. package com.mkfree.redis.test; import java.util.Set; import org.springframework.beans.factory.a

spring boot redis 缓存(cache)集成

Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 spring boot 连接Mysql spring boot配置druid连接池连接mysql spring boot集成mybatis(1) spring boot集成mybatis(2) – 使用pagehelper实现分页 spring boot集成mybatis(3) – mybatis ge

spring boot + redis 实现session共享

这次带来的是spring boot + redis 实现session共享的教程. 在spring boot的文档中,告诉我们添加@EnableRedisHttpSession来开启spring session支持,配置如下: @Configuration @EnableRedisHttpSession public class RedisSessionConfig { } 而@EnableRedisHttpSession这个注解是由spring-session-data-redis提供的,所以

Spring整合Redis做数据缓存(Windows环境)

当我们一个项目的数据量很大的时候,就需要做一些缓存机制来减轻数据库的压力,提升应用程序的性能,对于java项目来说,最常用的缓存组件有Redis.Ehcache和Memcached. Ehcache是用java开发的缓存组件,和java结合良好,直接在jvm虚拟机中运行,不需要额外安装什么东西,效率也很高:但是由于和java结合的太紧密了,导致缓存共享麻烦,分布式集群应用不方便,所以比较适合单个部署的应用. Redis需要额外单独安装,是通过socket访问到缓存服务,效率比Ehcache低,但

spring与redis集成之aop整合方案

java使用redis缓存可以使用jedis框架,jedis操作简单,没有什么复杂的东西需要学习,网上资料很多,随便看看就会了. 将spring与redis缓存集成,其实也是使用jedis框架,只不过spring对它进行了一层封装,并将这层封装库命名为spring-data-redis. 下面将要使用spring-data-redis与jedis的jar包,并通过spring的aop功能,将redis缓存无缝无侵入的整合进来. 1.先下载好依赖包 [html] view plaincopy <d

springMVC 缓存(入门 spring+mybaties+redis一)

使用redis之前需要咋电脑上安装redis: 使用spring+mybaties+redis的本质是扩展类   org.apache.ibatis.cache.Cache:在我们自己扩展的Cache里面使用redis的api: 一:需要引入的依赖: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId>