接口:

package com.net.test.redis.base.dao;

import java.util.List;

/**
* @author ***
* @Time:2017年8月10日 上午9:23:07
* @version 1.0
* @description
*/
public interface IRedisDaoList { public void lPush(String key, String value); public void lPushAll(String key, List<String> list); public void set(String key, int offset, String value); public void insert(String key, String value1, String value2); public void getValueByIndex(String key, int offset); public void size(String key); public void remove(String key, long count, String value); public void trim(String key, int start, int end); public void lpop(String key); public void lrange(String key, int start, int end); public void rightPopAndLeftPush(String sourceKey, String destinationKey); }

实现类:

package com.net.test.redis.base.dao.imp;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Repository; import com.net.test.redis.base.dao.IRedisDaoList; /**
* @author ***
* @Time:2017年8月10日 上午10:58:42
* @version 1.0
* @description
*/
@Repository
public class RedisDaoListImp implements IRedisDaoList { @Autowired
private RedisTemplate<String, String> redis; /**
* @description 简单的往数组里面添加元素
* @param key
* @param value
*/
@Override
public void lPush(String key, String value)
{
ListOperations<String, String> oper = redis.opsForList();
int backValue = oper.leftPush(key, value).intValue();
System.out.println("返回值 : " + backValue);
} /**
* @description 批量往数组里面添加元素
* @param key
* @param list
*/
public void lPushAll(String key, List<String> list)
{
ListOperations<String, String> oper = redis.opsForList();
int backValue = oper.leftPushAll(key, list).intValue();
System.out.println("返回值 : " + backValue);
} /**
* @description 对指定下标的数组元素进行替换
* @param key
* @param offset
* @param value
*/
@Override
public void set(String key, int offset, String value)
{
ListOperations<String, String> oper = redis.opsForList();
oper.set(key, offset, value);
} /**
* @description 对指定下标的数组进行插入数据
* @param key
* @param value1 原有值
* @param value2 插入的值
*/
@Override
public void insert(String key, String value1, String value2)
{
ListOperations<String, String> oper = redis.opsForList();
int backValue = oper.leftPush(key, value1, value2).intValue();
System.out.println("返回值 : " + backValue);
} /**
* @description 获取指定下标的数组元素
* @param key
* @param offset
*/
@Override
public void getValueByIndex(String key, int offset)
{
ListOperations<String, String> oper = redis.opsForList();
String value = oper.index(key, offset);
System.out.println(offset + "位置下的值为 : " + value);
} /**
* @description 获取数组长度
* @param key
*/
@Override
public void size(String key)
{
ListOperations<String, String> oper = redis.opsForList();
int length = oper.size(key).intValue();
System.out.println(key + " 数组长度为 : " + length);
} /**
* @description 移除数组匹配到的数据元素
* @param key
* @param count 负数:从右往左 整数:从左往右
* @param value 移除的值
*/
@Override
public void remove(String key, long count, String value)
{
ListOperations<String, String> oper = redis.opsForList();
int backValue = oper.remove(key, count, value).intValue();
System.out.println(key + " 数组长度为 : " + backValue);
} /**
* @description 保留区间内的元素,区间外的全部删除
* @param key
* @param start 区间开始
* @param end 区间结束
*/
@Override
public void trim(String key, int start, int end)
{
ListOperations<String, String> oper = redis.opsForList();
oper.trim(key, start, end);
} /**
* @description 从左到右,删除第一个元素
* @param key
*/
public void lpop(String key)
{
ListOperations<String, String> oper = redis.opsForList();
String value = oper.leftPop(key);
System.err.println("移除的元素 : " + value);
} /**
* @description 查询区间范围内的元素
* @param key
* @param start
* @param end
*/
@Override
public void lrange(String key, int start, int end)
{
ListOperations<String, String> oper = redis.opsForList();
List<String> list = oper.range(key, start, end);
for(String str : list)
{
System.out.println("遍历 : " + str);
}
} /**
* @description 两个list之间移元素
* @param sourceKey 源
* @param destinationKey 目的地
*/
@Override
public void rightPopAndLeftPush(String sourceKey, String destinationKey)
{
ListOperations<String, String> oper = redis.opsForList();
String v = oper.rightPopAndLeftPush(sourceKey, destinationKey);
System.out.println("----------" + v);
} }

