oyhk 学习笔记
最近算是对redis研究了一下,为什么会用到redis,由于公司这次要做一个队列的缓存系统,基于这个项目要求,我选择了redis
这次具体对redis list的数据结构进行了简单的操作...
这次依然使用spring data redis去操作redis..个人喜欢啊,我真心喜欢spring,我选择用它...
至于一些简单的操作,我上次写了一篇文章:spring 结合 Redis 例子,简单入门例子,至于怎么安装redis这些,大家自己去查查怎么安装吧.安装方法也非常简单官网上也有..现在对于想研究redis更深入的朋友们,我推荐大家看这本书http://www.redisbook.com/en/latest/..我自己认为真的非常不错...
这次的代码是基于原来的基础上,去完善
下面是对于RedisService的简单测试用例
package com.xiangrikui.iaskservice.controller; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.xiangrikui.iaskservice.common.redis.RedisService; /** * 简单的测试用例 * * @author oyhk * */ public class TestRedis { ApplicationContext app = new ClassPathXmlApplicationContext(new String[] { "classpath:spring-redis.xml" }); // 这里已经配置好,属于一个redis的服务接口 RedisService redisService = (RedisService) app.getBean("redisService"); /** * 往list1中添加三条记录 */ @Test public void lpush() { long result = redisService.lpush("list1", new String[] { "list1.1", "list1.2", "list1.3" }); System.out.println(result); // 这里是junit的断言,简单的测试用例,如果不抛出异常,证明添加数据到列表成功 } /** * 查看从0开始到10的位置的数据 */ @Test public void lrange() { Listresults = redisService.lrange("list2", 0, 10); System.out.println(results); Assert.assertNotNull(results); } /** * 从左边的开始元素出队列 */ @Test public void lpop() { String result = redisService.lpop("list1"); System.out.println(result); Assert.assertNotNull(result); } /** * 从右边的开始元素出队列 */ @Test public void rpop() { String result = redisService.rpop("list1"); System.out.println(result); Assert.assertNotNull(result); } /** * 指定的列表中,指定的位置元素修改值 */ @Test public void lset() { String result = redisService.lset("list1", 1, "list1.3"); System.out.println(result); Assert.assertEquals("OK", result); } /** * 删除指定列表中1个值为list1.3的元素 */ @Test public void lrem() { long result = redisService.lrem("list1", 1, "list1.3"); System.out.println(result); Assert.assertEquals(1L, result); } /** * 从指定的列表右边出队,添加到目的列表中 -->>注意:这个方法必须源list有数据,那么目的list你可以随便起个名 * */ @Test public void rpoppush() { String result = redisService.rpoppush("list1", "list2"); System.out.println(result); Assert.assertNotNull(result); } }
服务接口类RedisService
package com.xiangrikui.iaskservice.common.redis; import java.util.List; import java.util.Set; import org.springframework.beans.factory.annotation.Autowired; 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 { /** * 从指定的列表右边出队,添加到目的列表中 * * @param srckey * 源列表 * @param dstkey * 目的列表 * @return */ public String rpoppush(String srckey, String dstkey) { return this.getJedis().rpoplpush(srckey, dstkey); } /** * 获取指定列表的范围数据 * * @param key * 列表名 * @param start * 开始位置 * @param end * 结束位置 * @return */ public Listlrange(String key, int start, int end) { return this.getJedis().lrange(key, start, end); } /** * 从队列的左边取出一条数据 * * @param key * 列表名 * @return */ public String lpop(String key) { return this.getJedis().lpop(key); } /** * 从队列的右边取出一条数据 * * @param key * 列表名 * @return */ public String rpop(String key) { return this.getJedis().rpop(key); } /** * 把一个值添加到对应列表中 * * @param key * 列表名 * @param index * 添加的位置 * @param value * 数据 * @return */ public String lset(String key, long index, String value) { return this.getJedis().lset(key, index, value); } /** * 把所有数据添加到一个列表中 * * @param key * 列表名 * @param values * 数据 * @return */ public long lpush(String key, String... values) { return this.getJedis().lpush(key, values); } /** * 把所有数据添加到一个列表中,并且设置列表的存活时间 * * @param key * 列表名 * @param values * 数据 * @param liveTime * 存活时间--单位(秒) * @return */ public long lpush(String key, String[] values, int liveTime) { long result = this.getJedis().lpush(key, values); this.getJedis().expire(key, liveTime); return result; } /** * 删除列表中对应值的元素 * * @param key * 列表名 * @param count * 删除多少个相同的元素 * @param value * 数据 * @return */ public long lrem(String key, long count, String value) { return this.getJedis().lrem(key, count, value); } /** * 返回指定列表范围内的元素 * * @param key * 列表名 * @param start * 开始位置 * @param end * 结束位置 * @return */ public List lrange(String key, long start, long end) { return this.getJedis().lrange(key, start, end); } /** * 通过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 Setkeys(String pattern) { return this.getJedis().keys(pattern); } /** * 检查key是否已经存在 * * @param key * @return 存在返回true */ 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(); } /** * 通过多个key一次返回多个值 * * @param keys */ public Listmget(String... keys) { return this.getJedis().mget(keys); } /** * 一次添加多个key value到redis中 * * @param keysvalues */ public void mset(String... keysvalues) { this.getJedis().mset(keysvalues); } /** * 获取一个jedis 客户端 * * @return */ private Jedis getJedis() { if (jedis == null) { return jedisConnectionFactory.getShardInfo().createResource(); } return jedis; } private RedisService() { } // 操作redis客户端 private static Jedis jedis; @Autowired private JedisConnectionFactory jedisConnectionFactory; }
把这个类复盖上篇文章的类,就可以直接使用...
大家多多交流
本文章来自:http://blog.mkfree.com/posts/5147c478975a24f6a830e53d
http://blog.mkfree.com/posts/5147c478975a24f6a830e53d
相关推荐
10. **Spring整合**:Spring Data Redis与Spring框架深度集成,支持Spring Boot自动配置,可以快速搭建Redis相关的应用。 使用Spring Data Redis API,开发者可以极大地简化Redis的编程模型,通过面向对象的方式...
这个压缩包文件“SpringDataRedis对Redis的数据类型的常用操作API的使用代码举例.zip”显然包含了关于如何利用Spring Data Redis进行Redis数据类型操作的示例代码。下面我们将深入探讨Spring Data Redis对Redis主要...
- RedisTemplate是SpringDataRedis的核心组件,它提供了一系列的方法来执行Redis命令。开发者可以直接使用它来执行自定义的Redis命令,比如设置和获取键值,执行事务,或者操作集合类型如Set、List、Hash和Sorted ...
Spring Data Redis能很好地与其他Spring框架集成,如Spring Cache可以利用Redis作为缓存后端,Spring Session可以使用Redis存储用户的会话信息,Spring Cloud Data Flow可以利用Redis作为任务调度的存储。...
本文将深入探讨Spring Data Redis的使用方法,并通过实例项目“hotel-redis-app”来具体展示其在实际开发中的应用。 一、Spring Data Redis简介 Spring Data Redis是Spring项目下的一个模块,它提供了一套完整的...
Spring Data Redis是Spring Framework的一个模块,它提供了一个高级抽象层来简化与Redis数据库的交互,使得开发者可以更加方便地使用Redis的数据结构,如String、Hash、List、Set和Sorted Set。 首先,我们需要在...
Spring Data Redis则是Spring框架提供的一套用于操作Redis的高级抽象库,它使得与Redis的数据交互变得更加简单和直观。现在我们来深入探讨一下这三个组件以及它们之间的关系。 首先,Redis是一个开源的、基于键值对...
3. **配置**:在Spring Boot项目中,只需添加相关依赖并配置Redis服务器的连接信息,Spring Data Redis就能自动初始化。在application.properties或yaml文件中设置host、port、password等参数即可。 三、核心功能...
集成完成后,Spring Data Redis提供了一套完整的API,使得在代码中操作Redis变得简单,如`.opsForValue()`、`opsForHash()`等方法,方便进行键值操作。 在实际项目中,根据业务需求选择合适的Redis部署模式,并结合...
Spring Redis 是一个集成Redis数据库与Spring框架的模块,它提供了对Redis数据存储的全面支持,使得在Java应用中使用Redis变得更加便捷。这个"Maven整合工程"意味着该项目使用Maven作为构建工具,通过管理依赖关系来...
在IT行业中,Spring框架是Java应用开发的基石,它提供...同时,Spring Data Redis提供的高级功能,如事务支持、Key的过期策略、lua脚本执行等,都使得开发更加便捷。在实际项目中,可以根据需求进一步定制和优化配置。
1. **Spring Data Redis**: Spring Data Redis是Spring框架的一个模块,它为Redis提供了高级抽象和便捷的访问方式。通过使用Spring Data Redis,开发者可以轻松地操作Redis的数据结构,如字符串、哈希、列表、集合和...
接下来,你可以创建一个Service,使用Spring Data Redis提供的`ReactiveRedisTemplate`或`RedisTemplate`进行数据操作。以下是一个简单的例子,展示了如何存取字符串类型的键值对: ```java @Service public class ...
首先,我们需要在项目中引入Spring对Redis支持的相关依赖。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml <groupId>org.springframework.boot <artifactId>spring-boot-starter-data-redis ``` 接...
- 本章的目标之一是使用SpringDataRedis来操作不同数据类型的缓存,包括字符串、Set、List和Hash。 - Redis作为缓存系统,可以提高广告数据的读取速度,减少数据库的压力,尤其是在高并发场景下。 6. **系统架构*...
Spring Data Redis是Spring框架提供的一套与Redis集成的库,它简化了在Java应用中使用Redis的操作。这个"Redis+spring-data-redis jar包"整合包就是为了解决将Redis与Spring框架无缝结合的需求。 在Spring框架中...
2、使用方法如下: public List<V> pipelineGet(Set<K> keys){ return rt.opsForPipeline().get(keys); } public void pipelineSet(Map,V> valueMap){ redisTemplate.opsForPipeline().set(valueMap); } ...
在Spring Data Redis中,你可以使用`HashOperations`的`multiGet`方法来实现。例如,获取`Person`对象的`name`和`age`: ```java List<Object> values = hashOps.multiGet("person", Arrays.asList("name", "age")...
Spring Data Redis是Spring框架的一部分,专门用于简化与Redis数据库的交互。Redis是一个高效、高性能的键值存储系统,常被用作数据库、缓存和消息中间件。它支持丰富的数据结构,包括字符串、散列、列表、集合、...
在 Spring 项目中,可以使用Spring Data Redis来简化 Redis 操作。 Spring Data Redis中提供了一个高度封装的类:**RedisTemplate**,针对 Jedis 客户端中大量api进行了归类封装,将同一类型操作封装为operation接口...