spring-data-redis --简单的用spring-data-redis
spring-data-redis序列化策略
spring-data-redis提供了多种serializer策略,这对使用jedis的开发者而言,实在是非常便捷。sdr提供了4种内置的serializer:
- JdkSerializationRedisSerializer:使用JDK的序列化手段(serializable接口,ObjectInputStrean,ObjectOutputStream),数据以字节流存储,jdk序列化和反序列化数据
- StringRedisSerializer:字符串编码,数据以string存储
- JacksonJsonRedisSerializer:json格式存储
- OxmSerializer:xml格式存储
其中JdkSerializationRedisSerializer和StringRedisSerializer是最基础的序列化策略,其中“JacksonJsonRedisSerializer”与“OxmSerializer”都是基于stirng存储,因此它们是较为“高级”的序列化(最终还是使用string解析以及构建java对象)。
RedisTemplate中需要声明4种serializer,默认为“JdkSerializationRedisSerializer”:
1) keySerializer :对于普通K-V操作时,key采取的序列化策略
2) valueSerializer:value采取的序列化策略
3) hashKeySerializer: 在hash数据结构中,hash-key的序列化策略
4) hashValueSerializer:hash-value的序列化策略
无论如何,建议key/hashKey采用StringRedisSerializer。 这redis服务端用命令行好查看 配置如下
1、maven配置
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.version>4.1.1.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>1.4.1.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
</dependencies>
2、spring xml配置文件
配置jedis的缓冲池
<!-- 配置Jedis的 缓冲池 -->
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig" p:maxTotal="32" p:maxIdle="6"
p:maxWaitMillis="15000">
</bean>
配置ConnectionFactory
<!-- 配置Jedis connection -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
p:poolConfig-ref="jedisPoolConfig" p:hostName="127.0.0.1" p:port="6379" p:usePool="true">
</bean>
创建RedisTemplate
<!-- 配置 redisTemplate 利用Stringserializer -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate" p:connectionFactory-ref="connectionFactory">
<property name="defaultSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<!-- 使用string主要是key 在redis端用命令好读 不然默认的序列化没办法读 -->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
<property name="hashKeySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer" />
</property>
</bean>
3、案例
private static ApplicationContext context = null;
private static RedisTemplate redisTemplate=null;
@org.junit.BeforeClass
public static void BeforeClass() {
if (context == null) {
System.out.println("ctx inited....");
context = new ClassPathXmlApplicationContext("spring-context.xml");
redisTemplate = context.getBean("redisTemplate",RedisTemplate.class);
}
}
1.String
@Test
public void testString(){
ValueOperations opsForValue = redisTemplate.opsForValue(); opsForValue.set("string:name", "achuan");
opsForValue.set("string:id","1"); Object name = opsForValue.get("string:name");
assertNotNull(name);
assertEquals("achuan", name.toString());
}
2.List
说到List Redis 提供了类似于消息队列的操作,
@Test
public void testList() {
ListOperations opsForList = redisTemplate.opsForList(); String keyName = "ListKey"; redisTemplate.delete(keyName); opsForList.leftPush(keyName, "zhangsan");
opsForList.leftPush(keyName, "lisi");
opsForList.leftPushAll(keyName, "wangwu", "zhaoliu", "qianqi"); Long size = opsForList.size(keyName);
System.out.println("size:" + size); for (long i = 0; i < size; i++) {
Object value = opsForList.index(keyName,i);
System.out.println("i:"+i+",value:"+value.toString());
} Object leftPop = opsForList.leftPop(keyName);
System.out.println("after pop size:"+opsForList.size(keyName));
}
3 Hashes (SETS 自己看看吧。。)
今天就先到这里,Redis 还有很多东西,比如cache transcation 等等 看下目录结构
spring-data-redis --简单的用spring-data-redis的更多相关文章
- python的redis简单使用
		安装的Python版本 3.6.1 redis安装的2.8 安装redis模块 pip install redis 简单使用 redis-test.py import redis r=redis.Re ... 
- JAVA入门[20]-Spring Data JPA简单示例
		Spring 对 JPA 的支持已经非常强大,开发者只需关心核心业务逻辑的实现代码,无需过多关注 EntityManager 的创建.事务处理等 JPA 相关的处理.Spring Data JPA更是 ... 
- 简单使用:spring boot整合spring Data JPA
		JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中. 1.jpa具有什么优势? (1).标准 ... 
