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


好了,下面是pom的代码

  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代码

  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的方法,还有更多的方法没有去使用,这里当一个入门的小例子吧

  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

    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. }

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

  1. Spring Boot 2 + Redis例子

    Redis是一个key-value数据库,支持存储的value类型包括string(字符串).list(链表).set(集合).zset(sorted set --有序集合)和hash(哈希类型).在 ...

  2. spring和redis的整合-超越昨天的自己系列(7)

    超越昨天的自己系列(7) 扯淡:  最近一直在慢慢多学习各个组件,自己搭建出一些想法.是一个涉猎的过程,慢慢意识到知识是可以融汇贯通,举一反三的,不过前提好像是研究的比较深,有了自己的见解.自认为学习 ...

  3. spring和redis的整合

    spring和redis的整合-超越昨天的自己系列(7) 超越昨天的自己系列(7) 扯淡:  最近一直在慢慢多学习各个组件,自己搭建出一些想法.是一个涉猎的过程,慢慢意识到知识是可以融汇贯通,举一反三 ...

  4. Spring Data Redis实现消息队列——发布/订阅模式

    一般来说,消息队列有两种场景,一种是发布者订阅者模式,一种是生产者消费者模式.利用redis这两种场景的消息队列都能够实现. 定义:生产者消费者模式:生产者生产消息放到队列里,多个消费者同时监听队列, ...

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

    关于Spring Data Spring社区的一个顶级工程,主要用于简化数据(关系型&非关系型)访问,如果我们使用Spring Data来开发程序的话,那么可以省去很多低级别的数据访问操作,如 ...

  6. spring配置redis注解缓存

    前几天在spring整合Redis的时候使用了手动的方式,也就是可以手动的向redis添加缓存与清除缓存,参考:http://www.cnblogs.com/qlqwjy/p/8562703.html ...

  7. Spring Data Redis学习

    本文是从为知笔记上复制过来的,懒得调整格式了,为知笔记版本是带格式的,内容也比这里全.点这里 为知笔记版本 Spring Data Redis 学习 Version 1.8.4.Release 前言 ...

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

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

  9. Spring Data Redis入门示例:基于Jedis及底层API (二)

    使用底层API:RedisConnectionFactory和RedisConnection可以直接操作Redis,下面是一个简单的例子: ### Maven依赖 <properties> ...

随机推荐

  1. 解决 'express' 不是内部或外部命令,也不是可运行的程序

    express-generator >npm install -g express-generator 就可以了

  2. docker-ce 搭建的 lamp 开发环境笔记

    工作目录: /home/{username}/dockers/lamp 将docker容器的apache的80 映射为本地主机的81 # sudo docker pull mattrayner/lam ...

  3. 【串线篇】浅谈BeanFactory

    BeanFactory&ApplicationContext BeanFactory: bean工厂接口,负责创建bean实例, 容器里保存的所有单例bean其实是一个map<key-- ...

  4. JavaSE---多线程---概述

    1.概述 1.1 进程: 系统进行资源分配.调度的一个独立单元: 进程的特征: 1.1.1 独立性: 系统中独立存在的实体,拥有自己独立的资源: 每个进程都拥有自己私有的地址空间,在没有经过进程本身允 ...

  5. 【leedcode】950. Reveal Cards In Increasing Order

    题目如下: In a deck of cards, every card has a unique integer.  You can order the deck in any order you ...

  6. MySQL主从同步(binlog方式)

    原文:https://blog.csdn.net/demonson/article/details/80526533

  7. objective-c: Functions and static keyword

    Functions function is a concept for C programming language, objective-c is entirely relies on C. To ...

  8. springmvc缓存 - cache

    前几篇文章已经搭建了一个基本的springmvc demo,现在我们来完善下.    相信大家写程序的时候都接触过缓存的概念,也都知道,数据量大的时候缓存对于提高效率是很显著的.而缓存一般包括前台静态 ...

  9. USB编程概念

     RE:USB编程概念 >请你指导我如何学习USB虚拟COM端口PROGRAMM,什么是我们needto有(如硬件和软件)的东西. USB是一个典型的复杂的协议栈,在协议的协议.这是很难完全实现 ...

  10. Struts1.3——使用MyEclipse集成工具开发Struts

    前面两篇通过手工写代码,手工配置struts-config.xml文件的方法来开发了一个最简单的struts项目,通过手工的方式旨在学习底层原理细节.当熟悉了以后,我们就不需要再通过纯手工的方式来开发 ...