`
381895649
  • 浏览: 230315 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

spring 结合 Redis 例子,简单入门例子

    博客分类:
  • java
 
阅读更多

 

oyhk 学习笔记

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


好了,下面是pom的代码

pom.xml

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>redis</groupId>
    <artifactId>redis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <build>
    </build>
    <dependencies>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-redis</artifactId>
            <version>1.0.2.RELEASE</version>
        </dependency>
    </dependencies>
</project>

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

 


下面是spring-context.xml代码

 

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util" xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.1.xsd
http://www.springframework.org/schema/beans  http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd">

<!--注解说明 -->
<context:annotation-config />
<!-- 把标记了@Controller注解的类转换为bean -->
<context:component-scan base-package="com.mkfree.**" />
<!-- redis工厂 -->
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
    p:host-name="192.168.9.140" p:port="6379" p:password="87980879" />
<!-- redis服务封装 -->
<bean id="redisService" class="com.mkfree.redis.test.RedisService">
</bean>

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

 


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

 

package com.mkfree.redis.test;

import java.util.Set;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;

import redis.clients.jedis.Jedis;

/**
 * 封装redis 缓存服务器服务接口
 * @author hk
 *
 * 2012-12-16 上午3:09:18
 */
public class RedisService {

    /**
     * 通过key删除(字节)
     * @param key
     */
    public void del(byte [] key){
        this.getJedis().del(key);
    }
    /**
     * 通过key删除
     * @param key
     */
    public void del(String key){
        this.getJedis().del(key);
    }

    /**
     * 添加key value 并且设置存活时间(byte)
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(byte [] key,byte [] value,int liveTime){
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    }
    /**
     * 添加key value 并且设置存活时间
     * @param key
     * @param value
     * @param liveTime
     */
    public void set(String key,String value,int liveTime){
        this.set(key, value);
        this.getJedis().expire(key, liveTime);
    }
    /**
     * 添加key value
     * @param key
     * @param value
     */
    public void set(String key,String value){
        this.getJedis().set(key, value);
    }
    /**添加key value (字节)(序列化)
     * @param key
     * @param value
     */
    public void set(byte [] key,byte [] value){
        this.getJedis().set(key, value);
    }
    /**
     * 获取redis value (String)
     * @param key
     * @return
     */
    public String get(String key){
        String value = this.getJedis().get(key);
        return value;
    }
    /**
     * 获取redis value (byte [] )(反序列化)
     * @param key
     * @return
     */
    public byte[] get(byte [] key){
        return this.getJedis().get(key);
    }

    /**
     * 通过正则匹配keys
     * @param pattern
     * @return
     */
    public Set<String> keys(String pattern){
        return this.getJedis().keys(pattern);
    }

    /**
     * 检查key是否已经存在
     * @param key
     * @return
     */
    public boolean exists(String key){
        return this.getJedis().exists(key);
    }
    /**
     * 清空redis 所有数据
     * @return
     */
    public String flushDB(){
        return this.getJedis().flushDB();
    }
    /**
     * 查看redis里有多少数据
     */
    public long dbSize(){
        return this.getJedis().dbSize();
    }
    /**
     * 检查是否连接成功
     * @return
     */
    public String ping(){
        return this.getJedis().ping();
    }
    /**
     * 获取一个jedis 客户端
     * @return
     */
    private Jedis getJedis(){
        if(jedis == null){
            return jedisConnectionFactory.getShardInfo().createResource();
        }
        return jedis;
    }
    private RedisService (){

    }
    //操作redis客户端
    private static Jedis jedis;
    @Autowired
    @Qualifier("jedisConnectionFactory")
    private JedisConnectionFactory jedisConnectionFactory;
}

 

 下面是测试代码TestRedis.java

 

package com.mkfree.redis.test;

import java.util.Set;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * redis spring 简单例子
 * @author hk
 *
 * 2012-12-22 上午10:40:15
 */
public class TestRedis {

    public static void main(String[] args) throws InterruptedException {
        ApplicationContext app = new ClassPathXmlApplicationContext("classpath:spring-context.xml");
        //这里已经配置好,属于一个redis的服务接口
        RedisService redisService = (RedisService) app.getBean("redisService");

        String ping = redisService.ping();//测试是否连接成功,连接成功输出PONG
        System.out.println(ping);

        //首先,我们看下redis服务里是否有数据
        long dbSizeStart = redisService.dbSize();
        System.out.println(dbSizeStart);

        redisService.set("username", "oyhk");//设值(查看了源代码,默认存活时间30分钟)
        String username = redisService.get("username");//取值 
        System.out.println(username);
        redisService.set("username1", "oyhk1", 1);//设值,并且设置数据的存活时间(这里以秒为单位)
        String username1 = redisService.get("username1");
        System.out.println(username1);
        Thread.sleep(2000);//我睡眠一会,再去取,这个时间超过了,他的存活时间
        String liveUsername1 = redisService.get("username1");
        System.out.println(liveUsername1);//输出null

        //是否存在
        boolean exist = redisService.exists("username");
        System.out.println(exist);

        //查看keys
        Set<String> keys = redisService.keys("*");//这里查看所有的keys
        System.out.println(keys);//只有username username1(已经清空了)

        //删除
        redisService.set("username2", "oyhk2");
        String username2 = redisService.get("username2");
        System.out.println(username2);
        redisService.del("username2");
        String username2_2 = redisService.get("username2");
        System.out.println(username2_2);//如果为null,那么就是删除数据了

        //dbsize
        long dbSizeEnd = redisService.dbSize();
        System.out.println(dbSizeEnd);

        //清空reids所有数据
        //redisService.flushDB();
    }
}

 好了入门例子就先这么多了...如果有什么疑问,可以加我QQ 1109349806 联系我,交流学习方法

 

项目源代码下载: http://blog.mkfree.com/posts/12

 

1
3
分享到:
评论
1 楼 ttdeye 2015-01-20  
private Jedis getJedis(){
if(jedis == null){
return jedisConnectionFactory.getShardInfo().createResource();
}
return jedis;
}
脱离了连接池的管理,这样写很危险,会建立很多连接,而没有关闭,大并发时会堆满redis的连接。

相关推荐

    spring与Redis的入门Demo

    本教程将引导你通过一个入门级的 Demo,了解如何在 Spring 框架中配置并使用 Redis。 首先,让我们了解 Spring 和 Redis 的基本概念: **Spring** 是一个开源的 Java 应用程序框架,它提供了丰富的功能,包括依赖...

    Spring boot redis demo.rar

    本教程将通过一个名为 "Spring boot redis demo" 的入门级项目,介绍如何在Spring Boot中集成并使用Redis,同时解决可能出现的乱码问题。 首先,我们需要在Spring Boot项目中添加Redis的相关依赖。在`pom.xml`或`...

    springboot_springcache_redis入门实例

    SpringBoot、SpringCache和Redis是Java开发中常用的三大技术组件,它们在构建高效、可扩展的应用程序中扮演着重要角色。让我们深入探讨一下这三个技术及其整合使用的入门实例。 SpringBoot是由Pivotal团队开发的...

    idea下springboot整合redis例子

    这个例子简单易懂,适合初学者作为入门示例。你可以通过运行`CacheController`中的接口进行测试,验证Redis的存取功能是否正常工作。 这个压缩包中的"demo"可能是包含整个项目源代码的文件夹,你可以下载后在Idea中...

    Redis整合SpringCache实例

    本示例主要探讨如何将开源的内存数据结构存储系统Redis与Spring Cache框架结合,实现高效的分布式缓存解决方案。Redis以其高性能、丰富的数据结构以及良好的社区支持,成为许多开发者首选的缓存技术。而Spring Cache...

    redis-examples:Redis的例子

    该应用程序展示了通过Spriong Boot使用spring-data-redis的简单方法。 如果您没有任何IDE,则可以使用以下命令运行它: $ mvn spring-boot:run 注意:如果要使用其他host:port ,可以在src / main / resources /...

    springboot-mybatis-redis.rar

    通过这个项目,你可以看到如何将数据库操作与Redis缓存相结合,实现数据的高效读写。项目中的例子展示了如何定义Mapper接口,编写对应的XML文件,以及如何在服务中使用RedisTemplate进行缓存操作。 总结,...

    Java学习例子,最佳实践.zip

    nacos-spring-boot-example Nacos + Spring Boot 简单入门 nacos-spring-cloud-example Nacos + Spring Cloud 简单入门 sentinel sentinel-spring-cloud-example sentinel 简单入门 sentinel-cluster-example ...

    SL会员商城项目(带数据库)

    基本功能齐全,关于spring redis框架的使用,网上的例子很多很多。但是在自己最近一段时间的使用中,发现这些教程都是入门教程,包括很多的使用方法,与spring redis丰富的api大相径庭,真是浪费了这么优秀的一个...

    spring-boot示例项目

    该项目包含helloworld(快速入门)、web(ssh项目快速搭建)、aop(切面编程)、data-redis(redis缓存)、quartz(集群任务实现)、shiro(权限管理)、oauth2(四种认证模式)、shign(接口参数防篡改重放)、encoder(用户...

    25、SpringBoot入门及原理.pdf

    它不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。 在使用SpringBoot时,需要了解的基本概念包括: * 什么是SpringBoot * SpringBoot的主要特点和优点 * 如何使用...

    spring-boot-examples-master.zip_gas4w6_springboot-example

    Spring Boot是Java领域中一款极为流行的框架,它通过简化配置、自动配置和一站式的解决方案,使得开发基于Spring的应用变得简单高效。本压缩包"spring-boot-examples-master.zip_gas4w6_springboot-example"正是一个...

    java-best-practice:Java学习例子,最佳实践

    Nacos + Spring Boot 简单入门 Nacos + Spring Cloud 简单入门 sentinel sentinel 简单入门 Sentinel 配置动态规则数据源(集群模式):Nacos 配置中心(zk、apollo同理) spring-cloud-gateway gateway 简单...

    Spring Boot 视频

    1. **Spring Boot入门**:介绍Spring Boot的核心理念,如何快速搭建项目,以及为什么选择Spring Boot作为开发框架。 2. **起步驱动配置**:解释Spring Boot如何通过 starter 包实现自动化配置,减少XML配置。 3. *...

    elastic-job例子

    7. **集成友好**:Elastic-Job可以无缝集成到Spring Boot、Spring Cloud等微服务框架中,使得任务调度成为微服务架构的一部分。 8. **云原生支持**:Elastic-Job-Cloud利用Mesos的资源调度能力,实现了更加智能的...

    springbootexamples:SpringBoot系列教程:本专栏基于Springboot2.0,配套自己写的代码示例,内容设计基本的配置用法,网站,数据库,Redis,也涉及到企业级开发的消息级别,dubbo,搜索引擎等方面,并有原始码的简单分析,适合作为入门教程

    springboot的例子 对应于,示例代码下载,代码暂时托管于GitHub,在github上clone到本地既可, ,本博客不定时更新 Spring框架:作为JavaEE框架领域的一个重要的开源框架,在企业应用开发中有着很重要的作用,同时...

    springboot_笔记

    【Spring Boot 入门笔记】 在当今的软件开发领域,Spring Boot 已经成为Java企业级应用开发的首选框架,其简洁的配置和快速启动的特点深受开发者喜爱。本笔记主要针对Spring Boot的基础知识进行讲解,旨在帮助初学...

    nosql 入门教程

    第一印象——两个简单的例子 17 2.1.1 简单的位置偏好数据集 17 2.1.2 存储汽车品牌和型号数据 22 2.2 使用多种语言 30 2.2.1 MongoDB驱动 30 2.2.2 初识Thrift 33 2.3 小结 34 第3章 NoSQL接口与交互 36 ...

Global site tag (gtag.js) - Google Analytics