spring data redis 高级篇list的相关用法
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
相关推荐
王道革 2020-11-25
wangdonghello 2020-11-03
Langeldep 2020-11-16
chenhualong0 2020-11-16
聚合室 2020-11-16
koushr 2020-11-12
MRFENGG 2020-11-11
guoyanga 2020-11-10
fackyou00 2020-11-10
Orangesss 2020-11-03
dongCSDN 2020-10-31
rainandtear 2020-10-30
Quietboy 2020-10-30
liuyulong 2020-10-29
fansili 2020-10-29
温攀峰 2020-10-23
jackbon 2020-10-19
kaixinfelix 2020-10-04