RedisTemplate中list类型的使用
简述
记录一下操作list类型的主要方法
代码
使用springboot的单元测试进行演示
package com.bpf.RedisTempletDemo.list;import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringRunner;@RunWith(SpringRunner.class)
@SpringBootTest
public class ListDemo {@Autowiredprivate StringRedisTemplate redisTemplate;@Testpublic void demo1() {//从左边插入,即插入到列表头部redisTemplate.opsForList().leftPush("product:list", "iphone xs max");redisTemplate.opsForList().leftPush("product:list", "thinkpad x1 carbon");redisTemplate.opsForList().leftPush("product:list", "mackBook pro13");redisTemplate.opsForList().leftPush("product:list", "HuaWei Mate20 pro"); }@Testpublic void demo2() {//从左边插入一个数组String[] books = new String[] {"java编程思想", "springboot从入门到精通"};redisTemplate.opsForList().leftPushAll("book:list", books);}@Testpublic void demo3() {//从左边插入一个集合List<String> list = new ArrayList<String>();list.add("鬼泣5");list.add("荒野大镖客2");list.add("仙剑奇侠传7");redisTemplate.opsForList().leftPushAll("game:list", list);}@Testpublic void demo4() {//如果存在key对应的列表,则从左插入,不存在不做操作redisTemplate.opsForList().leftPushIfPresent("fruit:list", "1");}@Testpublic void demo5() {//在key对应的列表中从左边开始找,找到第一个pivot,然后把value插到pivot左边,没有不做操作redisTemplate.opsForList().leftPush("product:list", "HuaWei Mate20X", "xiaomi mix");}//也可以从右边插入,把上面的left改为right即可@Testpublic void demo6() {//指定位置重新设置指定值redisTemplate.opsForList().set("product:list", 1, "dell xps13");}@Testpublic void demo7() {//删除和value相同的count个元素,count < 0,从右开始,count > 0,从左开始,count = 0,全部redisTemplate.opsForList().remove("product:list", -1, "HuaWei Mate20 pro");}@Testpublic void demo8() {//获取制定下标对应的值 index,从0开始,有正负两套下标//[a,b,c,d] 下标有[0,1,2,3]和[0,-3,-2,-1];String value = redisTemplate.opsForList().index("product:list", 1);System.out.println(value);}@Testpublic void demo9() {//查询list中指定范围的内容 List<String> list = redisTemplate.opsForList().range("product:list", 0, -1);System.out.println(list);//修剪列表,使其只包含指定范围内的元素redisTemplate.opsForList().trim("product:list", 0, 2);//查询列表长度System.out.println(redisTemplate.opsForList().size("product:list"));}@Testpublic void demo10() {//弹出最左边元素redisTemplate.opsForList().leftPop("product:list");//移出并获取列表的第一个元素, 如果列表没有元素会阻塞列表直到等待超时。redisTemplate.opsForList().leftPop("k1", 10, TimeUnit.SECONDS);//弹出最右边元素redisTemplate.opsForList().rightPop("product:list");//弹出k1最右边元素并放入k2最左边redisTemplate.opsForList().rightPopAndLeftPush("product:list", "game:list");}
}
RedisTemplate中list类型的使用相关推荐
- 全面理解Python中的类型提示(Type Hints)
众所周知,Python 是动态类型语言,运行时不需要指定变量类型.这一点是不会改变的,但是2015年9月创始人 Guido van Rossum 在 Python 3.5 引入了一个类型系统,允许开发 ...
- 《挑战30天C++入门极限》新手入门:C/C++中枚举类型(enum)
新手入门:C/C++中枚举类型(enum) 如果一个变量你需要几种可能存在的值,那么就可以被定义成为枚举类型.之所以叫枚举就是说将变量或者叫对象可能存在的情况也可以说是可能的值一一例举出来. ...
- 【C++】 66_C++ 中的类型识别
类型识别 在面向对象中可能出现下面的情况 基类指针指向子类对象(赋值兼容性) 基类引用成为子类对象的别名(赋值兼容性) 静态类型 - 变量(对象)自身的类型[编译期可确定] 动态类型 - 指针(引用) ...
- c语言中很多中括号由外向里,浅谈C语言中的类型声明
文章目录 [隐藏] 新年第一更!之前群友问了一个 C语言 问题,即int(*(*p)()).int *(*p)()和int *(*p())的区别在哪里.确实,有时C语言的类型声明是很魔性的,看着也很令 ...
- java boolean几个字节_Java中boolean类型到底占用多少个字节?
1.时间:2017-07-03 07:37:06YuanMxy 2.问题描述:今天在复习java基础的时候发现一小问题,Java中boolean类型到底占用多少个字节? 3.问题解答: (1)什么是b ...
- C语言中不同类型的循环(Different types of loops in C)
C语言中有三种类型的循环:for,while,do-while. while循环先判断循环条件. while (condition) {//gets executed after condition ...
- 在Python中检查类型的规范方法是什么?
检查给定对象是否为给定类型的最佳方法是什么? 如何检查对象是否从给定类型继承? 假设我有一个对象o . 如何检查是否为str ? #1楼 前往雨果: 您可能是说list而不是array ,但这指向类型 ...
- 玩转Mybatis中的类型转换器TypeHandler
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 抛开使用场景谈技术都是耍流氓 1. 场景 日常java开发中经常有这种需求,用0或者1这些代 ...
- 解决Asp.net Mvc返回JsonResult中DateTime类型数据格式的问题
问题背景: 在使用asp.net mvc 结合jquery esayui做一个系统,但是在使用使用this.json方法直接返回一个json对象,在列表中显示时发现datetime类型的数据在转为字符 ...
最新文章
- python3.7正则表达式语法_python3正则表达式的几个高级用法
- mysql将权限分为几个层级_MySQL多层级结构-区域表使用树详解
- ActiveRecordException: The model attribute ysgl is not exists.
- boost::graph模块实现bellman-ford算法的测试程序
- C语言中的枚举和联合体
- NodeJS开发c++扩展模块
- 表单oninput和onchange事件区别
- LA 3695 Distant Galaxy
- layUI固定列重复
- www计算机会议影响力
- python opengl3d模型_初试PyOpenGL一 (Python+OpenGL)
- 元素内容必须由格式正确的字符数据或标记组成_字符编码是什么?html5如何设置字符编码?...
- html取消select下拉,jquery取消选择select下拉框
- alooa是华为什么型号_alooa是华为什么型号 华为alooa型号是华为畅享7Plus
- python的tesseract库几个重要的命令
- 动态、静态和伪静态url路径如何分辨
- MySQL慢SQL探究
- C# AD(Active Directory)域信息同步,组织单位、用户等信息查询
- PHP你所不知道的事--empty
- 做网站如何申请网站空间?
热门文章
- edge浏览器怎么玩4399小游戏?
- JLINK V11 固件丢失问题解决方案
- 【opencv】图像加法
- 计算机类和鼠标类是什么关系,四种鼠标类型的优缺点
- sentence_transformers 语义搜索,语义相似度计算,图片内容理解,图片与文字匹配。
- 2017CCPC女生赛 hdu 6030 Happy Necklace
- Python学习笔记④——类、面向对象的三大特征 [封装+继承+多态]
- PrintStream:
- [ IntelliJ IDEA Java开发配置 : 不断完善中]
- 申请iOS的IPD开发者帐号(企业$99)2014版流程(含邓白氏D-U-N-S码流程)