- 浏览: 753034 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
lgh1992314:
a offset: 26b offset: 24c offse ...
java jvm字节占用空间分析 -
ls0609:
语音实现在线听书http://blog.csdn.net/ls ...
Android 语音输入API使用 -
wangli61289:
http://viralpatel-net-tutorials ...
Android 语音输入API使用 -
zxjlwt:
学习了素人派http://surenpi.com
velocity宏加载顺序 -
tt5753:
谢啦........
Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
1.spring-data-redis如何连接到redis服务端
其中定义了两个接口 org.springframework.data.redis.connection下的RedisConnection和RedisConnectionFactory工厂接口:
public interface RedisConnection extends RedisCommands { void close() throws DataAccessException; boolean isClosed(); Object getNativeConnection(); boolean isQueueing(); boolean isPipelined(); void openPipeline(); List<Object> closePipeline(); }
其中RedisCommands接口定义了redis支持的所有操作接口,
public interface RedisConnectionFactory extends PersistenceExceptionTranslator { RedisConnection getConnection(); }
RedisConnectionFactory接口只定义一个获取连接的方法,而PersistenceExceptionTranslator定义了出现异常时把异常转化为spring通用的DataAccessException异常,可以供spring统一处理。
spring-data-redis通过三种方式连接:
Jedis connector
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:host-name="server" p:port="6379"/>
JRedis connector
<bean id="jredisConnectionFactory" class="org.springframework.data.redis.connection.jredis.JredisConnectionFactory" p:host-name="server" p:port="6379"/>
RJC connector
<bean id="jredisConnectionFactory" class="org.springframework.data.redis.connection.rjc.RjcConnectionFactory" p:host-name="server" p:port="6379"/>
而spring-data-redis是统一通过RedisTemplate类给用户操作
<bean id="jedisConnectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory" p:use-pool="true"/> <!-- redis template definition --> <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connection-factory-ref="jedisConnectionFactory"/>
示例如下:
public class Example { // inject the actual template @Autowired private RedisTemplate<String, String> template; // inject the template as ListOperations @Autowired private ListOperations<String, String> listOps; public void addLink(String userId, URL url) { listOps.leftPush(userId, url.toExternalForm()); } }
2.序列化
通过序列化接口org.springframework.data.redis.serializer来定制自己的序列化逻辑
public interface RedisSerializer<T> {
/** * Serialize the given object to binary data. * * @param t object to serialize * @return the equivalent binary data */ byte[] serialize(T t) throws SerializationException; /** * Deserialize an object from the given binary data. * * @param bytes object binary representation * @return the equivalent object instance */ T deserialize(byte[] bytes) throws SerializationException; }
存到redis上都是二进制的值,现在spring-data-redis里面已经提供了几种序列化机制:
JacksonJsonRedisSerializer json格式序列化
JdkSerializationRedisSerializer jdk的序列化
OxmSerializer spring的orm的序列化
StringRedisSerializer 简单的字符串跟字节转换序列化
3.spring-data-redis的消息发布订阅处理
<!-- this is the Message Driven POJO (MDP) -->
<bean id="messageListener" class="org.springframework.data.redis.listener.adapter.MessageListenerAdapter"> <constructor-arg> <bean class="redisexample.DefaultMessageDelegate"/> </constructor-arg> </bean> <!-- and this is the message listener container... --> <bean id="redisContainer" class="org.springframework.data.redis.listener.RedisMessageListenerContainer"> <property name="connectionFactory" ref="connectionFactory"/> <property name="messageListeners"> <!-- map of listeners and their associated topics (channels or/and patterns) --> <map> <entry key-ref="messageListener"> <bean class="org.springframework.data.redis.listener.ChannelTopic"> <constructor-arg value="chatroom"> </bean> </entry> </map> </property> </bean>
每次接收到消息,就会调用注册的listener来处理。
4.支持spring cache的处理抽象
<bean id="cacheManager" class="org.springframework.data.redis.cache.RedisCacheManager" c:template-ref="redisTemplate">
这样支持在本地缓存访问过的记录。
5.访问redis时支持回调,给程序员开发充分的扩展性灵活性来处理自定义的一些操作
通过扩展回调接口:
public interface RedisCallback<T> {
/** * Gets called by {@link RedisTemplate} with an active Redis connection. Does not need to care about activating or * closing the connection or handling exceptions. * * @param connection active Redis connection * @return a result object or {@code null} if none * @throws DataAccessException */ T doInRedis(RedisConnection connection) throws DataAccessException; }
这个接口可以直接操作connection对象,可以给开发充分的控制权进行操作。
然后通过调用redisTemplate的
public <T> T execute(RedisCallback<T> action) {
return execute(action, isExposeConnection()); } /** * Executes the given action object within a connection, which can be exposed or not. * * @param <T> return type * @param action callback object that specifies the Redis action * @param exposeConnection whether to enforce exposure of the native Redis Connection to callback code * @return object returned by the action */ public <T> T execute(RedisCallback<T> action, boolean exposeConnection) { return execute(action, exposeConnection, false); }
实际上redisTemplate的所有操作都是通过这个回调接口来处理的
public List<Object> exec() { return execute(new RedisCallback<List<Object>>() { public List<Object> doInRedis(RedisConnection connection) throws DataAccessException { return connection.exec(); } }); } public void delete(K key) { final byte[] rawKey = rawKey(key); execute(new RedisCallback<Object>() { public Object doInRedis(RedisConnection connection) { connection.del(rawKey); return null; } }, true); } public void delete(Collection<K> keys) { final byte[][] rawKeys = rawKeys(keys); execute(new RedisCallback<Object>() { public Object doInRedis(RedisConnection connection) { connection.del(rawKeys); return null; } }, true); }
回调接口代码看起来很优雅,也非常灵活,设计得很不错。
发表评论
-
对字符串进行验证之前先进行规范化
2013-09-17 23:18 13947对字符串进行验证之前先进行规范化 应用系统中经常对字 ... -
在Apache Tomcat 7设置redis作为session store
2013-08-21 17:00 1989原文:http://www.javaarch.ne ... -
使用telnet连接到基于spring的应用上执行容器中的bean的任意方法
2013-08-08 09:17 1470使用telnet连接到基于spring的应用上执行容器中 ... -
jdk7和8的一些新特性介绍
2013-07-06 16:07 10109更多ppt内容请查看:htt ... -
Lucene的IndexWriter初始化时的LockObtainFailedException的解决方法
2013-06-28 21:35 11798原文链接: http://www.javaarch.net ... -
java对于接口和抽象类的代理实现,不需要有具体实现类
2013-06-12 09:50 2952原文链接:http://www.javaarch.net/j ... -
Excel2007格式分析和XML解析
2013-06-07 09:56 10727在物料清单采购中,用到excel上传文件解析功能,不 ... -
Java EE 7中对WebSocket 1.0的支持
2013-06-05 09:27 3836原文链接:http://www.javaarch.n ... -
java QRCode生成示例
2013-06-05 09:26 1509原文链接:http://www.javaarch.n ... -
Spring Security Logout
2013-06-03 00:05 2368原文地址:http://www.javaarch.net/ ... -
Spring Security Basic Authentication
2013-06-03 00:04 1738原文地址:http://www.javaarch.net/ ... -
Spring Security Form Login
2013-06-02 16:16 2146原文地址:http://www.javaarch.net/j ... -
spring3 的restful API RequestMapping介绍
2013-06-02 14:53 1152原文链接:http://www.javaarch.net/j ... -
Java Web使用swfobject调用flex图表
2013-05-28 19:05 1120Java Web使用swfobject调用 ... -
spring使用PropertyPlaceholderConfigurer扩展来满足不同环境的参数配置
2013-05-21 15:57 3331spring使用PropertyPlaceholderCon ... -
java国际化
2013-05-20 20:57 4472java国际化 本文来自:http://www.j ... -
RSS feeds with Java
2013-05-20 20:52 1214RSS feeds with Java 原文来自:htt ... -
使用ibatis将数据库从oracle迁移到mysql的几个修改点
2013-04-29 10:40 1674我们项目在公司的大战略下需要从oracle ... -
线上机器jvm dump分析脚本
2013-04-19 10:48 2904#!/bin/sh DUMP_PIDS=`p ... -
spring3学习入门示例工程
2013-04-18 09:28 11261. github地址 https://github ...
相关推荐
Spring Data Commons是Spring框架的一个重要组成部分,它为Spring Data项目提供了一套通用的基础设施,简化了与各种数据存储进行交互的过程。这个1.13.0.RELEASE版本是该模块的一个稳定版本,包含了对多种数据访问...
压缩包中的“SpringData”可能就是包含了这些依赖的文件夹,里面可能有`.jar`文件或者`.pom.xml`文件,用于构建工具导入。 集成Spring Data到Spring应用中,还需要配置相关的Bean,如DataSource、...
3. **JPA集成**:Spring Data与JPA紧密集成,使得开发者可以轻松地使用ORM(对象关系映射)框架,如Hibernate,进行数据库操作。 4. **NoSQL支持**:除了传统的SQL数据库,Spring Data还支持多种NoSQL数据库,如...
- **Spring Data**:简化了与各种数据存储(如数据库、NoSQL等)的交互,提供了统一的API。 - **Spring JDBC**和**JPA**:提供对数据库操作的支持,JDBC抽象层简化了数据库访问,JPA则实现了ORM(对象关系映射)。...
Spring Data项目进一步扩展了这一能力,提供了一种统一的方式来访问各种数据存储,包括NoSQL数据库。 总的来说,Spring Framework 5.0.2.RELEASE是一个强大的工具,它提供了全面的解决方案,涵盖了从Web应用开发到...
Spring Data提供了一组模块,简化了与各种数据存储的交互,包括JDBC、ORM框架如Hibernate和MyBatis,以及NoSQL数据库。Spring Boot则进一步简化了Spring应用的初始化和配置,通过预设的默认值和自动配置功能,使...
同时,Spring Data项目提供了对各种NoSQL数据库的支持,如MongoDB、Cassandra等,使开发者能够灵活选择合适的数据存储方案。 在Web应用程序支持上,Spring MVC是Spring框架的重要组成部分,它提供了模型-视图-控制...
此外,对于NoSQL数据库,如MongoDB和Cassandra,Spring Data项目提供了相应的支持,使得与非关系型数据库的交互变得简单。 在Web开发中,Spring MVC作为核心组件,提供了模型-视图-控制器架构,用于构建高效、灵活...
在数据访问/集成层,Spring支持多种数据存储技术,包括JDBC、ORM(Object-Relational Mapping,对象关系映射)框架如Hibernate和MyBatis,以及NoSQL数据库。此外,Spring Data项目提供了一致的API,简化了对各种数据...
Spring Data模块简化了数据库访问,包括JDBC、ORM(对象关系映射)和OXM(对象XML映射)。在5.2.6版本中,对JPA和Hibernate的支持更加完善,同时引入了对NoSQL数据库的更多支持。 6. **文档资源** 压缩包中的...
3. **数据访问**:Spring Data项目简化了数据库访问,提供了对JPA、Hibernate等ORM框架的集成,以及对NoSQL数据库的支持。在5.3.17版本中,可能包含对最新数据库驱动的更新,以确保兼容性和性能优化。 4. **Spring ...
Spring Data是数据访问/集成模块的一部分,它简化了与各种数据存储(如JDBC、ORM框架、NoSQL数据库等)的交互。5.0.6.RELEASE版本对Spring Data的增强,使得与数据库的交互更为便捷,同时也加强了对新的数据存储...
它实现了ORM(对象关系映射)的概念,尽管MongoDB是一个NoSQL文档数据库,而不是传统的关系型数据库。这个框架提供了注解驱动的编程模型,允许开发者通过简单的接口定义来实现对MongoDB的数据操作。 **2. Spring ...
Spring Data模块简化了与数据库的交互,支持JDBC、ORM(如Hibernate)和NoSQL数据库。新版本可能包含对最新数据库驱动的更新,以及对数据访问的性能提升。 6. **Spring Boot** 虽然不在本次压缩包内,但Spring ...
3. **数据访问**:Spring提供了对各种数据访问技术的抽象,包括JDBC、ORM(如Hibernate、JPA)以及NoSQL数据库的支持。在4.1.9.RELEASE中,Spring Data模块进一步增强了对多数据源的支持,使得在分布式环境中管理...
4. **数据访问**:Spring Data模块简化了数据库操作,支持JPA、Hibernate等ORM工具,同时提供对NoSQL数据库的支持。5.2.5 版本在数据访问方面有优化,包括对最新JPA规范的兼容和更好的事务管理策略。 5. **Spring ...
3. 理解Spring的数据访问层,包括JDBC、ORM(如Hibernate、JPA)和NoSQL(如MongoDB)的支持。 4. 探索Spring AOP,学习如何创建切面、定义通知和匹配连接点,实现面向切面的编程。 5. 学会使用Spring的任务调度,如...
4. **数据访问**:Spring支持多种数据存储技术,包括JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis,以及NoSQL数据库如MongoDB。它提供了一致的编程模型,简化了数据访问层的开发。 5. **MVC框架**:Spring ...
4. **数据访问**:Spring 提供了对JDBC、ORM(Object-Relational Mapping)框架如Hibernate和MyBatis的支持,以及对NoSQL数据库的集成。5.2.18.RELEASE版本可能包含了对最新数据库驱动和ORM框架的兼容性更新。 5. *...
Spring框架持续演进,不断适应新的技术趋势,如Spring Boot简化了微服务的开发,Spring Cloud提供了全面的微服务解决方案,Spring Data支持NoSQL数据库等。Spring Framework始终致力于提升开发者体验,推动Java生态...