`
truelove12358
  • 浏览: 77566 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

redis实战(java项目应用)

 
阅读更多


首先,简单介绍下Redis,redis是一个key-value存储系统,并提供多种语言的API。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。更详细的介绍可以参照官网(点击打开链接),本文主要介绍redis在工程项目中的具体应用(Redis的Java客户端jedis的使用,贴出jedis源码地址:点击打开链接)  下面是具体的步骤:  


1.下载jar包,本文使用的是jedis-2.5.2.jar,下载地址:http://grepcode.com/snapshot/repo1.maven.org/maven2/redis.clients/jedis/2.5.2现在很多项目使用maven作为项目依赖管理工具,maven只需在pom.xml文件中添加以下依赖即可: redis.clients jedis 2.5.2   


2.下面即是配置类了,看代码:[java] view plain copy

package com.netease.lwt;  
  
import org.springframework.context.annotation.Bean;  
import org.springframework.context.annotation.ComponentScan;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.data.redis.connection.RedisConnectionFactory;  
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;  
import org.springframework.data.redis.core.StringRedisTemplate;  
  
import redis.clients.jedis.JedisPoolConfig;  
  
@Configuration  
@ComponentScan(basePackages="com.netease.lwt.dao")  
public class RedisConfiguration {  
      
    public static final String HOST = "e36d254038ee4529.m.cnhza.kvstore.aliyuncs.com";  
    public static final Integer PORT = 6379;  
    public static final String PASSWORD = "Laowantong2015";  
  
  
    @Bean  
    public RedisConnectionFactory jedisConnectionFactory(){  
       JedisPoolConfig poolConfig = new JedisPoolConfig();    
       poolConfig.setMaxIdle(8);  
       poolConfig.setMinIdle(0);  
       poolConfig.setTestOnBorrow(true);  
       poolConfig.setTestOnReturn(true);  
       poolConfig.setTestWhileIdle(true);  
       JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(poolConfig);  
       jedisConnectionFactory.setHostName(HOST);  
       jedisConnectionFactory.setPort(PORT);         
       jedisConnectionFactory.setPassword(PASSWORD);  
       return jedisConnectionFactory;  
    }  
      
    @Bean  
    public StringRedisTemplate redisTemplate(){  
       StringRedisTemplate redisTemplate = new StringRedisTemplate(jedisConnectionFactory());  
       return redisTemplate;  
    }  
}  
  


HOST,PORT,PASSWORD分别是服务器地址,端口,连接密码,其他的详细配置可自己根据项目需求动态设置
  3.接下来就是数据结构的定义了,redis支持包括string,list,set,sorted set,hash等结构。本项目中只用到了Set,SortSet,HashSet,若需要使用redis其他数据结构,可另行定义类。
redis各数据结构所提供的方法,可参考: http://redisdoc.com/index.html。
   (1).redis数据集合名定义(set,get操作需要)
[java] view plain copy
public class RedisSetName {  
    // setName  
      public static final String USERGROUPS = "UserGroups";  
    public static final String GROUPAUCTIONS = "GroupAuctions";  
    public static final String AUCTIONJSONS = "AuctionJsons";  
    public static final String AUCTIONGOODS = "AuctionGoods";  
    public static final String AUCGOODIMAGES = "AucGoodImages";  
    public static final String GROUPINFOS = "GroupInfos";  
    public static final String USERAUCTIONISREMIND = "UserAuctionIsRemind";     
    public static final String USERFRIENDREMARK = "UserFriendRemark";     
    public static final String GROUPUSERS = "GroupUsers";    
    public static final String USERINFOS = "UserInfos";  
    public static final String RELUSERGROUPINFOS = "RelUserGroupInfos";  
    public static final String GROUPUSEREMARK = "GroupUserRemark";  
  
}  

    (2)下面就是dao层一些操作定义了。见具体代码:因代码贴出篇幅过大,下面就只给出sortedset的dao层定义,其他的数据结构操作类似。
     本文定义了redis中sortedset类型数据的增删改查操作,可根据需要添加方法。

[java] view plain copy
package com.netease.lwt.dao;  
import java.util.ArrayList;  
import java.util.List;  
import java.util.Set;  
import javax.inject.Inject;  
import org.springframework.data.redis.core.StringRedisTemplate;  
import org.springframework.stereotype.Repository;  
@Repository  
public class RedisSetRepository {  
     private StringRedisTemplate redisTemplate;  
    @Inject  
    public RedisSetRepository(StringRedisTemplate redisTemplate){  
       this.redisTemplate = redisTemplate;  
    }  
    public Long add(String setName, String value) {  
       Long num = redisTemplate.opsForSet().add(setName, value);  
       return num;  
    }  
    public Long add(String setName, List<string><span style="font-size:14px;"> values) {  
     Long num = new Long(0);  
     for(String value : values){   
       num += redisTemplate.opsForSet().add(setName, value);  
      }  
    return num;  
    }   
    public Long remove(String setName, String value){  
     Long num = redisTemplate.opsForSet().remove(setName, value);  
     return num;  
    }   
    public void removeAll(String setName) {  
     redisTemplate.opsForSet().remove(setName, redisTemplate.opsForSet().members(setName));  
    }   
    public List</span><string><span style="font-size:14px;"> getAll(String setName){  
     setMembers = redisTemplate.opsForSet().members(setName);  
     return new ArrayList</span><string><span style="font-size:14px;">(setMembers);  
    }  
      
}  
   (3)接下来就可以在自己的Service层定义自己的方法了,比如你把用户信息缓存了,那在Service中需要获取用户信息的时候就可以通过上数dao层定义的方法上获取了。下面贴出本项目中一个使用实例
[html] view plain copy
/************************************** Redis相关增加/修改/删除操作 **************************************************************/  
@Override  
public void save(Group group) {  
    groupRepository.save(group);  
    redisHashSetRepository.set(  
            RedisSetName.generateSetName(RedisSetName.GROUPINFOS,  
                    group.getIm()), "name", group.getName());  
}  
  
public void deleteGroup(Group group) {  
    groupRepository.deleteByIm(group.getIm());  
    redisHashSetRepository.remove(  
            RedisSetName.generateSetName(RedisSetName.GROUPINFOS,  
                    group.getIm()), "name");  
}  
[html] view plain copy
  
/*************************************** Redis相关查询操作**************************************************************/
@Override
public List</span><string><span style="font-size:14px;"> findGroupImsByUser(String uid) throws CustomException {
return ims = redisSetRepository.getAll(RedisSetName.generateSetName(RedisSetName.USERGROUPS, uid));
}</span>
</string></string></string></string>
分享到:
评论

相关推荐

    redis实战pdf书和java版源代码

    Java版源代码和Jedis库的结合,让Java开发者可以方便地在Java应用程序中使用Redis。Jedis是Java语言的Redis客户端,它提供了丰富的API,涵盖了Redis的所有命令,包括连接管理、数据操作、事务处理、发布/订阅等功能...

    redis实战的pdf及java源代码

    使用这些库,开发者可以方便地在Java应用中存取Redis数据,实现缓存、会话管理、消息传递等功能。例如,通过Jedis的`set()`方法设置键值,`get()`方法获取键对应的值,`lpush()`和`rpop()`操作列表,`hset()`和`hget...

    Redis实战.pdf+Redis源码

    对于Java开发者,可以学习如何在Java项目中集成Redis,使用Jedis或Lettuce等客户端库进行交互,实现高效的缓存策略和数据交换。 总结,Redis实战不仅涵盖了基本的数据类型和操作,还涉及高级特性如发布订阅、事务、...

    Redis实战.pdf

    ### Redis实战知识点总结 #### 一、Redis简介与特点 **Redis**(Remote Dictionary Server)是一种开源的内存数据结构存储系统,用作数据库、缓存和消息中间件。它支持多种数据结构,如字符串(strings)、哈希...

    redis-in-action:redis实战java版

    本书通过实战案例,详细介绍了 Redis 的核心概念、命令用法以及如何与 Java 应用程序进行集成。 首先,Redis 的基本概念包括数据类型如字符串(String)、哈希(Hash)、列表(List)、集合(Set)和有序集合...

    《Redis实战》电子书

    ### Redis实战知识点详解 #### 一、Redis快速入门 ##### 1.1 Key-Value存储系统简介 **Redis**作为一款高性能的键值(Key-Value)存储系统,在现代软件架构中扮演着重要的角色。与其他键值存储系统如**Voldemort**...

    Redis实战 高清扫描 62M pdf java 经典书籍

    这本书《Redis实战》作为经典之作,很可能涵盖了Redis的基础概念、核心特性以及实战应用。以下是根据标题和描述可能包含的一些关键知识点: 1. **Redis基础知识**:书中可能讲解了Redis的基本架构、数据类型(如...

    redis实战中文 pdf

    ### Redis实战中文版知识点概述 #### 一、Key-Value存储系统简介 ##### 1.1.1 Voldemort - **特点**: Voldemort 是一个分布式Key-Value存储系统,它被设计用于处理大规模的数据,并且能够提供高可用性和容错性。 -...

    redis实战应用项目-food-social-contact-parent.zip

    《Redis实战应用项目——food-social-contact-parent》 Redis,全称Remote Dictionary Server,是一种开源的、基于内存的数据结构存储系统,常被用作数据库、缓存和消息中间件。本项目"food-social-contact-parent...

    《Redis实战》高清pdf (中英双版)

    总之,《Redis实战》是一本不可多得的Redis学习资料,无论你是Java开发者还是其他编程语言的爱好者,都可以通过本书深入理解Redis,提升自己的技能,从而在实际工作中更好地利用Redis解决各种数据存储和处理问题。

    《Redis实战》

    ### Redis实战知识点总结 #### 第一章:Redis快速入门 ##### 1.1 Key-Value存储系统简介 **1.1.1 Voldemort** - **特点**:Voldemort是一款分布式键值存储系统,主要设计用于处理高并发场景。 - **应用场景**:...

    Redis实战 中文.pdf

    ### Redis实战知识点总结 #### 一、Key-Value存储系统简介 **1.1.1 Voldemort** - **特点**:Voldemort是一款分布式键值存储系统,特别适合于高可用性和可扩展性的场景。 - **应用场景**:适用于需要高度可扩展且...

    SSM REDIS集成实战

    本实战教程将带你深入理解如何在SSM项目中集成Redis,以便快速进行高效开发。 首先,我们来看Spring框架如何与Redis进行集成。Spring提供了一个名为`spring-redis`的模块,它包含了对Redis的支持。你需要在项目的`...

    Redis实战高清

    《Redis实战高清》这本书是一本全面且深入介绍Redis这一高性能键值存储系统的中文教程。Redis以其高效、灵活的特性在现代互联网应用中被广泛应用,包括缓存、消息队列、计数器等多种场景。这本书旨在帮助读者从零...

    redis_java

    结合提供的"redis实战源码",你可以深入研究实际项目中如何集成和使用Redis与Java进行交互,了解在不同场景下如何优化性能和代码结构。通过学习这些源码,你可以更好地理解Redis在Java应用程序中的工作原理,提升你...

    Redis 实战 源码(java python ruby node)(缺少第三节)

    Carlson撰写,黄健宏翻译,旨在深入剖析Redis的设计与实现,并提供多种语言(Java、Python、Ruby、Node.js)的源码示例,帮助读者理解如何在实际项目中应用Redis。 Redis以其丰富的数据结构(如字符串、哈希、列表...

    redis in action java代码

    《Redis in Action》是一本深入介绍Redis的书籍,它涵盖了Redis的基本概念、数据结构以及如何在实际项目中高效地使用Redis。这本书通过丰富的实例和Java代码来解释Redis的各种功能,帮助开发者更好地理解和应用Redis...

    redis实战项目-dianping-redis.zip

    《Redis实战:基于大众点评项目解析》 Redis,全称Remote Dictionary Server,是一款开源的、高性能的键值存储系统,广泛应用于数据缓存、消息队列、计数器等多种场景。在本实战项目中,我们将深入探究如何在...

Global site tag (gtag.js) - Google Analytics