- 浏览: 980187 次
文章分类
- 全部博客 (428)
- Hadoop (2)
- HBase (1)
- ELK (1)
- ActiveMQ (13)
- Kafka (5)
- Redis (14)
- Dubbo (1)
- Memcached (5)
- Netty (56)
- Mina (34)
- NIO (51)
- JUC (53)
- Spring (13)
- Mybatis (17)
- MySQL (21)
- JDBC (12)
- C3P0 (5)
- Tomcat (13)
- SLF4J-log4j (9)
- P6Spy (4)
- Quartz (12)
- Zabbix (7)
- JAVA (9)
- Linux (15)
- HTML (9)
- Lucene (0)
- JS (2)
- WebService (1)
- Maven (4)
- Oracle&MSSQL (14)
- iText (11)
- Development Tools (8)
- UTILS (4)
- LIFE (8)
最新评论
-
Donald_Draper:
Donald_Draper 写道刘落落cici 写道能给我发一 ...
DatagramChannelImpl 解析三(多播) -
Donald_Draper:
刘落落cici 写道能给我发一份这个类的源码吗Datagram ...
DatagramChannelImpl 解析三(多播) -
lyfyouyun:
请问楼主,执行消息发送的时候,报错:Transport sch ...
ActiveMQ连接工厂、连接详解 -
ezlhq:
关于 PollArrayWrapper 状态含义猜测:参考 S ...
WindowsSelectorImpl解析一(FdMap,PollArrayWrapper) -
flyfeifei66:
打算使用xmemcache作为memcache的客户端,由于x ...
Memcached分布式客户端(Xmemcached)
springmvc整合redis架构搭建实例:http://www.tuicool.com/articles/iARnemB
Spring 整合 Redis :http://blog.csdn.net/java2000_wl/article/details/8543203/
废话不多说,直接进主题,
需要的相关redis Jar包:
Redis属性文件redis.properties:
Spring加载属性文件:
Redis配置文件redis-context.xml:
Spring加载配置文件:
实例类:
Redis基础DAO
实体操纵类DAO
实体Service
测试Controller
下面进行测试,利用RestClient测试
访问:http://localhost:8080/test/member/add?id=1&nickname=pig
结果
add ok!
查看redis
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> get 1
"pig"
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
{"id":"1","nickname":"pig"}
访问:http://localhost:8080/test/member/update?id=1&nickname=dog
结果
update ok!
查看redis
127.0.0.1:6379> get 1
"dog"
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
{"id":"1","nickname":"dog"}
访问: http://localhost:8080/test/member/delete?id=1
结果
delete ok!
查看redis
127.0.0.1:6379> get 1
(nil)
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
null
Spring 整合 Redis :http://blog.csdn.net/java2000_wl/article/details/8543203/
废话不多说,直接进主题,
需要的相关redis Jar包:
Redis属性文件redis.properties:
# Redis settings redis.host=192.168.126.128 redis.port=6379 redis.pass=redis redis.maxIdle=300 redis.maxActive=600 redis.maxWait=1000 redis.testOnBorrow=true
Spring加载属性文件:
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>/WEB-INF/classes/jdbc.properties</value> <value>/WEB-INF/classes/redis.properties</value> </list> </property> </bean>
Redis配置文件redis-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:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd "> <bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle" value="${redis.maxIdle}" /> <property name="maxActive" value="${redis.maxActive}" /> <property name="maxWait" value="${redis.maxWait}" /> <property name="testOnBorrow" value="${redis.testOnBorrow}" /> </bean> <bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="${redis.host}" p:port="${redis.port}" p:password="${redis.pass}" p:pool-config-ref="poolConfig"/> <bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate"> <property name="connectionFactory" ref="connectionFactory" /> </bean> </beans>
Spring加载配置文件:
<?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:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <import resource="spring-aop.xml" /> <import resource="quartz.xml" /> <import resource="redis-context.xml" /> </beans>
实例类:
public class Member extends BaseModel{ /** * */ private static final long serialVersionUID = -1959528436584592183L; private String id; private String nickname; public Member(){} public Member(String id, String nickname){ this.setId(id); this.setNickname(nickname); } public String getId() { return id; } public void setId(String id) { this.id = id; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } } //BaseModel package com.enity.base; import java.io.Serializable; public class BaseModel implements Serializable{ /** * */ private static final long serialVersionUID = -1487254269873074502L; //待扩展 }
Redis基础DAO
package com.redis.dao.base; import java.io.Serializable; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.RedisSerializer; public abstract class RedisGeneratorDao<K extends Serializable, V extends Serializable> { @Resource(name="redisTemplate") protected RedisTemplate<K,V> redisTemplate ; /** * 设置redisTemplate * @param redisTemplate the redisTemplate to set */ public void setRedisTemplate(RedisTemplate<K, V> redisTemplate) { this.redisTemplate = redisTemplate; } /** * 获取 RedisSerializer * <br>------------------------------<br> */ protected RedisSerializer<String> getRedisSerializer() { return redisTemplate.getStringSerializer(); } }
实体操纵类DAO
package com.redis.dao.imp; import java.util.ArrayList; import java.util.List; import org.springframework.dao.DataAccessException; import org.springframework.data.redis.connection.RedisConnection; import org.springframework.data.redis.core.RedisCallback; import org.springframework.data.redis.serializer.RedisSerializer; import org.springframework.stereotype.Repository; import org.springframework.util.Assert; import com.enity.Member; import com.redis.dao.MemberDao; import com.redis.dao.base.RedisGeneratorDao; @Repository(value="memberDao") public class MemberDaoImpl extends RedisGeneratorDao<String,Member> implements MemberDao{ /** * 添加对象 */ public boolean add(final Member member) { boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] key = serializer.serialize(member.getId()); byte[] name = serializer.serialize(member.getNickname()); return connection.setNX(key, name); } }); return result; } /** * 添加集合 */ public boolean add(final List<Member> list) { Assert.notEmpty(list); boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); for (Member member : list) { byte[] key = serializer.serialize(member.getId()); byte[] name = serializer.serialize(member.getNickname()); connection.setNX(key, name); } return true; } }, false, true); return result; } /** * 删除对象 ,依赖key */ public void delete(String key) { List<String> list = new ArrayList<String>(); list.add(key); delete(list); } /** * 删除集合 ,依赖key集合 */ public void delete(List<String> keys) { redisTemplate.delete(keys); } /** * 修改对象 */ public boolean update(final Member member) { String key = member.getId(); if (get(key) == null) { throw new NullPointerException("数据行不存在, key = " + key); } boolean result = redisTemplate.execute(new RedisCallback<Boolean>() { public Boolean doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] key = serializer.serialize(member.getId()); byte[] name = serializer.serialize(member.getNickname()); connection.set(key, name); return true; } }); return result; } /** * 根据key获取对象 */ public Member get(final String keyId) { Member result = redisTemplate.execute(new RedisCallback<Member>() { public Member doInRedis(RedisConnection connection) throws DataAccessException { RedisSerializer<String> serializer = getRedisSerializer(); byte[] key = serializer.serialize(keyId); byte[] value = connection.get(key); if (value == null) { return null; } String nickname = serializer.deserialize(value); return new Member(keyId, nickname); } }); return result; } } //MemberDao package com.redis.dao; import java.util.List; import com.enity.Member; public interface MemberDao { /** * 添加对象 */ public boolean add(final Member member); /** * 添加集合 */ public boolean add(final List<Member> list); /** * 删除对象 ,依赖key */ public void delete(String key); /** * 删除集合 ,依赖key集合 */ public void delete(List<String> keys); /** * 修改对象 */ public boolean update(final Member member); /** * 根据key获取对象 */ public Member get(final String keyId); }
实体Service
package com.service.imp; import java.util.List; import javax.annotation.Resource; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.enity.Member; import com.redis.dao.MemberDao; import com.service.MemberService; @Service public class MemberServiceImp implements MemberService{ @Autowired private MemberDao memberDao; @Override public boolean add(Member member) { return memberDao.add(member); } @Override public boolean add(List<Member> list) { return memberDao.add(list); } @Override public void delete(String key) { memberDao.delete(key); } @Override public void delete(List<String> keys) { memberDao.delete(keys); } @Override public boolean update(Member member) { return memberDao.update(member); } @Override public Member get(String keyId) { return memberDao.get(keyId); } } //MemberService package com.service; import java.util.List; import com.enity.Member; public interface MemberService { /** * 添加对象 */ public boolean add(final Member member); /** * 添加集合 */ public boolean add(final List<Member> list); /** * 删除对象 ,依赖key */ public void delete(String key); /** * 删除集合 ,依赖key集合 */ public void delete(List<String> keys); /** * 修改对象 */ public boolean update(final Member member); /** * 根据key获取对象 */ public Member get(final String keyId); }
测试Controller
package com.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.controller.base.BaseController; import com.enity.Member; import com.service.MemberService; import util.JsonUtil; @Controller @RequestMapping(value="/member") public class MemberController extends BaseController{ @Autowired private MemberService memberService; @RequestMapping("/add") @ResponseBody public String add(Member member){ memberService.add(member); return "add ok!"; } @RequestMapping("/get") @ResponseBody public String queryMember(String id){ Member member = memberService.get(id); return JsonUtil.toJson(member); } @RequestMapping("/delete") @ResponseBody public String deleteMember(String id){ memberService.delete(id); return "delete ok!"; } @RequestMapping("/update") @ResponseBody public String updateMember(Member member){ memberService.update(member); return "update ok!"; } } //BaseController package com.controller.base; public abstract class BaseController { //待扩展 }
下面进行测试,利用RestClient测试
访问:http://localhost:8080/test/member/add?id=1&nickname=pig
结果
add ok!
查看redis
127.0.0.1:6379> dbsize
(integer) 1
127.0.0.1:6379> get 1
"pig"
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
{"id":"1","nickname":"pig"}
访问:http://localhost:8080/test/member/update?id=1&nickname=dog
结果
update ok!
查看redis
127.0.0.1:6379> get 1
"dog"
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
{"id":"1","nickname":"dog"}
访问: http://localhost:8080/test/member/delete?id=1
结果
delete ok!
查看redis
127.0.0.1:6379> get 1
(nil)
127.0.0.1:6379>
访问:http://localhost:8080/test/member/get?id=1
结果
null
发表评论
-
Spring与Redis的集成详解二
2016-12-26 11:36 1847Jedis获取Redis连接详解:http://donald- ... -
Spring与Redis的集成详解一
2016-12-26 10:32 3300Jedis获取Redis连接详解:http://donald- ... -
Redis的客户端Jedis及Jedis操作Redis命令详解
2016-12-25 14:15 10429Jedis获取Redis连接详解:http://donald- ... -
Jedis获取Redis连接详解
2016-12-24 17:16 5730Jedis操作Redis :http://donald-dra ... -
Jedis操作Redis
2016-12-23 14:41 2257Redis各特性的应用场景:http://www.cnblog ... -
Redis主从,读写分离、HA配置
2016-12-21 20:24 1097Redis的安装与配置:http://donald-drape ... -
Reid高可用Sentinel配置文件详解
2016-12-21 18:17 1800Redis 的 Sentinel 文档:http://www. ... -
Redis 发布订阅,事务,备份恢复,监控
2016-12-21 10:40 649Redis 发布订阅 ##在 ... -
Redis数据类型操作命令
2016-12-20 18:45 462Redis教程: http://www.runoob.com/ ... -
Redis日志、数据目录、AOF、AUTH配置
2016-12-20 16:04 1543简单粗暴的Redis数据备份和恢复方法:http://www. ... -
Redis启动连接基准测试
2016-12-20 15:04 676基于Redis Sentinel的Redis集群(主从& ... -
Redis配置文件详解
2016-12-20 14:50 1638上一篇说了Redis的配置安装,这篇来看一下Redis配置文件 ... -
Redis的安装与配置
2016-12-19 18:31 969CentOS6.4安装配置redis:http://www.c ...
相关推荐
将Spring与Redis集成,可以显著提升应用程序的数据处理速度和响应性能。当我们谈论“Spring集成Redis集群”时,这意味着我们要在Spring应用中配置和使用多个Redis实例,形成一个高可用、高并发的数据库解决方案。 ...
spring-data-redis-1.6.2.RELEASE.jar spring与redis集成包 commons-pool2-2.4.2.jar 与redis连接池 spring-data-commons-2.0.0.RC2.jar spring数据包 redis-context.xml redis和spring配置,需要引用到自己项目的...
spring和redis集成有很多方式,看到网上很多都是使用redistemplate自己去做redis 的一些操作,但是对于我们开发来说,肯定是使用越方便越好,于是乎就有了spring的对redis或者memcahe这些换成框架的封装,只需要引入...
spring和redis集成有很多方式,看到网上很多都是使用redistemplate自己去做redis 的一些操作,但是对于我们开发来说,肯定是使用越方便越好,于是乎就有了spring的对redis或者memcahe这些换成框架的封装,只需要引入...
要将Spring与Redis集成,首先要在`pom.xml`中添加相应的依赖,如Spring Data Redis和Jedis。然后,我们需要在Spring的配置文件(如`application.properties`或`application.yml`)中设置Redis服务器的连接信息,包括...
二、Spring Boot与Redis集成 在Spring Boot项目中整合Redis更加简便,只需在`pom.xml`或`build.gradle`文件中添加相关依赖,如Spring Data Redis和Redis Starter。Spring Boot会自动配置Redis连接,包括默认的端口...
在IT行业中,Spring框架是Java应用...总结来说,这个配置文件组合提供了Spring应用与Redis Sentinel集成的基础,实现了对Redis的高可用访问。这种配置模式在大型分布式系统中尤为常见,能够提高系统的稳定性和可靠性。
7. **Redis Cache**:Spring框架的缓存抽象可以与Redis集成,将缓存数据存储在Redis中,提升应用程序的性能。通过`@Cacheable`, `@CacheEvict`, `@CachePut`等注解,可以方便地控制缓存的存取和更新。 8. **消息...
SpringData与Redis集成是现代Java应用中常见的数据存储和缓存解决方案。SpringData是一个强大的框架,它简化了数据库访问,并提供了对多种数据存储技术的统一API。而Redis是一款开源、高性能的键值对数据存储系统,...
本文将深入探讨如何将Spring应用与Redis集群进行集成。 **一、Redis集群介绍** Redis集群是Redis的一种分布式解决方案,通过数据分片(Sharding)将数据分散存储在多个节点上,以实现水平扩展。每个节点负责一部分...
在IT行业中,Redis是一个广泛...通过`spring-redis`压缩包文件,开发者可以获得示例代码和配置,进一步学习和实践Spring与Redis的集成。在实践中不断调整优化,才能更好地利用Redis的特性,为应用程序带来最大的价值。
本篇文章将详细阐述Spring与Redis集成的相关知识点,以及如何利用提供的jar包进行配置与使用。 首先,Redis是一个开源的、基于内存的数据结构存储系统,可以作为数据库、缓存和消息中间件使用。它支持丰富的数据...
spring_redis集成,通过jedis作为redis的客户端。 只提供集成方式,具体api,参照jedis API
SpringCache与Redis集成,优雅的缓存解决方案 SpringCache是一种基于Java的缓存解决方案,它可以与Redis集成,提供了一种优雅的缓存解决方案。在本文中,我们将对SpringCache与Redis集成的优雅缓存解决方案进行详细...
Spring Redis集成使得我们在Spring应用中使用Redis变得更加简便,通过`RedisTemplate`我们可以方便地执行各种Redis操作,同时Spring Data Redis提供了丰富的API来支持更复杂的数据结构和功能。结合测试用例,我们...
SpringCloud整合Redis缓存;版本:SpringCloud :Dalston.SR4;SpringBoot:1.5.14.RELEASE;Redis:3.2.0;Maven :3.5.3.代码下载下来即可用
Spring框架与Redis的集成是现代Java开发中常见的一种技术组合,用于实现高效、可扩展的数据缓存和存储。Spring Data Redis是Spring Framework的一个模块,它为Redis提供了丰富的支持,包括连接管理、序列化、命令...
Spring框架提供了丰富的集成支持,使得与其他技术的整合变得非常方便。整合Spring和Redis可以带来以下好处: 1. 提高性能:Redis作为内存数据库,读写速度极快,适合处理大量并发请求。 2. 支持多种数据结构:Redis...
Spring 3.0虽然相对较老,但在当时是广泛使用的版本,因此了解其与Redis的集成方式对维护旧项目或理解历史背景很有帮助。 首先,我们需要引入Redis的相关jar包。在"redis必须jar"中,通常包括以下组件: 1. `jedis....
这样,我们便完成了Redis与Spring的集成,能够方便地使用Java代码对Redis进行各种操作。记住,合理利用Redis的特性(如批量操作、订阅发布等)可以显著提高应用的性能和响应速度。在实际项目中,根据业务需求进行...