【快学springboot】14.操作redis之list
前言
之前讲解了springboot(StringRedisTemplate)操作redis的string数据结构,这篇文章将会讲解list数据结构
list数据结构具有的操作
下图列出了redis list数据结构所具有的方法
StringRedisTemplate提供的方法
RedisTemplate提供的操作redis的方法列表如下:
下面,我们挑一些常用的方法作为实例讲解,其它方法,可以参考API说明即可。
range
现在redis中有一个list,其key为:happyjava:list,并且有三个值,如下:
range(K key, long start, long end)方法,是获取list指定范围的内容
start下标从零开始。如下,获取第二个到第三个的元素:
@Test
public void testList() {
List<String> list = redisTemplate.opsForList().range("happyjava:list", 1, 2);
assert list != null;
list.forEach(System.out::println);
}
输出结果:
blog.happyjava.cn
www.happyjava.cn
size(K key)
获得list的大小
@Test
public void testSize() {
Long size = redisTemplate.opsForList().size("happyjava:list");
System.out.println(size);
}
输出结果:
leftPush(K key, V value)
该方法标识从list的左边(上边,或者说list的头部)压入数据。如果不存在该key,则会创建该key。
@Test
public void testLeftPush() {
redisTemplate.opsForList().leftPush("happyjava:list", "new happyjava");
}
执行后,去查看redis中的数据:
leftPushAll
有两个重载的方法,分别为不定参数:leftPushAll(K key, V... values); ,
集合参数:leftPushAll(K key, Collection values)
不定参数:
@Test
public void testLeftPushAll() {
redisTemplate.opsForList().leftPushAll("happyjava:list","apple","happy");
}
执行之后查看数据:
集合参数:
@Test
public void testLeftPushAll() {
// redisTemplate.opsForList().leftPushAll("happyjava:list","apple","happy");
redisTemplate.opsForList().leftPushAll("happyjava:list", Arrays.asList("new happy1", "new happy2"));
}
执行之后查看数据:
rightPush(K key, V value)
从list的尾部压入数据
@Test
public void testRightPush() {
redisTemplate.opsForList().rightPush("happyjava:list","java");
}
执行之后查看redis数据:
rightPushAll
该方法与leftPushAll类是,一样有两个重载的方法,如下:
这里就不做过多的介绍了。
set(K key, long index, V value)方法
可以直接设置list中某个下标的值,index从0开始
@Test
public void testSet() {
redisTemplate.opsForList().set("happyjava:list",1,"test set");
}
执行之后查看redis
remove(K key, long count, Object value)方法
删除某个值,删除count个,从头开始删除
现在redis中的数据如下:
执行一下代码:
@Test
public void testRemove() {
redisTemplate.opsForList().remove("happyjava:list",2,"happy");
}
执行之后查看数据:
index(K key, long index)方法
返回index(从0开始)下标的元素。现在redis数据如下:
@Test
public void testIndex() {
String value = redisTemplate.opsForList().index("happyjava:list", 1);
System.out.println(value);
}
执行结果如下:
leftPop
有两个重载的方法:
V leftPop(K key);
V leftPop(K key, long timeout, TimeUnit unit);
此方法会弹出list头部的元素(弹出后就在list中删除),跟栈一样,重载的那个方法,如果list不存在数据,则会阻塞住,等有数据了就会返回(最长阻塞时间就是设置的超时时间)。该方法对应到redis的操作是BLPOP(blocking left pop)
rightPop
与leftPop类似,只是从list尾部弹出数据
总结
本文讲解了springboot操作redis的list数据结构,大部分方法都已经做了讲解和演示。list也是redis中非常常用的数据结构,以后还会继续讲解redis其它的数据结构。
【快学springboot】14.操作redis之list的更多相关文章
- 【快学springboot】13.操作redis之String数据结构
前言 在之前的文章中,讲解了使用redis解决集群环境session共享的问题[快学springboot]11.整合redis实现session共享,这里已经引入了redis相关的依赖,并且通过spr ...
- 【快学SpringBoot】Spring Cache+Redis实现高可用缓存解决方案
前言 之前已经写过一篇文章介绍SpringBoot整合Spring Cache,SpringBoot默认使用的是ConcurrentMapCacheManager,在实际项目中,我们需要一个高可用的. ...
- 【快学springboot】8.JPA乐观锁OptimisticLocking
介绍 当涉及到企业应用程序时,正确地管理对数据库的并发访问是至关重要的.为此,我们可以使用Java Persistence API提供的乐观锁定机制.它导致在同一时间对同一数据进行多次更新不会相互干扰 ...
- 【快学springboot】12.实现拦截器
前言 之前在[快学springboot]6.WebMvcConfigurer配置静态资源和解决跨域里有用到WebMvcConfigurer接口来实现静态资源的映射和解决跨域请求,并且在文末还说了Web ...
- 【快学springboot】4.接口参数校验
前言 在开发接口的时候,参数校验是必不可少的.参数的类型,长度等规则,在开发初期都应该由产品经理或者技术负责人等来约定.如果不对入参做校验,很有可能会因为一些不合法的参数而导致系统出现异常. 上一篇文 ...
- 【快学springboot】11.整合redis实现session共享
前言 这里都是基于前面的项目基础上的.springboot整合redis非常的方便,这也是springboot的宗旨,简化配置.这篇文章就教大家如何使用springboot整合redis来实现sess ...
- 【快学SpringBoot】快速上手好用方便的Spring Cache缓存框架
前言 缓存,在开发中是非常常用的.在高并发系统中,如果没有缓存,纯靠数据库来扛,那么数据库压力会非常大,搞不好还会出现宕机的情况.本篇文章,将会带大家学习Spring Cache缓存框架. 原创声明 ...
- springboot 如何操作redis
1.首先应该引入 依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactI ...
- springboot jpa操作redis
SpringBoot使用Redis缓存 (1)pom.xml引入jar包,如下: <dependency> <groupId>org.springframework.boo ...
随机推荐
- CDH搭建大数据集群(5.10.0)
纠结了好久,还是花钱了3个4核8G的阿里云主机,且行且珍惜,想必手动搭建过Hadoop集群的完全分布式.HBase的完全分布式的你(当然包括我,哈哈),一定会抱怨如此多的配置,而此时CDH正是解决我们 ...
- 腾讯云Windows Server下nodejs websocket ssl配置
1.从腾讯云申请SSL证书,下载解压,得到如下文件: 2.nodejs代码: // wss.js const fs = require('fs'); // 一些配置信息 const cfg = { p ...
- 点击<a href="#">阻止自动跳转到顶部方法
最近开发web项目,遇到一个问题 ,就是在<a>标签加href="#",并增加onclick事件,页面会自动在点击该标签绑定的元素时,自动跳转到页面顶部,在网上寻求了一 ...
- 理解CART决策树
CART算法 原理 CART全称为Classification and Regression Tree. 回归树 相比ID3,CART遍历所有的特征和特征值,然后使用二元切分法划分数据子集,也就是每个 ...
- 2019牛客暑期多校训练营(第七场)A String (字符串的最小表示)
思路 这题思路如果是递归的话,应该是比较正确的.但是实际上只用切割两次就可以了. 先把原串从后向前切割一次,再把每一部分切割一次. 切两次的思路实际上是有漏洞的. 递归的思路,终点是,如果串长为1,或 ...
- windows和ubuntu安装以太坊客户端Mist
Mist钱包下载地址:https://github.com/ethereum/mist/releases Mist = Ethereum Wallet + Web3 浏览器 Dapp:bancor 史 ...
- UDLD(Unidirectional Link Detection)
1.UDLD(单向链路检测协议)工作原理 为了在生成转发环路之前检测到单向链路,Cisco 设计并实施了 UDLD 协议.UDLD 是与第 1 层 (L1) 机制一起工作以确定链路物 ...
- 用js实现复制内容到操作系统粘贴板(兼容IE、谷歌、火狐等浏览器)
一.如果只考虑IE浏览器,可以直接用原声js实现 if(window.clipboardData){ //清空操作系统粘贴板 window.clipboardData.clearData(); //将 ...
- IDEA中常用优化设置
1.设置鼠标悬浮提示 Editor->General 这里要勾选下,后面设置的是延迟时间 默认半秒:设置后,我们鼠标移动到类上看看: 2.显示方法分隔符 Editor->General - ...
- c语言中的qsort用法
1.首先了解 int cmp(const void* a, const void* b) 表示声明cmp函数,其返回值为int型,参数为两个不可修改(const)的void型指针 2.函数原型 函数声 ...