- spring与redis简单整合
		项目结构 整合需要的依赖 <dependencies> <dependency> <groupId>org.springframework</groupId& ... 
- Spring和redis简单测试demo
		1.1 首先创建一个Maven工程 File --> New --> Other,然后选择Maven目录下的Maven Project,如下图: 然后在弹出的面板中选择配置后,下一步即可, ... 
- 63.JPA/Hibernate/Spring Data概念【从零开始学Spring Boot】
		[从零开始学习Spirng Boot-常见异常汇总] 事情的起源,无意当中在一个群里看到这么一句描述:"有人么?默默的问一句,现在开发用mybatis还是hibernate还是jpa&quo ... 
- Spring + Redis ( 简单使用)
		1.Redis 的 Java API Java 中 使用 Redis 工具,要先去 maven 仓库中,下载 jedis jar包 jedis 依赖 <dependency> <gr ... 
- Spring学习笔记(八)Spring Data JPA学习
		 jpa简单的命名规则如下,这个不多做介绍,放在这里也是给自己以后查找起来方便,这篇文章主要介绍之前一直忽略了的几个点,像@NoRepositoryBean这个注解,以及怎么自定义Repositor ... 
- spring boot系列(五)spring boot 配置spring data jpa (查询方法)
		接着上面spring boot系列(四)spring boot 配置spring data jpa 保存修改方法继续做查询的测试: 1 创建UserInfo实体类,代码和https://www.cnb ... 
- spring boot:用redis+lua实现基于ip地址的分布式流量限制(限流/简单计数器算法)(spring boot 2.2.0)
		一,限流有哪些环节? 1,为什么要限流? 目的:通过对并发请求进行限速或者一个时间单位内的的请求进行限速,目的是保护系统可正常提供服务,避免被压力太大无法响应服务. 如果达到限制速率则可以采取预定的处 ... 
随机推荐
- dbms_job和dbmsi_job
			工作中可能遇到这样的情况,在A用户下有一个不用的job,但是dba不知道A用户的密码,怎么删除这个job呢. 相信大部分人都会尝试在sys用户下用dbms_job.remove()命令去删除它,但 ... 
- Block中的引用循环
			原文地址:http://www.cnblogs.com/lujianwenance/p/5910490.html Block在实际的开发中非常的常用,事件回调.传值.封装成代码块调用等等.很多人都对b ... 
- iOS10---新特性以及适配点(转)
			iOS 10 新特性以及适配点 SiriKit 所有第三方应用都可以用Siri,支持音频.视频.消息发送接收.搜索照片.预订行程.管理锻炼等 Proactive Suggestions 系统预先建议 ... 
- 04_XML_02_XML语法
			[XML组成] 一个XMl文件分为以下几部分组成 * 文档说明 * 元素 * 属性 * CDATA区.特殊字符 * 处理指令(processing Instruction) [1.文档说明] * 最简 ... 
- bzoj2653:middle
			思路:首先容易想到二分答案,但如何去check呢,对于一段区间[l,r],把所有小于答案的都赋值为-1,大于等于它的都赋值为1,然后求左端点在[a,b],右端点在[c,d]的最大子串和即可(也就是区间 ... 
- avconv转换视频
			提取指定stream time avconv -i i.mkv -map 0:0 -map 0:1 -map 0:5 -c:v copy -c:a:0 mp3 -c:s copy o.mkv 合并 a ... 
- 九度OJ 1205 N阶楼梯上楼问题 -- 动态规划(递推求解)
			题目地址:http://ac.jobdu.com/problem.php?pid=1205 题目描述: N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式.(要求采用非递归) 输入: 输入包括 ... 
- SQL Join(连接查询)
			1.连接查询分为: inner join(自然连接,自连接) Left join(左连接)/Left outer join(左外连接):效果一样 Right join(右连接)/Right outer ... 
- JavaScript实现url地址自动检测并添加URL链接示例代码
			写一个简单的聊天系统,发出Htpp的Url实现跳转加上a标签,下面是具体的实现,感兴趣的朋友不要错过 背景:写一个简单的聊天系统,发出Htpp的Url实现跳转加上a标签. 实现代码: 复制代码代码如 ... 
- Boost.Build 简明教程
			Boost.Build 简明教程 目录1. 介绍2. 构建过程3. 基本任务4. 项目管理5. 最佳实践6. 规则参考7. 特征参考 介绍 编译器和平台无关编译系统Boost.Build是一个高级编译 ... 