Redis之List类型操作的更多相关文章

  1. Redis之Hash类型操作

    接口IRedisDaoHash: package com.net.test.redis.base.dao; import com.net.test.redis.base.entity.UserPsg; ...

  2. python之Redis的字符串类型操作

    redis的数据类型: 字符串型    哈希     列表     集合     有序集合 1.String(字符串类型) set  命令:   设置一个键和值,键存在则只覆盖,返回ok > s ...

  3. Redis之String类型操作

    接口IRedisDaoStr: package com.net.test.redis.base.dao; import java.util.List; import java.util.Map; /* ...

  4. Redis - sort set类型操作

    sort set操作:sort set在set基础上增加了一列用于存储顺序序列设置操作:zadd key:        zadd key sortnum value        指定key增加元素 ...

  5. Redis之set类型操作

    接口: package com.net.test.redis.base.dao; /** * @author*** * @Time:2017年8月10日 下午2:32:12 * @version 1. ...

  6. redis 的使用 ( set集合类型操作)

    set 集合类型 释义:            redis 的 set 是 string 类型的无序集合 set 元素最大可以包含(2的32次方-1)个元素 关于 set 集合类型除了基本的添加删除操 ...

  7. redis 的使用 ( list列表类型操作)

    list 数据类型 列表类型 list 类型是一个双向操作 从链表的头部或者尾部添加删除元素 list 既可以用作栈 也可以用作队列 list 链表的类型应用场合: 获取最新的 10 个用户的信息 s ...

  8. redis 的使用 (基础, key操作, string类型操作)

    使用redis set 类型: 没有重复元素 list 链表类型 有重复累型 sort set 类型 没有重复元素 1.1 存储数据 读取数据 // 数据储存在 内存中 set name laowen ...

  9. 第二百九十七节,python操作redis缓存-List类型,可以理解为列表

    python操作redis缓存-List类型,可以理解为列表,是可以有重复元素的列表 List操作,redis中的List在在内存中按照一个name对应一个List来存储.如图: lpush(name ...

随机推荐

  1. 牛客网Java刷题知识点之插入排序(直接插入排序和希尔排序)、选择排序(直接选择排序和堆排序)、冒泡排序、快速排序、归并排序和基数排序(博主推荐)

    不多说,直接上干货! 插入排序包括直接插入排序.希尔排序. 1.直接插入排序: 如何写成代码: 首先设定插入次数,即循环次数,for(int i=1;i<length;i++),1个数的那次不用 ...

  2. Maven的学习资料收集--(五)使用Maven构建Struts2项目

    在前两篇博客中,使用Maven构建了Web项目,在这篇博客中写一下,怎样构建一个简单的Struts2项目. 在准备过程中发现,要使用好Maven,个人觉得要好好利用这两个网站: http://mvnr ...

  3. Aspose.cell生成表格

     public void ExportQueryPrj(HttpContext context)         {              //接受前端传递参数和数据             st ...

  4. java向上取整向下取整

    向上取整用Math.ceil(double a) 向下取整用Math.floor(double a) 举例: public static void main(String[] args) throws ...

  5. 使用Pycharm开发python下django框架项目生成的文件解释

    目录MyDjangoProject下表示工程的全局配置,分别为setttings.py.urls.py和wsgi.py,1.其中setttings.py包括了系统的数据库配置.应用配置和其他配置,2. ...

  6. DataBinding初探 数据绑定的用法 ,import 集合类型,绑定的表达式,访问集合类型2

    数据绑定的用法 import语法   <data> <import type="android.view.view"/> </data>   如 ...

  7. vue中background-image图片路径问题

    按照以往在css文件中写background:url('图片路径'),完成后加载竟然显示出错,起初以为路径不对,检查了几遍,仍然没有问题.最后百度找答案,发现不少同行都遇到过这种问题,遂记录下自己所采 ...

  8. JavaWeb前端笔记

    day06 回顾: bootstrap: css框架,html/css/js集于一身,ie 6/7/8兼容有问题 开发响应式页面,使用于不同的上网设备 使用步骤: 1.导入bootstrap.css ...

  9. 并发访问sqlite数据库出现databse is locked的错误的一个解决办法

    作者:朱金灿 来源:http://blog.csdn.net/clever101 在并发访问sqlite数据库会出现这样一个错误:databseis locked,这是sqlite数据库对并发支持不太 ...

  10. Unicode字符集

    Unicode字符集的出现是为了弥补ASCII码只能表示128个字符的限制.在实际应用中,如若我们想显示汉字或日文等等,显然使用ASCII是不可能的.Unicode占用了两个字节,即16位,能表示的字 ...