设为首页 收藏本站
查看: 1270|回复: 0

[经验分享] spring data redis 高级篇list的相关用法

[复制链接]

尚未签到

发表于 2016-12-20 11:01:32 | 显示全部楼层 |阅读模式
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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-316917-1-1.html 上篇帖子: Redis入门很简单之五【Jedis和Spring的整合】 下篇帖子: 游戏内存数据库MongoDB vs Redis vs Tokyo Tyrant
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表